我在文档中定义了如下新命令:
%---------------------------------------------------------
\newcommand{\thetmpone}{}
\newcommand{\thetmptwo}{}
\newcommand{\tmpone}[1]{\renewcommand{\thetmpone}{#1}}
\newcommand{\tmptwo}[1]{\renewcommand{\thetmptwo}{#1}}
%---------------------------------------------------------
\newcommand{\datatype}[2]{#2% Data type. Parameters are name, and a datatype attribute block.
#1\\* is \thetmpone\par %
\thetmptwo\par}%
%---------------------------------------------------------
\newcommand{\arbitarydtab}[0]{% Data type attribute block (dtab) for arbitary.
\tmpone{arbitary.} %
\tmptwo{Used for identifiers that have no intrinsic meaning.}}%
%---------------------------------------------------------
我的测试数据是:
\datatype{test arbitary}{\arbitarydtab}
\datatype{}{\arbitarydtab}
这会产生两个问题:
第二个测试用例根据需要格式化文档,但会产生以下错误:
! LaTeX Error: There's no line here to end.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
我的编码有什么问题?
此外,如果我使用第二个测试用例(仅),然后将其更改为与测试用例1相同,即使参数现在存在,此错误仍会继续。是什么导致了错误的持续存在?
答案 0 :(得分:1)
在\leavevmode
之后插入#1
:
%---------------------------------------------------------
\newcommand{\datatype}[2]{#2% Data type. Parameters are name, and a datatype attribute block.
#1\leavevmode\\* is \thetmpone\par %
\thetmptwo\par}%
%---------------------------------------------------------
如果在空行之后使用它,则 \\*
不起作用。