由不存在的参数引起的乳胶错误

时间:2010-09-22 23:32:28

标签: latex logic miktex

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

%---------------------------------------------------------
\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相同,即使参数现在存在,此错误仍会继续。是什么导致了错误的持续存在?

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}% 
%--------------------------------------------------------- 
如果在空行之后使用它,则

\\*不起作用。