如何使用\ newcommand块中的可选参数进行计算?

时间:2015-01-22 11:47:46

标签: latex

我想要一个可调节到所需高度的网格命令。这是我做的:

\newcommand{\vhlines}[1]{
    \hspace{1em}
    \setlength{\unitlength}{0.75cm}
    \begin{picture}(22,#1)
        \color{lightgray}
        \linethickness{0.075mm}
        \multiput(0,0)(1,0){21}
        {\line(0,1){#1}} % need to subtract 1 from #1
        \multiput(0,0)(0,1){#1}
        {\line(1,0){20}}
    \end{picture}
 }

如果我打电话,例如,\vhlines{16}我发现上端的垂直线太长。如果我在评论的行中写15而不是#1,它们就是正确的。

有优雅的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用\numexpr执行基本数字(整数)表达式:

enter image description here

\documentclass{article}
\usepackage{xcolor}
\newcommand{\vhlines}[1]{%
  \hspace{1em}%
  \setlength{\unitlength}{0.75cm}%
  \begin{picture}(22,#1)
    \color{lightgray}
    \linethickness{0.075mm}
    \multiput(0,0)(1,0){21}
      {\line(0,1){\numexpr#1-1}}
    \multiput(0,0)(0,1){#1}
      {\line(1,0){20}}
  \end{picture}
 }
\begin{document}

\noindent
\vhlines{4}

\end{document}

或者,对于更复杂的表达式,请添加到您的序言中

\usepackage{xparse}
\ExplSyntaxOn
  \cs_new_eq:NN \calc \fp_eval:n
\ExplSyntaxOff

允许您使用\calc{<your numerical expression>}