我想要一个可调节到所需高度的网格命令。这是我做的:
\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
,它们就是正确的。
有优雅的方法吗?
答案 0 :(得分:1)
您可以使用\numexpr
执行基本数字(整数)表达式:
\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>}
。