TOC 行内类似 tabto 的功能

TOC 行内类似 tabto 的功能

我目前正在尝试在文档中创建一个条目列表(内容对此并不重要),并\addcontentsline{toc}{subsection}在目录中为每个条目添加一行。

现在,目录中的每一行不仅应包含条目名称,还应包含 2 或 3 条额外信息,以作为快速参考。虽然我可以用一些固定的间距添加它们,但由于字长不等,看起来会很乱。相反,我想要基本的制表符功能,以便目录中的术语整齐地排列在一起。

这是我想要实现的目标的想法:

目录

1. Chaptername
E1Info1         E1Info2       E1Info3      E1Info4................Pg#
Entry2Info1aaa  E2Inf2        Entry2Info3  E2Inf4.................Pg#
Testname        5             None         Rring..................Pg#

等等。

\documentclass{article}
\usepackage{graphicx}
\usepackage[hidelinks]{hyperref}
\usepackage{tabularx}
\usepackage{tabto}
\usepackage{booktabs}
\usepackage[a4paper, top=.5cm, bottom=.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage[utf8]{luainputenc}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}

\newcommand{\entry}[5]{
\addcontentsline{toc}{subsection}{#1 #2 #3 #4}
\begin{tabularx}{\linewidth}{XXXR}
\textbf{#1} & Karmakosten: #2 & Limitierungen: #3 & #4\\
\bottomrule
\end{tabularx}
\medskip

\noindent
#5
\medskip

\hrule}


\begin{document}
\tableofcontents

\section{Testsection}
\entry{E1Info1}{E1Info2}{E1Info3}{E1Info4}{Foo}
\entry{Entry2Info1aaa}{E2Inf2}{Entry2Info3}{E2Inf4}{Bar}
\entry{Testname}{5}{None}{Rring}{Testtext}
\end{document}

争论的焦点是\addcontentsline{toc}{subsection}{#1 #2 #3 #4}:我需要找到一种方法来分隔这 4 个条目,这样,无论前一个术语的字长如何,下一个术语都将从特定点开始,这样,例如#2目录中的所有术语都可以整齐地排列在一起。问题是,我通常用于解决此类对齐问题的方法(tabular 或 tabto)在命令中不能很好地发挥作用\addcontentsline

答案1

密切关注已发布的 MWE:

\documentclass{article}
\usepackage{graphicx}
\usepackage[hidelinks]{hyperref}
\usepackage{tabularx}
\usepackage{tabto}
\usepackage{booktabs}
\usepackage[a4paper, top=.5cm, bottom=.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage[utf8]{luainputenc}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}

\newcommand{\entry}[5]{%
  \addtocontents{toc}{\unexpanded{\unexpanded{%
                      \noindent #1\tab #2\tab #3\dotfill #4\par}}}%
\begin{tabularx}{\linewidth}{XXXR}
\textbf{#1} & Karmakosten: #2 & Limitierungen: #3 & #4\\
\bottomrule
\end{tabularx}
\medskip

\noindent
#5
\medskip

\hrule}


\begin{document}
\NumTabs{4}
\tableofcontents

\section{Testsection}
\entry{E1Info1}{E1Info2}{E1Info3}{E1Info4}{Foo}
\entry{Entry2Info1aaa}{E2Inf2}{Entry2Info3}{E2Inf4}{Bar}
\entry{Testname}{5}{None}{Rring}{Testtext}
\end{document}

生产

在此处输入图片描述

评论:

  • 目录看起来与预期的差不多,但在现实生活中,您需要超链接。这是可能的,例如,\label/\ref也许可以通过帮助\label某些人来实现\phantomsection。但提供的信息太少了。

  • 显然,这种方法值得怀疑,因为它将数据添加到目录文件中,如果文档中有多个目录,这些数据将添加到文档中的所有目录中。但是,一些重要信息以及数据在文档中的具体包含方式以及如何引用这些数据却缺乏。

  • 文档主体显然存在问题,每个文档都\entry执行自己的 tabularx。由于这似乎不是我所问的问题,所以我将其留在了 MWE 中。

相关内容