Doppelter Text an mehreren Stellen in unterschiedlichen Umgebungen (Lstlisting?)?

Doppelter Text an mehreren Stellen in unterschiedlichen Umgebungen (Lstlisting?)?

Leute---

Ich habe eine Frage, bei der ich mir nicht sicher bin, wie ich sie lösen soll. Ich stelle ein Kompendium meiner Prüfungsfragen in einem einzigen PDF zusammen, das ich gerne mit anderen Lehrern teilen möchte, die auch LaTeX verwenden. Das Problem ist, dass LaTeX zwar ein schönes PDF ausgibt, es aber ziemlich schwierig sein kann, aus dem PDF in eine andere TeX-Datei zu kopieren/einzufügen, wenn jemand anderes mein Problem verwenden möchte. Ich würde natürlich den Quellcode für jedes Problem in einer eigenen kleinen Problemdatei bereitstellen, aber es kann ziemlich mühsam sein, einen ganzen Ordner oder eine einzelne Datei zu durchsuchen, um ein bestimmtes Problem zu finden.

Ich weiß – das scheinen so kleine Beschwerden zu sein, dass sie sich nicht lohnen und größtenteils das Ergebnis von Faulheit sind. Aber wenn sie gelöst werden können, würde dies die Arbeit mit anderen daran weniger fehleranfällig machen und das Überprüfen, Kopieren und Ändern von Problemen in Zukunft etwas einfacher machen.

Ich hoffe, dass ich in der Lage bin, Folgendes zu tun:

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

Auf diese Weise würde im PDF Folgendes stehen:

  • Eine Liste von Fragen, komplett mit Diagrammen usw., die ordnungsgemäß mit LaTeX gesetzt sind;

  • einige Lstlistings oder ähnliche Umgebungen, die den Quellcode für dieses Problem anzeigen.

Natürlich könnte ich den Text der Frage einfach in eine Lstlisting-Umgebung kopieren/einfügen, aber wenn Änderungen vorgenommen werden, muss die Person, die mit mir zusammenarbeitet und Änderungen an einer Frage vornimmt (oder wahrscheinlicher ich), daran denken, alle Änderungen in die zweite Umgebung zu kopieren. Wenn es jedoch eine Möglichkeit gäbe, einen Befehl auszugeben oder eine Umgebung für dieses Kompendium neu zu definieren, in der es gesetzt würdeUndGeben Sie den Quellcode zum einfachen Kopieren aus, wobei nur eine Stelle geändert werden muss. Dadurch werden die einzelnen Problemdateien viel übersichtlicher und sind mit der Zeit leichter zu verwalten.

Vielen Dank für Ihre Hilfe!

Antwort1

Beide inputund lstinputlistingsind hier deine Freunde.

Sie können den Befehl so ändern \question, dass auch Dateien für Lösungen eingeschlossen werden. Die einzige Einschränkung ist, dass diese verwendet werden müssen, da \inputes sich um gültiges TeX handeln muss.

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

Um daraus ein echtes MWE zu machen, habe ich q1.texim selben Verzeichnis eine Datei mit dem Namen:

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

verwandte Informationen