Ich habe einen Satz Mathematik-Fragebögen, die in TeX geschrieben werden sollen, und zwar nach Themen wie beispielsweise abstrakte Algebra, reelle Analysis, Differentialgleichungen usw. Gruppiert. Kann Folgendes erreicht werden?
Geben Sie dort die Fragen aus den Fragebögen in der Reihenfolge der Fragen ein und fügen Sie jeder Frage entsprechend ihrem Thema eine Beschriftung hinzu. In der Ausgabe werden die Fragen aus allen Fragebögen zum gleichen Thema zusammen angeordnet.
Antwort1
Es gibt vielleicht eine bessere Möglichkeit, damit umzugehen, aber ich habe etwas Ähnliches mit den Übungslösungen in meinem LaTeX-Buch gemacht, indem ich auf den im verbatim
Paket verfügbaren Erweiterungen aufbaute, die es mir ermöglichten, die Fragen und Antworten zusammenzustellen, obwohl die Antworten in einem separaten Abschnitt am Ende jedes Kapitels abgedruckt würden.
Dies ist der Code, den ich verwendet habe (das war alles in der .cls
Datei, also dient es @
als Brief). Ich werde die Auflistung kommentieren, um die Dinge klarer zu machen
Erstellen Sie zunächst einen neuen(Sie benötigen einen für jede Kategorie, aber bedenken Sie, dass nur 16 Schreibströme verfügbar sind und LaTeX einige davon selbst verwendet).
\newwrite\ans@out
\immediate\openout\ans@out=\jobname.ans
Definieren Sie die AntwortumgebungDies basiert auf der verbatimwrite
Beispielumgebung aus dem verbatim
PaketDokumentation. Die mit beginnenden Zeilen \immediate\write
werden verwendet, um über den Inhalt der Eingabedatei hinaus weiteren Text hinzuzufügen.
\def\answer{%
\@bsphack
\let\do\@makeother\dospecials
\immediate\write\ans@out{\string\preans}
\immediate\write\ans@out{\string\par\string\noindent
{\string\sc\space Exercise\string~\thequestion.}\quad}%
\immediate\write\ans@out{\string\vadjust{\string\nobreak}\relax}
\catcode`\^^M\active
\def\verbatim@processline{%
\immediate\write\ans@out
{\the\verbatim@line}}%
\verbatim@start}
\def\endanswer{%
\immediate\write\ans@out{}
\@esphack}
Dies ist eines der Makros, die ich zum Formatieren von Antworten verwendet habe. Es ist mir tatsächlich ein wenig peinlich, wie hässlich meine zwischenzeitlich generierte Ausgabe markiert ist.
\def\preans{\if@nobreak\global\@nobreakfalse\else\bigfilbreak\fi}
Definieren Sie einen Befehl zum tatsächlichen Drucken der AntwortenWir schließen den Schreibvorgang ab und lesen anschließend die Datei, in die wir geschrieben haben, wieder ein.
\def\printanswers{\immediate\closeout\ans@out
\@input{\jobname.ans}
}
Makros für die SatzfrageDiese sind weniger interessant und erscheinen hier nur der Vollständigkeit halber.
\newcounter{question}[chapter]
\def\thequestion{\thechapter-\arabic{question}}
\def\question{\par\refstepcounter{question}\noindent
{\sc Exercise \thequestion.}
\ignorespaces}
\def\endquestion{\par}
Nachdem wir alle diese Definitionen vorgenommen haben, können wir in der Eingabedatei etwa Folgendes tun:
\begin{question}
What \LaTeX\ commands would you type at the beginning of the input file for
an article which had the title ``Birds \& Bees of North
America,'' was written by ``Dr.~H.T. Jones'' and had today's date
printed for the date field?
\end{question}
\begin{answer}
\begin{verbatim}
\documentclass{article}
\title{Birds \& Bees of North America}
\author{Dr.~H.T. Jones}
\begin{document}
\maketitle
...
\end{verbatim}
Note that \& is input as \verb+\&+ and a \verb+~+ is used after
``Dr.''\ to prevent an end-of-sentence space from being printed
there (a \verb*+\ + could have been used as well). Today's date
was supplied by omitting the date field.
\end{answer}
Das erzeugtan dem Punkt, an dem die question
und answer
Umgebungen erscheinen undwo der \printanswers
Befehl erscheint.
In Ihrem Fall müssen Sie die answers
Umgebung für jede Ihrer Kategorien emulieren und dann über einen \printallofit
Befehl oder etwas Ähnliches verfügen, der alle generierten Eingabedateien schließt und erneut liest.
Antwort2
biblatex
plus oscola
macht, was Sie wollen, aber die Lernkurve ist steil. Jede Frage würde als Biblatex-Element definiert, mit einem Schlüsselwortfeld zur Definition der Themenklasse der Frage. oscola
verfügt über die Tools zum Erstellen einer separaten Tabelle für jedes Thema.
Oder, wenn es eine einmalige Aufgabe ist, würde ich wahrscheinlich Folgendes tun: Alle Fragen in eine einfache Textdatei einfügen, eine pro Zeile; jeder Frage das Präfix „ \item \vphantom{\hphantom{keyword}}
wobei“ keyword
durch ein Schlüsselwort für das jeweilige Thema ersetzt wird; die Datei mit „grep“ bearbeiten, um alle Fragen eines bestimmten Themas in ihre eigene Datei zu senden, und diese Ausgabedateien dann in das Master-LaTeX-Dokument aufnehmen.