異なる環境の複数の場所でテキストを重複させますか (lstlisting?)?

異なる環境の複数の場所でテキストを重複させますか (lstlisting?)?

皆さん---

解き方がわからない問題があります。試験問題集を 1 つの PDF にまとめて、LaTeX を使用する他の教師と共有したいと考えています。問題は、LaTeX は美しい PDF を出力するものの、他の誰かが私の問題を使用したい場合、PDF から別の TeX ファイルにコピー/貼り付けするのが非常に難しいことです。もちろん、各問題のソース コードをそれぞれの小さな問題ファイルで提供しますが、特定の問題を見つけるためにフォルダー全体または 1 つのファイルを調べるのは少々面倒です。

わかっています。これらは取るに足らない小さな不満のように思えますし、ほとんどが怠惰の産物です。しかし、これらが解決できれば、他の人と一緒に作業するときにエラーが起こりにくくなり、将来的に問題を確認、コピー、修正するのが少しスムーズになります。

私が望んでいるのは、次のようなことができるようになることです。

\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 または同様の環境。

もちろん、質問のテキストをリスト環境にコピー/貼り付けることもできますが、変更があった場合、質問に変更を加えた共同作業者(または、おそらく私)は、すべての変更を2番目の環境にコピーすることを覚えておく必要があります。一方、この概要に対して何らかのコマンドを発行したり、環境を再定義したりする方法があれば、タイプセットが行われます。そしてソース コードを出力して簡単にコピーできるようにし、変更が必要な箇所を 1 か所だけにします。これにより、個々の問題ファイルがはるかに整理され、長期にわたって保守しやすくなります。

皆様のご協力に感謝いたします!

答え1

inputlstinputlistingここではあなたの友達です。

コマンドを変更してソリューション用のファイルも含めることができます\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}

q1.texこれを真の MWE にするために、同じディレクトリに次のファイルを作成します。

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$.

関連情報