Schreiben Sie im Rahmen Ihrer Abschlussforschung ein Rakefile im Runbook-Format, um das im Labor verwendete PDF zu erstellen.
Ein Programm, das die Vorgehensweise verdeutlicht und Schritt für Schritt fortschreitet. Sie können die Automatisierung Schritt für Schritt als eines von Rubys DSL schreiben.
Für einen Anfänger wie mich, der es noch nicht gewohnt ist, CUI zu verwenden, wird die Ausführung von Rakefile ohne Erlaubnis fortgesetzt und Sie werden nicht wissen, was Sie tun. Durch die Verwendung des Runbooks wird die Vorgehensweise klar und Sie können verstehen, was Sie tun. Mit Rakefile ist es auch schwierig, wenn Sie nicht von Anfang an in das Programm schreiben, um anzuhalten, selbst wenn Sie glauben, dass während der Ausführung etwas nicht stimmt. Mit Runbook können Sie jedoch entscheiden, ob Sie den Benutzer weiterhin jedes Mal in einem detaillierten Verfahren um Eingabe bitten möchten. Sie können.
Das Basic ist ein Programm, das aus einem Titel, einem Abschnitt und einem Schritt besteht, und das Programm wird im Schritt geschrieben. Es gibt eine Vorlage zum Starten des Befehls runbook. Installieren Sie sie also und überprüfen Sie die Grundlagen des Runbooks.
> runbook generate runbook my_first_runbook
Dadurch wird my_first_runbook.rb im Verzeichnis generiert.
my_first_runbook.rb
require "runbook"
runbook = Runbook.book "My First Runbook" do
description <<-DESC
This is a runbook that...
DESC
section "SECTION" do
step "STEP" do
# Add statements here
end
end
end
if __FILE__ == $0
Runbook::Runner.new(runbook).run
else
runbook
end
Wenn Sie es ausführen, werden Sie gefragt, ob Sie fortfahren möchten, wie in der folgenden Abbildung gezeigt.
> runbook exec my_first_runbook.rb
Executing My First Runbook...
Description:
This is a runbook that...
Section 1: SECTION
Step 1.1: STEP
Continue? (enter "h" for help) [c,s,j,P,e,h]
> runbook exec my_first_runbook.rb
Executing My First Runbook...
Description:
This is a runbook that...
Section 1: SECTION
Step 1.1: STEP
Continue? (enter "h" for help) [c,s,j,P,e,h] c
>> Continue to execute this step
> runbook exec my_first_runbook.rb
Executing My First Runbook...
Description:
This is a runbook that...
Section 1: SECTION
Step 1.1: STEP
Continue? Continue to execute this step
Die Struktur des im Labor verwendeten Rakefile ist hauptsächlich
Da es vier gibt, schreiben Sie ein Runbook mit diesen als Schritte.
make_pdf.rb
Runbook.book "Make PDF" do
description <<-DESC
This is a make PDF from org
DESC
section "Make pdf" do
step "Load org file"
step "Make tex file"
step "Load and Convert tex file"
step "Make pdf"
end
end
Ausführungsergebnis
> runbook exec make_pdf.rb
Executing Make PDF...
Description:
This is a make PDF from org
Section 1: Make pdf
Step 1.1: Load org file
Continue? Continue to execute this step
Step 1.2: Make tex file
Continue? Continue to execute this step
Step 1.3: Load and Convert tex file
Continue? Continue to execute this step
Step 1.4: Make pdf
Nachdem wir eine Vorlage haben, werden wir den Inhalt hinzufügen.
Ich dachte, es wäre einfacher aufzuhören, wenn Sie den Abschnitt in einen Abschnitt unterteilen, der Latex erstellt, und einen Abschnitt, der in PDF konvertiert wird. Tun Sie dies also und fügen Sie den Inhalt hinzu.
make_pdf.rb
require "./convert"
require "colorize"
Runbook.book "Make PDF" do
description <<-DESC
This is a make PDF from org
DESC
section "Make latex" do
$t_file = "report"
step "Load org file" do
note "Load org file"
ruby_command do
$file = Dir.glob("*.org")[0].match(/(.*).org/)[1]
puts "your org file is " + $file.red + "."
end
end
step "Make tex file" do
note "Make tex file"
ruby_command do
system "emacs #{$file}.org --batch -f org-latex-export-to-latex --kill"
end
end
step "Load and Convert tex file" do
ruby_command do
$lines = File.readlines("#{$file}.tex")
$lines = convert_thesis($lines)
File.open("#{$t_file}.tex", "w") do |f|
$lines.each { |line| f.print line }
end
end
end
section "Make PDF" do
step "Make pdf" do
note "Make pdf"
ruby_command do
commands = ["platex #{$t_file}.tex",
"bibtex #{$t_file}.tex",
"platex #{$t_file}.tex",
"dvipdfmx #{$t_file}.dvi"]
commands.each { |com| system com }
end
end
end
end
Jetzt haben Sie ein Runbook-Programm, das die Organisationsdatei im Verzeichnis mit "Organisationsdatei laden" liest, in Latex konvertiert und eine PDF-Datei erstellt.
--convert.rb
ist ein Programm zur Verwendung der Funktion "convert_thesis", die in "Load and Convert tex file" verwendet wird. Der Inhalt besteht darin, aus org erstellten Latex in eine Vorlage für die Berichterstellung umzuwandeln.
convert.rb
def convert_thesis(lines)
head = <<'EOS'
\documentclass[a4j,twocolumn]{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{url}
\setlength{\textheight}{275mm}
\headheight 5mm
\topmargin -30mm
\textwidth 185mm
\oddsidemargin -15mm
\evensidemargin -15mm
\pagestyle{empty}
\begin{document}
\title{}
\author{Abteilung\hspace{5mm}Schülernummer\hspace{5mm} your name}
\date{}
\maketitle
EOS
head2 = <<'EOS'
{\small\setlength\baselineskip{15pt} %Referenzen sind Zeilenabstände mit kleineren Buchstaben
\begin{thebibliography}{9}
\bibitem{}
\end{thebibliography}
}
\end{document}
EOS
new_line = [head]
lines[31..-1].each do |line|
new_line << line
end
new_line.each do |line|
line.gsub!('\end{document}', head2)
line.gsub!('\tableofcontents', "")
end
return new_line
end
Ermöglicht die Auswahl von org in "Org-Datei laden".
make_pdf.rb
require "./convert"
require "colorize"
Runbook.book "Make PDF" do
...
$t_file = "report"
step "Load org file" do
note "Load org file"
ruby_command do
str = Dir.glob("*.org")
str.each do |name|
puts "your org file is " + name.red + " ? (y or n)"
res = $stdin.gets.chomp
if res == "y"
$file = name.match(/(.*).org/)[1]
break
elsif res == "n"
if name == str[str.size - 1]
puts "This directory not have the objective file".red
exit
end
end
end
end
end
...
end
Der Name der Organisationsdatei wird als Nachricht auf dem Terminal angezeigt. Sie können ihn auswählen, indem Sie "y" oder "n" eingeben. Wenn alle "n" sind, wird es gewaltsam beendet.
Als nächstes habe ich ganz am Ende "Bericht verschieben" erstellt und den erstellten Bericht in ein Verzeichnis namens "Bericht" verschoben.
make_pdf.rb
require "./convert"
require "colorize"
Runbook.book "Make PDF" do
...
section "Make PDF" do
step "Make pdf" do
...
step "Move report" do
note "Move report"
ruby_command do
commands = ["mkdir report",
"mv -f #{$t_file}.* ./report",
"open ./report/#{$t_file}.pdf"]
commands.each { |com| system com }
end
end
end
end
Es gab eine Beschreibung im Handbuch in Github of Gem Runbook.
> runbook exec --auto my_runbook.rb
Wenn Sie es damit ausführen, können Sie es ohne Eingabe bis zum Ende ausführen.
Mit gem installieren. Gem install runbook
Wenn Sie "runbook exec runbook.rb" ausführen, wird runbook.rb ausgeführt. --runbook.rb ist dein Programm.
Recommended Posts