質問の整理

質問の整理

抽象代数、実解析、微分方程式などのトピックごとにグループ化して TeX で記述する数学の問題用紙セットがあります。次のことは実現できますか?

問題用紙に表示されている質問を、問題が書かれている順番に入力し、各質問にトピックに応じたラベルを追加します。出力では、同じトピックのすべての問題用紙の質問が一緒に並べられます。

答え1

これを処理するより良い方法があるかもしれませんが、私は LaTeX の本の演習問題の解答でも同様のことを行いました。パッケージで利用可能な拡張機能を利用して、verbatim各章の最後に別のセクションとして解答が印刷される場合でも、質問と解答をまとめることができました。

これは私が使用したコードです(これはすべてファイル内にあるため、文字として.cls使用されます)。わかりやすくするためにリストに注釈を付けます。@

まず新しい書き込みを作成します(カテゴリごとに 1 つずつ必要になりますが、使用可能な書き込みストリームは 16 個のみであり、LaTeX はそのうちのいくつかを独自に使用することに注意してください)。

\newwrite\ans@out
\immediate\openout\ans@out=\jobname.ans

回答環境を定義するこれはパッケージverbatimwriteのサンプル環境に基づいていますverbatimドキュメンテーションで始まる行は、\immediate\write入力ファイルの内容を超えて追加のテキストを追加するために使用されます。

\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}

これは、回答のフォーマットに使用したマクロの 1 つです。中間生成の出力がマークアップされているのがいかに醜いか、実のところ少し恥ずかしいです。

\def\preans{\if@nobreak\global\@nobreakfalse\else\bigfilbreak\fi}

実際に回答を印刷するコマンドを定義する書き込みを終了し、書き込んだファイルを読み取ります。

\def\printanswers{\immediate\closeout\ans@out
  \@input{\jobname.ans}
}

組版のマクロに関する質問これらはあまり興味深いものではないので、完全性のためにここに記載するだけです。

\newcounter{question}[chapter]
\def\thequestion{\thechapter-\arabic{question}}
\def\question{\par\refstepcounter{question}\noindent
   {\sc Exercise \thequestion.}
   \ignorespaces}
\def\endquestion{\par}

これらすべての定義を行ったら、入力ファイルで次のような操作を実行できます。

\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}

それによって質問環境の出力環境questionanswer現れ、回答環境の出力コマンドが表示される場所\printanswers

あなたの場合、answers各カテゴリの環境をエミュレートし、\printallofit生​​成されたすべての入力ファイルを閉じて再読み込みするコマンドなどを用意する必要があります。

答え2

biblatexplus はoscola必要な機能を実行しますが、学習曲線は急峻です。各質問は、質問のトピック クラスを定義するキーワード フィールドを持つ biblatex 項目として定義されます。 oscola各トピックごとに個別のテーブルを作成するツールがあります。

または、これが 1 回限りのタスクである場合は、次のようにするでしょう。すべての質問を 1 行に 1 つずつプレーン テキスト ファイルに入れ、各質問の前に\item \vphantom{\hphantom{keyword}}wherekeywordを各トピックのキーワードに置き換え、ファイルを grep して特定のトピックのすべての質問を独自のファイルに送信し、それらの出力ファイルをマスター LaTeX ドキュメントに含めます。

関連情報