不含 \section、\chapter 等命令的目录

不含 \section、\chapter 等命令的目录

我想知道是否可以从此 MWE 获取书签列表:

\documentclass{article}
\usepackage{tikz}
\usepackage{blindtext}
\usepackage{hyperref}
\newcommand\mytitle[3]{\begin{tikzpicture} \node[ fill=red!80!white, minimum size=1cm]{#2\pdfbookmark[#3]{#2}{#1}};\end{tikzpicture}}
\begin{document}
\mytitle{labtwo}{lev zero}{0} 
\blindtext
\mytitle{labone}{lev one}{1}
\blindtext
\mytitle{labtwo}{lev two}{2}
\blindtext
\end{document}

无需使用 \section、\chapter 等命令。

答案1

有很多种方法可以获取目录和书签,而无需使用\section\subsection以及类似的命令。

以下示例定义了\bkmlevel<roman level>将级别编号映射到分段级别的宏。然后\addcontentsline可以使用它来创建书签。

代码还将书签的锚点放在节点的左上角,创建方式如下\mytitle

\documentclass{article}
\usepackage{tikz}
\usepackage{blindtext}
\usepackage[colorlinks]{hyperref}

\makeatletter
\newcommand\mytitle[3]{%
  \begin{tikzpicture}
    \node[
      fill=red!80!white,
      minimum size=1cm,
      name={#1-#3},
    ]{%
      #2%
      \def\@currentHref{#1.#3}%
      \addcontentsline{toc}{\@nameuse{bkmlevel\romannumeral#3}}{#2}%
    };
    \node[
      inner sep=0pt,
    ] at (#1-#3.north west) {\hypertarget{#1.#3}{}};
  \end{tikzpicture}%
}
\newcommand*{\bkmlevel}{section}
\newcommand*{\bkmleveli}{subsection}
\newcommand*{\bkmlevelii}{subsubsection}
\makeatother

\begin{document}
  \tableofcontents

  \mytitle{labtwo}{lev zero}{0}
  \blindtext
  \mytitle{labone}{lev one}{1}
  \blindtext
  \mytitle{labtwo}{lev two}{2}
  \blindtext
\end{document}

结果

相关内容