各位——
我有一个问题,但我不知道该如何解答。我正在将我的考试问题汇总成一个 PDF 文件,我想与其他使用 LaTeX 的老师分享。问题是,虽然 LaTeX 可以生成漂亮的 PDF 文件,但如果其他人想使用我的问题,那么从 PDF 文件复制/粘贴到另一个 TeX 文件中会非常困难。我当然会在每个问题的小问题文件中提供源代码,但翻遍整个文件夹或单个文件来查找特定问题可能会有点麻烦。
我知道——这些抱怨似乎微不足道,不值得一提,而且大多是懒惰的产物。但如果这些问题能够解决,那么以后与他人合作时出错的可能性就会降低一些,审查、复制和修改问题也会更加顺利一些。
我希望能够做类似的事情:
\documentclass[options]{exam}
\usepackage{graphicx}
\usepackage{tikz}
\tikzlibrary{blahblah}
\usepackage{listings}
\usepackages{any other necessary packages to make this work}
\begin{document}
\begin{questions}
\some-command-to-duplicate-question,but-in-a-lstlistings-sort-of-environment{%
\question A question?
\begin{solution}
The solution
\end{solution}
}
\same-command-as-before{%
\includegraphics{diagramforquestion}%could also be for Tikz drawings, tables, other figures, etc
\question Another question?
\begin{solution}
Another solution.
\end{solution}
}
\end{questions}
\end{document}
这样,在 pdf 中就会有:
问题列表,其中包含由 LaTeX 正确排版的图表等;
一些 lstlistings 或类似的环境,显示该问题的源代码。
显然,我可以将问题的文本复制/粘贴到 lstlisting 环境中,但如果进行了任何更改,与我合作对问题进行更改的人(或者更可能是我)将必须记住将所有更改复制到第二个环境中,而如果有某种方式可以发出某些命令或重新定义此概要的某些环境,它将在其中排版和输出源代码以便于复制,只需要修改一个地方,这将使单个问题文件变得更加清晰,并且随着时间的推移更容易维护。
谢谢你们提供的任何帮助!
答案1
和input
都是lstinputlisting
你在这里的朋友。
您也可以修改\question
命令以包含解决方案的文件,唯一的问题是它们是否必须\input
是有效的 TeX。
\documentclass[10pt]{article}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{listings}
\lstset{basicstyle=\footnotesize\ttfamily,breaklines=true}
\newcommand{\question}[4]{
#1
The question is
\begin{center}
\input{#2}
\end{center}
For copy-pasting, the question is
\lstinputlisting{#2}
The solution is here:
\begin{center}
#3
\end{center}
#4
}
\begin{document}
Introduction
\begin{enumerate}
\item \question{For undergraduates:}{q1}{My solution}{
A figure to help explain
\begin{tikzpicture}
\draw (0,0) -- (2,0) -- (2,2) -- (0,0);
\end{tikzpicture}
}
\item \question{For grad students:}{q1}{Another solution}{No figure needed for grad students}
\end{enumerate}
\end{document}
为了使其成为真正的 MWE,我q1.tex
在同一目录中有一个名为的文件,如下所示:
If $n = 3$, $x^n + y^n = z^n$ has no integer solutions. If you have extra time, please prove this for all other $n > 2$.