Я пишу документ, в котором имя человека А будет встречаться в нескольких местах раздела А. Аналогично, имя человека Б будет встречаться в нескольких местах раздела В и т. д.
Есть ли способ, с помощью которого я могу определить переменную, скажем, PersonName, присвоить ей значение, относящееся к Person A, и использовать ее в разделе A. Затем переопределить PersonName в начале раздела B, использовать ее в разделе B и т. д.?
Если PersonName не может быть определен в теле, могу ли я объявить его в преамбуле и продолжать присваивать ему различные значения в теле?
решение1
Именно для этого и нужны макросы. Вы можете определить свои собственные макросы с помощью \newcommand{\command}{<actions>}
и переопределить их с помощью \renewcommand
. Обе команды можно задать в любом месте документа, поэтому вы можете сделать что-то вроде этого:
\documentclass{article}
\begin{document}
\section{Section A}
\newcommand{\PersonName}{Person A}
Some text written by \PersonName.
\section{Section B}
\renewcommand{\PersonName}{Person B}
Some text written by \PersonName.
\end{document}
решение2
Сscontents
package it достаточно легко сделать то, что вы ищете. Все хранится в памяти, конечно, если вы предпочитаете внешние файлы, вы можете использовать версию среды и ключ, write-env=file.tex
и помимо хранения их в памяти, вы можете иметь содержимое в отдельных файлах, а затем использовать \input
. Я предпочитаю сохранять в памяти :)
\documentclass{article}
\usepackage{scontents}
\setupsc{store-cmd=person}
\Scontents{Person A}
\Scontents{Person B}
\begin{document}
\section{Section A}
Some text written by \getstored[1]{person}
\section{Section B}
Some text written by \getstored[2]{person}
\end{document}