0

我在文档中定义了新命令,如下所示:

%---------------------------------------------------------
\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.

我在这里的编码有什么问题?

此外,如果我(仅)使用第二个测试用例,然后将其更改为与测试用例一相同,即使参数现在存在,此错误仍然存​​在。是什么导致错误持续存在?

4

1 回答 1

1

\leavevmode在之后插入#1

%--------------------------------------------------------- 
\newcommand{\datatype}[2]{#2% Data type.  Parameters are name, and a datatype attribute block. 
  #1\leavevmode\\* is \thetmpone\par % 
  \thetmptwo\par}% 
%--------------------------------------------------------- 

\\*如果在空行之后使用,则不起作用。

于 2010-09-23T09:33:02.570 回答