目录为带有边框和内容的实际表格

目录为带有边框和内容的实际表格

细节:

  • 我希望我的\tableofcontents实际显示为表格
  • 我正在使用乳胶
  • 我追踪了该命令的作用\tableofcontents,最后
    发现\contentsline宏链没有将\thechapter和保存\chaptername为不同的实体
  • ...因此,目前将它修改为表格对我来说似乎很困难
  • 包装手册中也提到了这一点[A] tocloft第 24 页

就当前的目的而言,通常不可能单独处理标题和其编号的排版,因为两者都捆绑在 \contentsline 内的 <title> 参数中。

平均能量损失

最低工作示例(按要求)这里):

默认:

\documentclass{report}
\begin{document}

\tableofcontents

\chapter{First sdddsssss %
        sssssssssssssssssssss ssssssssssssss ssssssss sssssss %
        ssssssssss sssssssssss sssssssssssssss ssssss ssssssss %
        sssssssssssss sssssssss}
\chapter{Second}

\end{document}

默认目录

目标

(嗯,有点!作为tabularray 包,名字不错,但似乎正交在它的功能实现上,所以我仍然无法正确地定义它里面的所有内容,但这将工作

\documentclass{report}
\usepackage{tabularray}
\begin{document}

%\begin{tblr}{| m{1em} | m{9cm} | m{2cm} |}
\begin{tblr}{| c | m{9cm} | m{2cm} |}
    \hline
    \bfseries thechapter & \bfseries chaptername & \bfseries comments \\ 
    \hline
    1 & First sdddsssss %
    sssssssssssssssssssss ssssssssssssss ssssssss sssssss %
    ssssssssss sssssssssss sssssssssssssss ssssss ssssssss %
    sssssssssssss sssssssss & \\ 
    \hline
    2 & Second & \\ 
    \hline
\end{tblr}
\end{document}

需要“目录”

附言:

正交性表格数组:

我想指定以下选项:

  • 水平排列(l、c、r)
  • 垂直排列(t、m、b、h、f)
    更新:我认为t,,关注mb是整行中列单元格指定基线的相对对齐;而hf关注的是单个单元格的绝对对齐
  • 列宽
  • 标题行的特殊垂直对齐
  • 标题行的格式

答案1

我用来在表格中获取目录的完美而不完美的解决方案是:

(是的,改变格式是故意的,即稍微减少了规则,为了完整性添加了章节子项和页码)

\documentclass{report}

% Table spanning pages
\usepackage{longtable}

\usepackage{ifthen}

% Vertically padded hlines or rules
% \usepackage{booktabs}

% Padded Rule
\newcommand{\prule}{\noalign{\smallskip}\hline\noalign{\smallskip}}

% Extract (.sty, \usepackage): Modify toc commands for table
\renewcommand{\numberline}[1]{#1 & }%\bfseries}
\def\contentsline#1#2#3#4{\gdef\@contentsline@destination{#4}%
    \ifthenelse{\equal{#1}{chapter}}{\\ \prule}{ \\ }
    #2 & #3 &
}
\newcommand{\mytoc}{
    \begin{longtable}{  p{5mm} | p{6.5cm} | p{1cm} | p{2cm}  }
        % \toprule
        \bfseries sr & \bfseries chaptername & \bfseries pg & \bfseries comments
        \input{\jobname.toc} \\
        % chktex "Command terminated with space" is wrong (VSCodium: LaTeX Workshop)
        % Do NOT use \prule{}
        \prule 
    \end{longtable}
}

\begin{document}

% Run this command to update the toc file, then recomment again
% \tableofcontents

\mytoc{}

\chapter{First sdddsssss %
    sssssssssssssssssssss ssssssssssssss ssssssss sssssss %
    ssssssssss sssssssssss sssssssssssssss ssssss ssssssss %
    sssssssssssss sssssssss}
\section{Child}
\section{Child}
\chapter{Second}

\end{document}

条件规则

这是“完美的不完美”,因为:

  • 它起作用了,而其他东西都不起作用(因此很完美)
  • 章节缩进需要关于-也实施了
  • 处理目录修改的软件包(例如bookmark etocetc)可能不适用于此
  • 内容条目不再可点击/链接(hyperref包)

注2023.05.14:

  • 禁用与 tex 相关的构建任务中的自动“清理”选项,例如 VSCodium 中的“LaTeX Workshop”扩展 (老实说,如果在 TXS 中编译,那么扩展 TeXLab 和 vscode-pdf 就足够了,只需使用愚蠢的禁用这个愚蠢的 latex-workshop 扩展chktex

    旧观点: 虽然在 TeXStudio (TXS) 中很容易;但在 VSCodium 中,运行latexmk和注释掉它就成了一项艰巨的任务。尝试使用以下内部定义来避免这种情况,但都不起作用:或chktex\tableofcontents\mytoc\makeatletter\@starttoc{toc}\makeatother生成 .toc 文件但不生成 ToC
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.latex.autoBuild.cleanAndRetry.enabled": false,

自原始答案以来的更改:

  • 修复(末尾的垂直规则):将对移到\makeat*表格外
  • Dev:删除@使用命令,因此也删除该\makeat*
  • 新的 (有条件的1 hlines):hline章节之前 (todo: “逻辑或“与“部分”)对子项进行分组(*部分)
  • 新增:页面栏,方便其他人查看答案的完整性
  • 新功能:\prule易于\mytoc使用

欢迎提出任何建议、修复错误或改进

相关内容