Дублирование текста в нескольких местах в разных средах (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$.

Связанный контент