在LaTeX中存储和调用可变数量的文本字符串

时间:2010-01-22 19:11:14

标签: latex storage

我目前正在LaTeX中编写API文档。我有一个表格环境,其中包含错误代码和说明列表,如下所示:

\begin{tabular}{|c|l|}
\hline
\textbf{Code} & \textbf{Description} \\ \hline
1 & (description of error 1) \\ \hline
2 & (description of error 2) \\ \hline

\end{tabular}

在文档后面的各个地方,我一起引用错误的代码及其描述,如下所示:

Possible error conditions:
\begin{itemize}
\item 1---(description of error 1)

\end{itemize}

我想自动执行此过程,因此我不必每次都重新键入说明。我尝试过使用计数器,标签和\ savebox命令,但这很麻烦:

\newcounter{error}

% Inside the tabular environment:

\newsavebox{\ErrorOne}
\savebox{\ErrorOne}{(description of error 1)}
\refstepcounter{error} \label{ErrorOne} \arabic{error} & \usebox{\ErrorOne} \\ \hline

以后,引用错误,

\ref{ErrorOne}---\usebox{\ErrorOne}

我特别反对必须使用ErrorOne作为标签但是\ ErrorOne(带有反斜杠)用于保存箱。我也不想要像ErrorOne这样的名字,因为我可能需要在某些时候更改顺序。我想要的是能够定义一些命令:

\newerror{errorlabel}{Description}  % defines the error (doesn't output anything)
\errorcode{errorlabel}              % outputs the error code
\errordesc{errorlabel}              % outputs the error description

然后能够说出类似

的内容
\newerror{ArgumentError}{Too many arguments}
\newerror{DatabaseError}{Could not connect to database}

% Inside the tabular environment:

\errorcode{ArgumentError} & \errordesc{ArgumentError} \\ \hline
\errorcode{DatabaseError} & \errordesc{DatabaseError} \\ \hline

% Later on:

\errorcode{DatabaseError}---\errordesc{DatabaseError}

错误代码(1,2,3,...)会自动生成,就像标签一样。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

以下为我工作

\catcode`\@=11

\newcounter{error}
\def\newerror#1#2{\refstepcounter{error}%
   \expandafter\xdef\csname errno@#1\endcsname{\arabic{error}}%
   \expandafter\xdef\csname errds@#1\endcsname{#2}%
}
\def\errorcode#1{\expandafter\printerrinfo \csname errno@#1\endcsname}
\def\errordesc#1{\expandafter\printerrinfo \csname errds@#1\endcsname}
\def\printerrinfo#1{\ifx#1\relax\errmessage{Error code is invalid}%
        \else\expandafter#1\fi}

\catcode`\@=12


\newerror{ArgumentError}{Too many arguments} 
\newerror{DatabaseError}{Could not connect to database} 


\errorcode{DatabaseError}---\errordesc{DatabaseError} 

答案 1 :(得分:0)

在序言中,为每个错误创建新命令,然后只需调用命令:

\newcommand{\errorone}{this is the error and its description}

然后在正文中,只需调用新命令:

\begin{tabular}{|c|l|}
\hline
\textbf{Code} & \textbf{Description} \\ \hline
1 & \errorone \\ \hline