Estou escrevendo um documento onde o nome de uma pessoa A aparecerá em vários lugares da seção A. Da mesma forma, o nome da pessoa B aparecerá em vários lugares da seção B, etc.
Existe alguma maneira pela qual, logo antes da seção A, eu possa definir uma variável, digamos, PersonName, atribuir a ela um valor relevante para a Pessoa A e usá-lo na seção A. Em seguida, redefina PersonName no início da seção B, use na seção B, etc.
Se PersonName não puder ser definido no corpo, posso declará-lo no preâmbulo e continuar atribuindo valores diferentes a ele no corpo?
Responder1
É exatamente para isso que servem as macros. Você pode definir suas próprias macros com \newcommand{\command}{<actions>}
e redefini-las com \renewcommand
. Ambos os comandos podem ser dados em qualquer lugar do documento, então você poderia fazer algo assim:
\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}
Responder2
Com oscontents
pacote é fácil o suficiente para fazer o que você está procurando. Tudo armazenado na memória, claro, se você preferir arquivos externos, você pode usar a versão do ambiente e a chave write-env=file.tex
e além de armazená-los na memória, você pode ter o conteúdo em arquivos separados e depois usar o \input
. Prefiro salvar na memória :)
\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}