我想创建类似于的东西\listoffigures
。\listoftables
到目前为止我所做的是:
\def\startloa#1
{
\begingroup
\begin{listofabbrv}{SPMD}
\@input{\jobname.#1}
\end{listofabbrv}
\global\@nobreakfalse
\endgroup
\newpage
}
\newcommand{\listofabbreviations}
{
\@startloa{loa}
}
% abvr{abvr}{text}
\def\abvr#1#2
{
\makeatletter
\immediate\write\tempfile{\backslash item[#1] #2}
\makeatother
}
\newwrite\tempfile
\begin{document}
\immediate\openout\tempfile=\jobname.loa
\listofabbreviations
\abvr{NULL}{/dev/null}
\immediate\closeout\tempfile
\end{document}
/\begin
是\end{listofabbvr}
我使用的样式中预定义的,因此我无法更改它。是否这样做:
\begin{listofabbrv}{SPMD}
\item[NULL] /dev/null
\end{listofabbrv}
主要问题:
该
\abvr
命令不起作用。文件输出为:\delimiter "026E30F item[NULL] /dev/null
代替
\item[NULL] /dev/null
该命令
\listofabbreviations
不起作用。 有什么问题吗\def\startloa
? 输出日志的一小段:ERROR: 74 ! You can't use `\spacefactor' in vertical mode. 75 \@->\spacefactor 76 \@m 77 l.133 \listofabbreviations 78 79 ! Missing $ inserted. --- x --- x --- ERROR: 79 ! Missing $ inserted. 80 <inserted text> 81 $ 82 l.133 \listofabbreviations 83 84 ! Missing $ inserted. --- x --- x --- ERROR: 84 ! Missing $ inserted. 85 <inserted text> 86 $ 87 l.134 88 89 [3] --- x --- x ---
答案1
你的代码有很多问题。TeX 不是 C,而且
\def\x#1
{
...
}
是非常不同于
\def\x#1{...}
以下是制作清单的方法
\documentclass[a4paper]{article}
\makeatletter
\newcommand\@startloa{%
\begin{listofabbrv}{SPMD}
\InputIfFileExists{\jobname.loa}{}{\item[\null]}
\end{listofabbrv}
\newwrite\@loa
\immediate\openout\@loa=\jobname.loa
}
\newcommand{\listofabbreviations}{\@startloa}
% abvr{abvr}{text}
\def\abvr#1#2{\immediate\write\@loa{\unexpanded{\item[#1]#2}}}
\makeatother
\newenvironment{listofabbrv}[1]{\begin{itemize}}{\end{itemize}}
\begin{document}
\listofabbreviations
\abvr{NULL}{/dev/null}
\end{document}
线路\newenvironment
只是为了有一个listofabbrv
环境。