![参数和常数与单位的加法和乘法](https://linux22.com/image/374194/%E5%8F%82%E6%95%B0%E5%92%8C%E5%B8%B8%E6%95%B0%E4%B8%8E%E5%8D%95%E4%BD%8D%E7%9A%84%E5%8A%A0%E6%B3%95%E5%92%8C%E4%B9%98%E6%B3%95.png)
我想用一个可选参数和一个以 cm 为单位的常数进行减法和乘法。像这样:
\documentclass{article}
\usepackage{changepage, xintexpr}
\newcommand{\test}[2][1]{
\begin{adjustwidth}{(#1 -1)*0.8cm}{} %(#1 -1)*0.8cm
%\begin{adjustwidth}{0.8}{}
#2
\end{adjustwidth}
\begin{adjustwidth}{0.8cm}{}
Something else I need \#1 to be 1 at default
\end{adjustwidth}
}
\begin{document}
\noindent line1
\test{Sampletext}
\end{document}
但是(#1 -1) * 0.8cm
不起作用。
我已经0.8cm * #1
通过使用实现了#1\dimexpr 0.8cm\relax
但我无法使两个操作都正常工作。
我该怎么做?
PS:已经看过了如何在纯 TeX 中进行加、减、乘、除?但无法弄清楚......
答案1
您可以使用 e-LaTeX 原语\dimexpr
。但请注意,您需要按正确的顺序进行乘法运算,因此\dimexpr(#1-1)*0.8cm
您需要使用\dimexpr0.8cm*(#1-1)
;请参阅\dimexpr \numexpr \glueexpr 的形式语法规则更多细节。
以下是完整的 MWE:
\documentclass{article}
\usepackage{changepage, xintexpr}
\newcommand{\test}[2][1]{
\begin{adjustwidth}{\the\dimexpr0.8cm*(#1-1)\relax}{} %(#1 -1)*0.8cm
#2
\end{adjustwidth}
\begin{adjustwidth}{0.8cm}{}
Something else I need \#1 to be 1 by default
\end{adjustwidth}
}
\begin{document}
\noindent line1
\test{Sampletext}
\test[6]{More sampletext}
\end{document}
得出的结果为: