
Я хотел бы определить некоторые переменные в документе tex. Например, я пишу .tex
что-то похожее на: Our tool succeeds to validate x samples by Method A, and y samples by Method B. Thus its score is z
. Где z
определяется как x+y
, а x
(соотв. y
) инстанцируется где-то еще числом, например, 30
(соотв. 50
). В результате после компиляции текст оказывается Our tool succeeds to validate 30 samples by Method A, and 50 samples by Method B. Thus its score is 80
.
Преимущество этого в том, что мне нужно просто изменить значение некоторых переменных, чтобы изменить все числа в тексте...
Кто-нибудь знает, как этого добиться?
решение1
\documentclass{article}
\newcommand\x{30}
\newcommand\y{50}
\begin{document}
I would like to define some variables in a tex document. For example,
I write in .tex something similar as: Our tool succeeds to validate \x\
samples by Method A, and \y\ samples by Method B. Thus its score is
\the\numexpr\x+\y\relax.
\end{document}
выход-
решение2
Вы можете использовать expl3
функции, в частности xfp
пакет, который включает в себя \fpeval
и \inteval
.
\documentclass{article}
\usepackage{xfp}
\newcommand\x{30}
\newcommand\y{50}
\begin{document}
I would like to define some variables in a \TeX{} document. For example,
I write in \texttt{.tex} something similar as: Our tool succeeds to
validate \inteval{\x} samples by Method~A, and \inteval{\y} samples by
Method~B. Thus its score is \inteval{\x+\y}.
\end{document}
Конечно, вы также можете использовать \x{}
вместо \inteval{\x}
, но с помощью \inteval
метода вы также можете сделать
\newcommand{\z}{\x+3*\y}
и использовать \inteval{\z}
.
Это предполагает операции с целыми числами; если вам нужны числа с плавающей точкой, вы можете использовать \fpeval
вместо \inteval
(но все становится сложнее).
решение3
Для этого можно использовать счетчики:
\newcounter{x}
\setcounter{x}{30}
\newcounter{y}
\setcounter{y}{50}
Our tool succeeds to validate \arabic{x} samples by Method A,
and \arabic{y} samples by Method B. Thus its score is
\the\numexpr\value{x}+\value{y}.