是否可以在 LaTeX 中引入自己的目录?我想引入自己的标签,以定义文档中的一些术语。在文档末尾,我想自动生成已定义术语的列表,并附上定义术语的页面链接。
答案1
在以下示例中,我定义了一个\Defi
具有两个强制参数的命令;第一个强制参数用于要定义的术语,第二个强制参数用于定义;该命令将术语排版为粗体字体,将术语添加到辅助文件.def
,并添加\phantomsection
命令(此部分需要hyperref
包)以获取超链接的正确锚点。该命令\listofdefinitions
实际上将使用 kernel 命令创建新的“定义列表” \@starttoc
。在示例中,新列表的条目将被格式化为 LoF 中的图形,但这也可以自定义:
\documentclass{article}
\usepackage{hyperref}
\newcommand\Defi[2]{%
\noindent\makebox[1.5cm][l]{%
\textbf{#1}%
\phantomsection% comment out if hyperref is noy used
\addcontentsline{def}{figure}{#1}}{#2}\par}
\makeatletter
\newcommand\listdefinitionname{List of Definitions}
\newcommand\listofdefinitions{%
\section*{\listdefinitionname}\@starttoc{def}}
\makeatother
\begin{document}
\Defi{CDMA}{Code Division Multiple Access}
\Defi{GSM}{Global System for Mobile communication}
\Defi{NAD}{Nicotinamide Adenine Dinucleotide}
\Defi{TDMA}{Time Division Multiple Access}
\Defi{IC}{Integrated Circuit}
\Defi{BUT}{Block Under Test}
\listofdefinitions
\end{document}
\newlistof
以下是使用来自的命令的上述代码版本托克洛夫特包裹:
\documentclass{article}
\usepackage{tocloft}
\usepackage{hyperref}
\newcommand\Defi[2]{%
\noindent\makebox[1.5cm][l]{%
\phantomsection% comment out if hyperref is noy used
\textbf{#1}%
\addcontentsline{def}{figure}{#1}}{#2}\par}
\newcommand\listdefinitionname{List of Definitions}
\newlistof{definition}{def}{\listdefinitionname}
\begin{document}
\Defi{CDMA}{Code Division Multiple Access}\newpage
\Defi{GSM}{Global System for Mobile communication}
\Defi{NAD}{Nicotinamide Adenine Dinucleotide}\newpage
\Defi{TDMA}{Time Division Multiple Access}
\Defi{IC}{Integrated Circuit}
\Defi{BUT}{Block Under Test}
\listofdefinition
\end{document}
答案2
@Gonzalo Medina:输入\addcontentsline
会\makebox
减慢处理速度。而且缩写有时可能比1.5cm
您使用的固定长度更长。
\documentclass{article}
\usepackage{hyperref}
\makeatletter
\newcommand\Defi[2]{%
\noindent
\makebox[\ListOfDefAbbrevLength][l]{\textbf{#1}}%
\csname phantomsection\endcsname
\addcontentsline{def}{figure}{#1}%
{#2}\par
}
\newdimen\ListOfDefAbbrevLength
\ListOfDefAbbrevLength=1.5cm
\newcommand\ListOfDefName{List of Definitions}
\newcommand\ListOfDefinitions{%
\section*{\ListOfDefName}%
\@starttoc{def}%
}
\makeatother
\begin{document}
\Defi{CDMA}{Code Division Multiple Access}
\Defi{GSM}{Global System for Mobile communication}
\Defi{NAD}{Nicotinamide Adenine Dinucleotide}
\Defi{TDMA}{Time Division Multiple Access}
\Defi{IC}{Integrated Circuit}
\Defi{BUT}{Block Under Test}
\ListOfDefinitions
\end{document}