
Ich erstelle ein Makefile, das ich jeden Tag um 02:30 Uhr regelmäßig mit Crontab ausführe.
crontab -e; 30 2 * * * /bin/thePseudocode
Python-ähnlicher Pseudocode
directories = ["Cardiology", "Rheumatology", "Surgery"]
for directory in directories
files = directory.files(); % not sure if such a parameter exists
files = files.match(.*tex); % trying to get only tex files; not sure if match exists
summaryFile = "";
for texFile in files
summaryFile.add( ...
textFile.match( (?s)\\begin{question}.*?\\end{question} ) ...
)
% Solution based on this thread
% Problem in writing this Regex in Perl http://unix.stackexchange.com/questions/159307/to-match-only-innermost-environment-by-regex
end
end
save this `summaryFile` as /Users/Masi/Dropbox/QuestionSummary.tex
wobei files
die Liste aller Dateien im Verzeichnis ist und summaryFile
die Datei ist, die alle Fragen in allen Tex-Dateien auflistet. Diese Dateien möchte ich schließlich kompilieren, indem ichpdflatexund jeden Morgen mit dem PDF-Reader lesen.
Beispieldatei, die sich im Ordner befindetRheumatologie
\section{Takayasu arteritis}
\begin{question}
{You get a patient.
What do you notice first in this patient?}
Absence of peripheral pulse.
\end{question}
\begin{question}
{What was the first Takayasu case?}
Young woman in Asia with red vessels in the eye.
So special eye diagnosis done.
Affects eye.
\end{question}
Fever of unknown origin can be used when you do not know what is causing the disease.
% Show cases in MedScape and ask class.
Aneurysms.
\subsection{Treatment}
\begin{question}
{What you should always include in Takayasu treatment?
What are the symptoms?}
Blood pressure.
Aneurysms which will burst without treatment.
So blood pressure decreasing drugs like beta blockers along in combination with other drugs.
\end{question}
\begin{question}
{When is the checkup of the Takayasu arteritis?}
Only once per year.
You could expect every month like normally in this kind of diseases.
But only once per year.
\end{question}
wo die Ausgabe für alle Dateien im Ordner sein soll
\section{Rheumatology}
\begin{question}
{You get a patient.
What do you notice first in this patient?}
Absence of peripheral pulse.
\end{question}
\begin{question}
{What was the first Takayasu case?}
Young woman in Asia with red vessels in the eye.
So special eye diagnosis done.
Affects eye.
\end{question}
\begin{question}
{What you should always include in Takayasu treatment?
What are the symptoms?}
Blood pressure.
Aneurysms which will burst without treatment.
So blood pressure decreasing drugs like beta blockers along in combination with other drugs.
\end{question}
\begin{question}
{When is the checkup of the Takayasu arteritis?}
Only once per year.
You could expect every month like normally in this kind of diseases.
But only once per year.
\end{question}
Makefile
all:
pdflatex /Users/Masi/Dropbox/QuestionsSummary.tex /Users/Masi/Dropbox/QuestionsSummary.pdf
pdflatex /Users/Masi/Dropbox/QuestionsSummary.tex /Users/Masi/Dropbox/QuestionsSummary.pdf % to compile a few times to be successful
pdflatex
% I am not sure if I should have some error management, since often the pdflatex crashes
% So pdflatex is not probably the right tool to go
Wie können Sie einen solchen Pseudocode in den von Ihnen bevorzugten Tools erstellen? Ich mag Python, würde aber nicht alles damit machen.
Antwort1
Wenn ich das richtig verstehe, suchen Sie so etwas (in bash
):
#!/usr/bin/env bash
## avoid errors if a directory has no *tex files
shopt -s nullglob
directories=("Cardiology" "Rheumatology" "Surgery");
## Change this to set whichever options you want.
printf "%s\n%s\n" "\documentclass{YOURCLASS}" "\begin{document}"
for directory in ${directories[@]}
do
## Reset the counter, avoid empty sections.
c=0;
for file in "$directory"/*tex
do
let c++
[ "$c" -eq 1 ] && printf "\n%s\n" "\section{$directory}"
## Extract the wanted lines
perl -lne '$a=1 && print "" if /\\begin{question}/;
print if $a==1;
$a=0 if /\\end{question}/;' "$file"
echo ""
done
done
echo "\end{document}"
Wenn Sie das Skript aus dem Verzeichnis ausführen, das Cardiology usw. enthält, sollte es eine Ausgabe wie diese liefern: