整理問題

整理問題

我有一套數學試卷,要用 TeX 寫,根據主題分組,例如抽象代數、實分析、微分方程等。

依照問題順序鍵入試卷中出現的問題,並根據每個問題的主題為每個問題加上一些標籤。在輸出中,同一主題的所有試卷中的問題排列在一起。

答案1

可能有更好的方法來處理這個問題,但我在我的 LaTeX 書中做了一些與練習答案類似的事情,透過建立包中可用的擴展,verbatim使我可以將問題和答案放在一起,即使答案將列印在每章末尾都有單獨的部分。

這是我使用的程式碼(這全部在文件中,.cls因此它用作@字母)。我將註釋清單以使事情更清楚

首先新建一個寫入(每個類別都需要一個,但請記住,只有 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}

這是我用來格式化答案的巨集之一。實際上,我對中間生成的輸出被標記得有多難看感到有點尷尬。

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

哪個產生問題環境的輸出question在和環境出現的地方answer並且答案環境的輸出命令出現的位置\printanswers

在您的情況下,您需要模擬answers每個類別的環境,然後使用\printallofit命令或類似命令來關閉並重新讀取所有產生的輸入檔。

答案2

biblatexplusoscola可以做你想要的,但是學習曲線很高。每個問題將被定義為 biblatex 項目,並使用關鍵字欄位來定義問題的主題類。 oscola具有為每個主題建立單獨表格的工具。

或者,如果這是一項一次性任務,我可能會這樣做:將所有問題放入純文字檔案中,每行一個;每個問題的前綴\item \vphantom{\hphantom{keyword}}wherekeyword被每個主題的關鍵字取代; grep 檔案將某個主題的所有問題傳送到自己的檔案中,然後將這些輸出檔案包含在主 LaTeX 文件中。

相關內容