编辑:TLDR 摘要(正如我在评论中所写):我想从这个问题中得到什么(以及本文引用的其他几项) 是: - section number
(标签)是顶部对齐与title
+AND
我想要title
底部对齐与page number
- 在同一条线-- 当目录条目被排版时(我使用框架只是为了进行视觉调试)。
我问更改行中间项目的垂直对齐方式(用于目录条目)并在那里得到了一个建议,我应该尝试一下titletoc
。确实,在文档的第 14 页中,有一个例子看起来正是我想要的(强调部分):
...但是,我根本无法得到一个可行的例子。
第一个问题是我真的不明白那些特定的<left>
和<right>
(在 PDF 中,我无法搜索包含的括号),或者我如何更改它们。目前我在手册中看到的最接近的定义是这些定义:
\titlecontents{ <section> }[ <left> ]{ <above-code> }
{ <numbered-entry-format> }{ <numberless-entry-format> }
{ <filler-page-format> }[ <below-code> ]
\contentsmargin[ <correction> ]{ <right> }
... 显然,我已经开始<left>
了\titlecontents
- 并且我已经开始<right>
了\contentsmargin
;对吗?!
具体来说,该手册继续写道:
您需要做的就是以正确的方式放置这些元素。如果您已使用 预留了空间
\hspace*{-2pc}
,只需放置一个包含部分标签或页面的 2 pc 宽度的框,以便检索此空间;...
...但我不明白两件事:
- 这个预留空间在哪里
\hspace*{-2pc}
完成?(在\titlecontents
?) - 这个 2 件宽度的盒子应该放在哪里?(在
\titlecontents
?还是在线\addtocontents
?)
我正在尝试基于此(下面的 MWE)构建一个示例,我能得到的最接近的是对这个代码片段的分析(为了进行可视化调试而添加的字母):
\contentsmargin{-4em}
\titlecontents{part}[2.3em]
{A}
{B\filbreak C\contentslabel{2.3em}D}
{E\fbox{\hspace*{2.3em}F\rule{2.3em}{2pt}}}
{G\titlerule*[1pc]{.}H\contentspage I\nobreak}
...结果是:
...我只能说:
A
TOC 条目以(<above-code>
)开头B
,C
,D
被忽略 (<numbered-entry-format>
)E
紧接着开始(F
同时显示),直到章节编号排版完毕(<numberless-entry-format>
)- 标题按原样排版;如果没有定义宽度的段落环境(在
\addtocontents
),长线将不是休息 (手册在给出插图时没有明确说明这一点)- 如果我使用 a
minipage
来设置条目的宽度 - 那么所有内容都会居中,并且我又回到了与原始问题
- 如果我使用 a
G
打印在引导点之前 -H
(并且,我猜,也是I
)打印在引导点之后,但在页码之前(<filler-page-format>
);- 我不明白
\contentspage
那里应该做什么
- 我不明白
...这就是我所能理解的全部内容;但我真的不明白如何才能获得我想要的 TOC 条目格式。
更糟糕的是,当我用构建 MWE 时pdflatex
,它会通知以下信息:
(./test.aux) )
(see the transcript file for additional information)pdfTeX warning (dest): name
{\040\\unhbox\040\\voidb@x\040\\setbox\040\\@tempboxa\040\\hbox\040{\\color@beg
ingroup\040\\kern\040\\fboxsep\040{\040part.III}\\kern\040\\fboxsep\040\\endgra
f\040\\endgroup\040}\\@tempdima\040\\fboxrule\040\\advance\040\\@tempdima\040\\
fboxsep\040\\advance\040\\@tempdima\040\\dp\040\\@tempboxa\040\\hbox\040{\\lowe
r\040\\@tempdima\040\\hbox\040{\\vbox\040{\\hrule\040height\\fboxrule\040\\hbox
\040{\\vrule\040width\\fboxrule\040\\relax\040\\vbox\040{\\vskip\040\\fboxsep\0
40\\box\040\\@tempboxa\040\\vskip\040\\fboxsep\040}\\relax\040\\vrule\040width \fboxrule\040}\\hrule\040height\\fboxrule\040}}}\040} has been referenced but d
oes not exist, replaced by a fixed one
pdfTeX warning (dest): name{\040...{\040part.II}...\040}
has been referenced but does not exist, replaced by a fixed one
pdfTeX warning (dest): name{\040...{\040part.I}...\040}
has been referenced but does not exist, replaced by a fixed one
...因此显然有些地方出了问题——即使运行完成(并且生成了 PDF)。
那么,有人知道现有的 MWE 可以实现手册第 13/14 页上的插图titletoc
吗?或者,有人能帮忙修复 MWE 以使其实现相同的示例吗?
MWE 代码在这里:
\documentclass{book}
\usepackage{hyperref}
\hypersetup{pdftex, colorlinks=true, linkcolor=black}
\usepackage{titletoc}
% like definition for \phantomsection, but for part
% "Re: documentation for \phantomsection"
% http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2006-01/msg01612.html
\makeatletter
\def\phantompart{%
\stepcounter{part}%
\xdef\@currentHref{part.\thepart}%
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
}
\makeatother
\fboxsep=0pt % for framebox
\contentsmargin{-4em}
\titlecontents{part}[2.3em]
{A}
{B\filbreak C\contentslabel{2.3em}D}
{E\fbox{\hspace*{2.3em}F\rule{2.3em}{2pt}}}
{G\titlerule*[1pc]{.}H\contentspage I\nobreak}
\begin{document}
\tableofcontents
\phantompart %
\addtocontents{toc}{%
\protect\contentsline{part}{%
\thepart\hspace{1em}\ignorespaces %
\protect\fbox{ %
A Short Entry %
} %
} %
{ \protect\fbox{ \thepage } }
{ \protect\fbox{ part.\thepart } }% fbox doesn't show!
} %
\phantompart %
\addtocontents{toc}{%
\protect\contentsline{part}{%
\thepart\hspace{1em}\ignorespaces %
% \contentslabel{2pc} %
\protect\fbox{ %
\textbf{A longer entry here...} \\ %
Maybe something more written in this entry here, %
just to show as an illustration ... %
% \protect\end{minipage} %
} %
} %
{ \protect\fbox{ \thepage } }
{ \protect\fbox{ part.\thepart } }% fbox doesn't show!
} %
\phantompart %
\addtocontents{toc}{%
\protect\contentsline{part}{%
\thepart\hspace{1em}\ignorespaces %
\protect\fbox{ %
\protect\begin{minipage}{0.5\textwidth} %
\textbf{Another longer entry here...} \\ %
Still, some more content entered here; %
just to show as an illustration ... %
\protect\end{minipage} %
} %
} %
{ \protect\fbox{ \thepage } }
{ \protect\fbox{ part.\thepart } }% fbox doesn't show!
} %
\vspace{0.2\textheight}
Some extra text...
\end{document}
答案1
天哪——这肯定是我遇到过的最复杂的 Latex 问题之一!不过,我想我终于找到了一些线索——尽管我没想到它会如此复杂。无论如何,MWE 的强制性输出(发布在下面)在这里:
部分(“节”)编号与小页面内容顶部对齐;页码和前导符与小页面内容底部对齐。
讨论
我甚至不知道从哪里开始,对我来说有太多问题了:)
第一个问题是我选择使用“part”作为分段命令。最初,OP 代码以article
文档类开始,其中“part”不用于分段;因此我认为我也可以将其用作自定义部分。从那时起,我转向了类book
(如 OP 中一样) - 但实际上“ \part
”是定义和使用的!这使得代码的理解变得更加复杂,因为我无法判断某些东西是指“默认”的“ ” \part
- 还是指自定义的。
事实证明,\part
是经过特殊处理的,仔细查看titlesec
/titletoc
手册经常会提到这一点:
(titletoc) 此包是 titlesec 包的配套包,它处理目录条目。但是,它是一个独立的包,您可以单独使用它。...
标准部分以非标准方式写入目录条目编号。您可以使用 newparttoc 进行更改,以便 titletoc 或类似的包可以操作条目。(这仅在 \part 已重新定义时才有效。)
但请注意,newparttoc
(有点令人惊讶的是)选项为titleSEC
-不是 titleTOC
- 包裹 (这种困惑让我浪费了很多时间进行无用的 grep)
有三个类:page 类似于书本的 \part,在单个页面中;top 类似于 \chapter,它开始一个页面并将标题放在顶部;straight 适用于文本中间的标题...
如果您不使用可选参数,则只需更改 name 的类。例如:\titleclass{\part}{straight} 使部分成为 straight 类。
是的 - 但这谈论的是默认值\part
;而且由于我已将“部分”重新编程为\addcontentsline
,因此这实际上并不适用于我的示例(我认为:)
)
有两个分段命令会根据其名称执行一些额外操作并忽略类:
• \chapter 记录 \chaptertitlename 中定义的字符串,并将该内容考虑在内。
• \part 不会封装目录条目中的标签,除非您使用 newparttoc 选项。
请注意,这\part
并不适用于我的例子,但这仍然是一个重要的问题:“不封装标签“是什么意思?哪个标签?
事实证明:在 中tocloft
调用的“节号” ( snum
)titletoc
被称为目录条目的“标签”。现在,“封装标签”实际上与为什么<numbered-entry-format>
OP 中的 ( ) 被忽略有关;来自 手册\titlecontents
:
• 处于水平模式,将用在条目标题之前。与 \titleformat 一样,最后一个命令可以接受带有标题的参数。
• 如果没有标签,则与上述类似。
好的,所以没有标签 == numberless。但这意味着 OP 中的“零件”没有标签 == 是 numberless;为什么?显然显示了零件编号,并且保留了零件计数器?
要回答这个问题,需要深入了解一下\titlecontents
:
$ texdef -t latex -p titletoc titlecontents -f
\titlecontents first defined in "titletoc.sty".
\titlecontents:
\long macro:->\@ifstar {\ttl@contents {\z@ }}{\ttl@contents {\@ne }}
# through searching/grepping through `kpsewhich titletoc.sty`:
\titlecontents{ <section> }[ <left> ]{ <above-code> }
{ <numbered-entry-format> #5 }{ <numberless-entry-format> #6 }
{ <filler-page-format> }[ <below-code> ]
....
\newcommand\titlecontents{%
-> \def\ttl@contents#1#2{%
-> \def\ttl@contents@i#1#2[#3]#4#5#6#7{%
-> \ttl@tocentry{#1}{#2}{#3}{#4} {{#5}{#6}} {#7}
...
\def\numberline##1{\ignorespaces}%
\ifttl@label
{\leavevmode\strut\@firstoftwo#5{#7}\strut\kern\z@}%
\else
{\leavevmode\strut\@secondoftwo#5{#7}\strut\kern\z@}%
\fi
{#6}%
...
.. the decision ttl@label a bit above:
...
\global\ttl@labelfalse
\sbox\z@{% Unused box. It just catch the numberline
\def\numberline##1{\global\ttl@labeltrue\gdef\thecontentslabel{##1}}%
#7}% \ttl@b = current \ttl@a = previous
首先,这里必须记住,在 Latex 中构建 TOC 是一个两步过程:
- 第一个 Latex 阶段:
\addcontentsline
调用被保存到文件“.toc
”中;- 在“
.toc
”文件中,\contentsline
命令被保存
- 在“
- 第二次 Latex 传递:读回
\contentsline
“ ”中的条目.toc
,并排版目录
考虑到这一点,上述搜索实际上告诉我们(尽管读起来有点困难) - 宏实际上在“ ”文件中\titlesec
“ greps ”查找实际的字符串“ ” ;如果找到,则该条目被声明为“编号”(或带有标签) - 如果没有,则它被声明为没有标签(或无编号)。\numberline
.toc
因此 - 因为在 OP 中,我没有\numberline
从我的\addcontentsline
- 我的所有自定义部分中发出任何东西都被视为“无数”;因此<numbered-entry-format>
跳过了 ( );而是<numberless-entry-format>
应用了 ( )。
请注意,由于这两个步骤,您必须编译两次才能获得 TOC 排版;并且由于我经常忘记这一点(尤其是在崩溃后),我使用这个命令行来构建我的示例(称为a.tex
):
rm a.toc ; pdflatex a.tex && pdflatex a.tex
此外,那些脆弱的、作为 一部分添加的命令\addcontentsline
,在写入“ .toc
”文件时会被扩展;大多数情况下,这是不受欢迎的,因此\protect
必须在特定的地方发出;.toc
在第一次发送文本后,必须频繁检查文件内容,以确保没有意外的扩展。
最后要指出的是\titleformat
命令:
\titleformat{ 命令 }[ 形状 ]{ 格式 }{ 标签 }{ 间隔 }{ 前代码 }[ 后代码 ] ... 前代码是标题正文前面的代码。最后一个命令可以接受一个参数,即标题文本。但是,使用包选项显式时,必须使用 #1 明确给出标题(见下文)。
这听起来很有趣——因为查看\titlesection
,您可以具体更改标签(节号)和页码格式——但没有具体说明“标题”(目录条目的正文)。那里提到的 #1 实际上确实提供了标题——但是,与目录条目的排版无关;当遇到或\titleformat
时,它会排版文档中的“第 1 部分。测试”、“第 1 节。测试”文本(\part{Test}
\section{Test}
也浪费了不少时间去解决这个问题:)
)
回到对齐
考虑到上述titletoc
行为,我们可以回到垂直对齐问题。
这里最重要的一点是“在中线更改小页面垂直对齐方式?”的接受答案使用类似这样的方法在一行上进行顶部-顶部-底部垂直对齐:
\begin{tabular}[b]{lll}
\begin{minipage}[t]{100pt} \end{minipage}
\begin{minipage}[t]{100pt} \end{minipage}
\end{tabular}
\begin{tabular}[b]{ll}
\begin{minipage}[t]{100pt} \end{minipage}
\end{tabular}
此贴然而,对于同一个问题,注意到第一个tabular
包装minipage
s 负责顶部对齐:如果将其分解为三个表格,以便每个小页面都有自己的表格 - 则不可能再次实现顶部-顶部-底部对齐,只需使用和选项[t]
([b]
或minipage
)tabular
。
这就是问题所在——实际上,为了在目录中采用从上到下的排版方式,我们需要在格式化调用中重建这种tabular
/层次关系;但是,至少为“节号”和“页码”格式提供了单独的命令参数——并且将一个粘贴在一个中,另一个粘贴在另一个中似乎不起作用(minipage
\titlecontents
\titlecontents
\begin{environment}
\end{environment}
认为“ ! Missing } inserted.
”;表面上看,这个问题和 的上下对齐问题tocloft
也是同样的性质)。
然而,同一篇帖子还指出,是可以实现顶部-顶部-底部对齐,也可以使用三个独立的表格(每个小页面一个)——如果所有表格都保持[b]
对齐,并\raisebox
在第一个表格中使用它来“提升”内容。然而,这同样要求第二个表格中的小页面(预期高度最大的表格)的每个条目的高度都经过测量;因此可以相应地“提升”部分编号。
这意味着我们需要:
- 放入第二个小页面
\savebox
, - 然后和一起
\usebox
测量\ht
\dp
- 请注意,仅仅
\settoheight
获取实际高度是不够的;它是\ht
+\dp
- ...这意味着您还需要包含包
calc
来找到实际高度
- 请注意,仅仅
- 确保
{ <section> }
可以以\titlecontents
数字形式访问此高度,因此它可以\raisebox
- 即使原则上“章节编号”是在目录中的标题文本之前排版的(所以原则上这个高度“尚不可用”) - 确保所有这些都能通过文件往返
.toc
和两次 latex 调用
总而言之,这是一个相当复杂的问题;下面的 MWE 解决方案通过定义三个宏来处理格式:
- \tctitleformat - 从 调用
\addcontentsline
;然后调用:- \tcboxtitleformat - ,将
\protect
ed 代码发送到.toc
文件;也是在重新读取和扩展时重新计算高度的代码 - 它接受一个参数,即目录条目的标题(在
\addcontentsline
第一遍中可用) - 它通过定义一个宏来创建小页面框
\tcboxTF
,该宏的唯一目的是允许“重新实例化”小页面框没有{ <section> }
一个参数——因此它可以从\titlecontents
- \tcboxtitleformat - ,将
- \tclabelformat - 用于目录的章节编号标签部分 - 调用
{ <section> }
自\titlecontents
(使其更加令人困惑,作为论据\contentslabel[ARG]{2.3em}
)- 这将处理
\raisebox
;并期望相应的高度已经在全球范围内可用
- 这将处理
- \tcpageformat - 用于目录的页码部分 - 将从 调用
{ <filler-page-format> }
,但没有必要(留作存档)
最后一个问题是提到 OP 的“pdfTeX 警告”。基本上,事实证明调用的最后一个参数是\addtocontents
:
\addtocontents{toc}{%
% .... ....
{part.\thepart}%
}
... 必须采用以下格式{part.\thepart}
- 不允许出现空格或任何其他字符;任何此类字符显然会导致条目编号解析失败,从而不会为该条目留下有效参考。请注意,在下面的 MWE 中,作为示例,{ \protect\fbox{ part.\thepart } }
故意保留在该位置 - 因此,在 texing 时,您应该只会在终端输出中看到一个与该条目相关的“pdfTeX 警告”。
好吧,我想这就是全部内容了——不过,如果有更简单的解决方案,我当然很乐意听听:)
MWE 代码
\documentclass{book}
% \def\thepart{\arabic{part}} % no real need for this
\usepackage{calc}
\usepackage{hyperref}
\hypersetup{pdftex, colorlinks=true, linkcolor=black}
\usepackage[explicit,newparttoc]{titlesec}
\usepackage{titletoc}
\usepackage{trace}
% like definition for \phantomsection, but for part
% "Re: documentation for \phantomsection"
% http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2006-01/msg01612.html
\makeatletter
\def\phantompart{%
\stepcounter{part}%
\xdef\@currentHref{part.\thepart}%
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
}
\makeatother
\fboxsep=0pt % for framebox
\documentclass{book}
% \def\thepart{\arabic{part}} % no real need for this
\usepackage{calc}
\usepackage{hyperref}
\hypersetup{pdftex, colorlinks=true, linkcolor=black}
\usepackage[explicit,newparttoc]{titlesec}
\usepackage{titletoc}
\usepackage{trace}
% like definition for \phantomsection, but for part
% "Re: documentation for \phantomsection"
% http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2006-01/msg01612.html
\makeatletter
\def\phantompart{%
\stepcounter{part}%
\xdef\@currentHref{part.\thepart}%
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
}
\makeatother
% note \baselineskip dissapears (is 0) in tabular!
% so save the default \baselineskip in
% another variable:
\typeout{\the\baselineskip} %
\newlength{\oldbaselineskip}
\setlength{\oldbaselineskip}{\baselineskip}
% we must save the title format minipage;
% so we can extract its typeset height
\global\newsavebox\mybox
\global\newlength{\miniheight}
% save long minipage for \tctitleformat (tabular 2)
% into a box, so we can measure its height;
% we must make this into a command;
% since the title text will be passed as an argument;
% re-calc the height here too?
% must use the package calc, to use + as addition
% operator in the \setlength{\miniheight}... stanza
% ( \tctitleformat goes into addtocontents! )
\def\tcboxtitleformat#1{
\protect\gdef\protect\tcboxTF{ % inner gdef, so we can call it
% from titlecontents without an argument
\protect\begin{lrbox}{\mybox} %
\protect\begin{minipage}[t]{0.5\textwidth} %
#1 %
\protect\end{minipage} %
\protect\end{lrbox} % ... also recalc:
\global\protect\settoheight{\miniheight}{\protect\usebox\mybox} %
\global\protect\setlength{\miniheight}{\ht\mybox+\dp\mybox+1em-1.411\oldbaselineskip} %
} %
\protect\tcboxTF{}% % now that we have inner def,
% must call it separately to instantiate
\protect\typeout{----minihg-tocfile--\protect\the\miniheight-\protect\the\mybox} %
}
% \global doesn't help here;
% tocfile seems to kick in first, though;
% but only way to retrieve values, is with
% with inner gdef \tcboxTF called in \titlecontents:
% ----minihg-tocfile --39.50452pt-27 39.50452pt-27
% ----minihg-tcA --0.0pt-27 0.0pt-27
% ----minihg-tcAA --0.0pt-27 39.50452pt-27
% ----minihg-tclabelf --0.0pt-27 39.50452pt-27
\documentclass{book}
% \def\thepart{\arabic{part}} % no real need for this
\usepackage{calc}
\usepackage{hyperref}
\hypersetup{pdftex, colorlinks=true, linkcolor=black}
\usepackage[explicit,newparttoc]{titlesec}
\usepackage{titletoc}
\usepackage{trace}
% like definition for \phantomsection, but for part
% "Re: documentation for \phantomsection"
% http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2006-01/msg01612.html
\makeatletter
\def\phantompart{%
\stepcounter{part}%
\xdef\@currentHref{part.\thepart}%
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
}
\makeatother
% {minipage}[t] inside {tabular} no work here.
% must do shifting with raisebox;
\def\tclabelformat{ %
%\settoheight{\miniheight}{\usebox\mybox} % nope
\typeout{----minihg-tclabelf--\the\miniheight-\the\mybox} %
\fbox{%
\begin{tabular}[b]{l} %
\raisebox{-\miniheight}{M} % works from here ONLY; it does
% *not* work from anywhere in
% \titlecontents: {B\filbreak C\... D} !!
\thecontentslabel %
\\[0pt] %
\end{tabular} %
} %
}
% \tctitleformat goes into addtocontents!
\def\tctitleformat#1{%
\tcboxtitleformat{#1} \\[0pt] % we let this command expand when written
% to tocfile (its insides are protected);
% it just saves the box contents,
% but doesn't actually use it!
%\tcboxTF{} % tcboxTF not used here
%
% use - inside the tabular:
\protect\begin{tabular}[b]{l} %
\protect\usebox\mybox % % this is also saved in toc;
% but when contents read back from toc and ran,
% previous command 'expands' the minipage box and
% recalcs the height; and this command
% can just use (typeset) the \mybox...
\\[0pt] % % do NOT forget the linebreak! ( else,
% there will be no [b]ottom alignment of
% tabulars for the \raisebox thing!
% \protect\begin{minipage}[t]{0.5\textwidth} %
% #1 %
% \protect\end{minipage} \\[0pt] %
% \protect\traceon % no
\protect\end{tabular} %
}
\def\tcpageformat#1{ %
\fbox{ %
\protect\begin{tabular}[b]{l} %
\protect\begin{minipage}[b]{0.3\textwidth} %
#1 %
\protect\end{minipage} \\[0pt] %
\protect\end{tabular} %
}}
\let\tcboxTF\relax % must do this before \titlecontents is first called;
% if we don't give it a default value;
% \titlecontents will crash at first
% ( ! Undefined control sequence. )
% because -tcA-- may run first without a \tcboxTF run
% ( if a "real" \part was called, not a custom one )
\contentsmargin{-4em}
\titlecontents{part}[2.3em]%
{%
A%
\typeout{----minihg-tcA--\the\miniheight-\the\mybox}%
\tcboxTF{}% % call again to reinstantiate box,
% ( and retrieve values )
% \settoheight{\miniheight}{\usebox\mybox} % no need - \tcboxTF also recalcs now
\typeout{----minihg-tcAA--\the\miniheight-\the\mybox}%
}
{B\filbreak C\fbox{\contentslabel[\tclabelformat]{2.3em}}D}
{E\fbox{\hspace*{2.3em}F\rule{2.3em}{2pt}}}
% {\tcpageformat{G\titlerule*[1pc]{.}H\contentspage I}\nobreak} % box too wide
% {G\titlerule*[1pc]{.}\tcpageformat{H\contentspage }I\nobreak} % rule lost
% {G\titlerule*[1pc]{.}H\contentspage\tcpageformat{ }I\nobreak} % rule appears
{G\titlerule*[1pc]{.} \fbox{H} \contentspage \nobreak I} % is bottom aligned fine,
% so no need for \tcpageformat
% (note: cannot \fbox \titlerule)
\begin{document}
% \traceon
\tableofcontents
% for debugging:
% \section{Whatever section}
% \part{Whatever part}
\phantompart %
\addtocontents{toc}{%
\protect\contentsline{part}{%
\thepart\hspace{1em}\ignorespaces %
\protect\fbox{ %
A Short Entry %
} %
} %
{ \protect\fbox{ \thepage } }
{ \protect\fbox{ part.\thepart } }% fbox doesn't show!
} %
\phantompart %
\addtocontents{toc}{%
\protect\contentsline{part}{%
\protect\numberline{\thepart}\ignorespaces %
\protect\fbox{ %
\tctitleformat{ %
\textbf{A longer entry here...} \\ %
Maybe something more written in this entry here, %
just to show as an illustration ... %
} %
} %
} %
{ \protect\fbox{ \thepage } }
{part.\thepart}% { \protect\fbox{ part.\thepart } }% fbox doesn't show!
} %
\phantompart %
\addtocontents{toc}{%
\protect\contentsline{part}{%
\protect\numberline{\thepart}\ignorespaces %
\protect\fbox{ %
\tctitleformat{ %
\textbf{Another longer entry here...} \\ %
Still, some more content entered here; %
just to show as an illustration ... %
} %
} %
} %
{ \protect\fbox{ \thepage } } %
{part.\thepart} % { part.\thepart }% { \protect\fbox{ part.\thepart } }% fbox doesn't show! %
% also: - if just *one* space left before part.\thepart;
% then ->> "pdfTeX warning (dest): name {\040part.III} has been
% referenced but does not exist, replaced by a fixed one"
} %
\vspace{0.2\textheight}
Some extra text...
\end{document}