参数和常数与单位的加法和乘法

参数和常数与单位的加法和乘法

我想用一个可选参数和一个以 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}

得出的结果为:

在此处输入图片描述

相关内容