No LaTeX, como posso definir uma variável de string cujo conteúdo é usado em vez da variável no PDF compilado?
Digamos que estou escrevendo um documento técnico em um software e quero definir o nome do pacote no preâmbulo ou em algum lugar para que, se o nome for alterado, não seja necessário substituí-lo em muitos lugares, mas apenas em um lugar .
Respostas:
adicione o seguinte ao seu preâmbulo:
Então você pode apenas usar
\newCommandName{}
no textoPara mais informações
\newcommand
, consulte, por exemplo, wikibooksExemplo:
Resultado:
fonte
Use o
\def
comando:Esteja ciente de que
\def
substitui macros preexistentes sem avisos e, portanto, pode causar vários erros sutis. Para superar isso, use variáveis espaçadas por nome comomy_var
ou retorne aos comandos\newcommand
, em\renewcommand
vez disso.fonte
\def
pode ser problemático, pois não verifica macros preexistentes. Veja o segundo círculo do inferno do LaTeX - como tal, é preferível usar\newcommand
variable
significa que ele pode mudar? :)\def
. Em vez disso, acho que é uma boa prática primeiro "inicializar" todas as variáveis com as quais você deseja usar\newcommand
(mesmo que seja apenas com\@empty
) e, em seguida, criar seu comando para modificar a variável usando\renewcommand
. Isso permitirá que você saiba se sua variável já sai, porque\newcommand
gerará um erro (ou pelo menos um aviso).\def
funciona para coisas no modo matemático, enquanto\newCommandName
não funciona. (Por exemplo,\def\mathExpression{\pi^2 + \sin x}
)Para variáveis descrevendo distâncias, você usaria
\newlength
(e manipular os valores com\setlength
,\addlength
,\settoheight
,\settolength
e\settodepth
).Da mesma forma, você tem acesso a
\newcounter
itens como números de seção e figura que devem ser incrementados ao longo do documento. Eu usei este no passado para fornecer exemplos de código que foram numerados separadamente de outras figuras ...Também é importante notar
\makebox
que permite armazenar um pouco de documento para posterior reutilização (e para uso com\settolength
...).fonte
\newlength{\hcolw}
e\setlength{\hcolw}{0.47\textwidth}
seria útil.Se você deseja usar
\newcommand
, também pode incluir\usepackage{xspace}
e definir comando por\newcommand{\newCommandName}{text to insert\xspace}
. Isso pode permitir que você use apenas\newCommandName
ao invés de\newCommandName{}
.Para maiores detalhes, http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html
fonte
Eu acho que você provavelmente vai querer usar uma lista de tokens para esta finalidade: para configurar a lista de tokens
\newtoks\packagename
para atribuir o nome:\packagename={New Name for the package}
para colocar o nome em sua saída:\the\packagename
.fonte