Латексная ошибка, возникающая из-за несуществующего параметра - PullRequest
0 голосов
/ 23 сентября 2010

Я определил новые команды в документе следующим образом:

%---------------------------------------------------------
\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 Ответ

1 голос
/ 23 сентября 2010

Вставить \leavevmode после #1:

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

\\* не работает, если используется после пустой строки.

...