细节:
- 我希望我的
\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
,,关注m
的b
是整行中列单元格指定基线的相对对齐;而h
,f
关注的是单个单元格的绝对对齐 - 列宽
- 标题行的特殊垂直对齐
- 标题行的格式
答案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
etoc
etc)可能不适用于此 - 内容条目不再可点击/链接(
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
使用
欢迎提出任何建议、修复错误或改进