我有这个宏:
\newcommand\myvspace[1][]{
\foreach \i in {1,...,#1} {
\hfill \break
}
}
我只是想创建一些空白,所以我像这样使用它:
foo
\myvspace{3}
bar
但是我收到了这个错误。
Runaway argument?
ndefined\let \pgffor@dotsend =\pgffor@dotsvalue \pgffor@dots@value@process \ETC
.
! Paragraph ended before \pgffor@@dotscharcheck was complete.
<to be read again>
\par
l.120
尚不确定如何调试,这是迄今为止我的第一个宏 :)。不确定如何修复它。
答案1
您已创建了一个包含一个默认为空的可选参数的宏。默认值在第二对括号中给出。
目前尚不完全清楚您想要的行为是什么,但这至少可以修复您的错误。
\documentclass{article}
\usepackage{pgffor}
\newcommand\myvspace[1]{%
\foreach \i in {1,...,#1} {%
\hfill \break
}%
}
\begin{document}
foo
\myvspace{3}
bar
\end{document}
我禁不住认为您应该使用\vspace
或\vspace*
或\\
。
也许类似
\newcommand*\myvspace[1]{%
\\[#1\baselineskip]%
}
但是可选参数用于额外的空间,因此您需要使用它\myvspace{2}
来实现您的效果。(或者,您可以做一些数学运算并减去一个。)