Я сейчас пишу документ API в LaTeX. У меня есть табличное окружение со списком кодов ошибок и описаний, например так:
\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, ...), такими как метки.
Есть идеи?