![将部分添加到目录中并添加编号](https://linux22.com/image/243805/%E5%B0%86%E9%83%A8%E5%88%86%E6%B7%BB%E5%8A%A0%E5%88%B0%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%B9%B6%E6%B7%BB%E5%8A%A0%E7%BC%96%E5%8F%B7.png)
我有一些扫描的 PDF 文档,我想将它们放在一个 Latex 文件中,并用只出现在目录中的部分来构建它们。这样做的好处是,我可以使用 hyperref 跳转到页面。
但是,使用此代码只能将文本添加到目录中,但我希望对它们进行编号,就像我编写了普通的 \section 一样。
\phantomsection\addcontentsline{toc}{chapter}{SI-System}
\includepdf[pages=1-3,pagecommand={\thispagestyle{plain}}]{02-SI.pdf}
答案1
您可以使用命令addtotoc
的选项\includepdf
;此选项的语法
addtotoc={<page number>,<section>,<level>,<heading>,<label>}
其中<page number>
是插入文档的页码(将从目录链接到该页码),<section>
是 LaTeX 章节名称(例如,章节、小节,...),<level>
表示章节的深度(例如,1 表示章节级别,2 表示小节级别,...),<heading>
是插入目录中的标题,是可以用和
<label>
引用的标签名称。\ref
\pageref
使用当前方法,您可以使用\numberline
将相应部分单元的编号添加到目录;例如,您可以这样说:
\phantomsection\addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}SI-System}
以下是 addtotoc 选项的使用示例(由马可·丹尼尔):
\RequirePackage{filecontents}
\begin{filecontents}{\jobname-a5.tex}
\documentclass[english,paper=a5]{scrartcl}
\usepackage{geometry}
\usepackage{babel,blindtext}
\begin{document}
\Blinddocument
\end{document}
\end{filecontents}
\documentclass{scrartcl}
\immediate\write18{pdflatex \jobname-a5.tex}
\usepackage{pdfpages,lipsum}
\includepdfset{frame,noautoscale}
\setlength{\fboxrule}{5pt}
\begin{document}
\tableofcontents
\section{foo}
\lipsum[1]
\includepdf[pages=-,addtotoc={1,section,1,Eintrag im Inhaltsverzeichnis,mylabel}]{\jobname-a5}
\end{document}
例如将文件另存为,test.tex
然后使用以下方式运行
pdflatex --shell-escape test
答案2
我现在通过自己定义编号来解决这个问题:
\renewcommand{\chapter}[1]{
\setcounter{section}{0}
\addtocounter{chapter}{1}
\phantomsection\addcontentsline{toc}{chapter}
{\protect\numberline{\thechapter}#1}
}
\renewcommand{\section}[1]{
\addtocounter{section}{1}
\phantomsection\addcontentsline{toc}{section}
{\protect\numberline{\thesection}#1}
}
并使用这些重新定义的章节和部分命令。