在不同环境中的多个地方重复文本(lstlisting?)?

在不同环境中的多个地方重复文本(lstlisting?)?

各位——

我有一个问题,但我不知道该如何解答。我正在将我的考试问题汇总成一个 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$.

相关内容