在 LaTeX2e 中,如何将两个值相加并将它们分配给其他变量?
我想要计算类似的东西:
var=\textwidth - 1cm
如果两者都是常数:
var=1+1
答案1
在常规 LaTeX 中,calc
包裹可以轻松操作长度算术:
\documentclass{article}
\usepackage{calc}% http://ctan.org/pkg/calc
\newlength{\mylength}
\begin{document}
\setlength{\mylength}{\textwidth}%
\noindent\rule{\mylength}{20pt}
\bigskip
\setlength{\mylength}{\textwidth-1cm}%
\noindent\rule{\mylength}{20pt}
\bigskip
\setlength{\mylength}{\textwidth-80pt+5mm-1bp}%
\noindent\rule{\mylength}{20pt}
\end{document}
以上内容涉及长度。对于使用数字的基本算术,fp
包裹。下面是使用中缀表示法的示例(逆波兰表示法/RPN也可以通过以下方式实现\FPupn
:
\documentclass{article}
\usepackage[nomessages]{fp}% http://ctan.org/pkg/fp
\begin{document}
The following arithmetic is easy:
\begin{itemize}
\item \FPeval{\result}{clip(5+6)}%
$5+6=\result$
\item \FPeval{\result}{round(2+3/5*pi,5)}%
$2+3/5\times\pi=\result$
\end{itemize}
\end{document}
答案2
在经典的 Knuth TeX 中,
\newdimen\len
\len=\hsize
\advance\len by -1cm
\newcount\cnt
\cnt=1
\advance\cnt by 1
eTeX,
\newdimen\len
\len=\dimexpr\hsize-1cm\relax
\newcount\cnt
\cnt=\numexpr1+1\relax
LaTeXcalc
与
\usepackage{calc}
\newlength\len
\setlength{\textwidth+1cm}
\newcounter{cnt}
\setcounter{cnt}{1+1}
LaTeX2e 与expl3
(LaTeX3),
\usepackage{expl3}
\ExplSyntaxOn
\dim_new:N \l_len_dim
\dim_set:Nn \l_len_dim {\textwidth + 1cm}
\int_new:N \l_cnt_int
\int_set:Nn \l_cnt_int {1+1}
\ExplSyntaxOff
答案3
既然 LuaTeX 已经可用,那就忘掉所有复杂的东西,然后执行以下操作:
\directlua{
a = 0
a = a + 1
tex.print(a)
}
答案4
使用较新的 TeX 发行版
\newdimen\len
\len=\dimexpr\textwidth-1cm\relax
\newcount\cnt
\cnt=\numexpr1+1\relax
不过,您感兴趣的框架是什么还不太清楚。