我即将撰写论文,最终决定使用 LaTeX 撰写。不过我对它还不熟悉,想知道目录中是否可以有这样的内容:
--+
|
I |
N | Topic 1 ................ 1
T | Topic 2 ................ 3
R | Subtopic 1 ......... 4
O |
|
--+
|
T | Topic 3 ................ 6
H | Topic 4 ................ 8
E | Subtopic ........... 9
O | Subsub ......... 11
R | ... etc
Y |
|
--+
如果可能的话,左边使用的行不应该是 ASCII 字符,并且左边的文本是章节名称,以防不清楚:-)
编辑
好的,我将在这里附加一个 mwe,尽管它目前的形式确实没有任何意义。
\documentclass[a4paper]{book}
\begin{document}
\tableofcontents
\chapter{Intro}
\section{Topic 1}
\section{Topic 2}
\subsection{Subtopic 1}
\chapter{Theory}
\section{Topic 3}
\section{Topic 4}
\subsection{Subtopic}
\subsubsection{Subsub}
\section{... etc}
\end{document}
这将生成以下目录,我想将章节名称(简介和理论)移到一边,如上面的 ASCII 图形所示。
答案1
请参见下面的替代演示,以获得更佳的外观。
原始陈述
这是一个问题能, 不是应该。首先,阅读垂直文本对眼睛来说不太舒服。其次,如果章节标题太长,您可能需要缩写以使其适合分配给目录列表的垂直空间。
因此,我使用可选参数来处理它,因为
\chapter[\boxtoc{T h e o r y}{4}]{Theory}
其中\boxtoc{}{}
,宏用于在目录中垂直设置标题,第一个参数是一个可能缩写的章节标题,该标题以空格分隔(如果做更多的工作,我可以让宏来处理这个问题),第二个参数是\baselineskip
您希望为垂直框分配多少个框;但是,如果章节名称太长,它可能会使框的垂直范围超出参数分配的范围#2\baselineskip
。
为了实现其目标,\boxtoc
使用ed\llap
堆栈\fbox
。堆栈放置在固定宽度的 中\makebox
,以确保所有垂直章节标题的宽度均匀。
book
除非采取特殊规定,否则这种方法会搞砸类标题,但我把这个修复留给其他人。
已编辑,用白块覆盖遮住章节编号。
\documentclass[a4paper]{book}
\usepackage{stackengine,color}
\setstackgap{L}{.75\baselineskip}
\newcommand\boxtoc[2]{%
\smash{\llap{\fbox{\protect\rule[-#2\baselineskip]{0pt}{#2\baselineskip}%
\protect\makebox[2ex]{\Longunderstack{#1}}}%
\kern\fboxrule\usebox{\whiteblock}}}%
}
\newsavebox\whiteblock
\savebox\whiteblock{\textcolor{white}{\protect\rule{.3in}{2ex}}}
\begin{document}
\tableofcontents
\chapter[\boxtoc{I n t r o}{3}]{Intro}
\section{Topic 1}
\section{Topic 2}
\subsection{Subtopic 1}
\chapter[\boxtoc{T h e o r y}{4}]{Theory}
\section{Topic 3}
\section{Topic 4}
\subsection{Subtopic}
\subsubsection{Subsub}
\section{... etc}
\end{document}
注意:由于某种原因,此方法与该包不兼容xcolor
;但是,它可以与该包一起正常工作color
。
替代呈现
感谢 JúdaRonén 在评论中提出的旋转拉丁文本的建议。在我看来,这样看起来更好。在这种情况下,可选章节名称中不应引入空格。
\documentclass[a4paper]{book}
\usepackage{color,graphicx}
\newcommand\boxtoc[2]{%
\smash{\llap{\fbox{%
\protect\Rotatebox{\protect\makebox[#2\baselineskip][r]{\strut#1}}}%
\kern\fboxrule\protect\Whiteblock}}%
}
\def\Rotatebox#1{\rotatebox[origin=r]{90}{#1}}
\def\Whiteblock{\textcolor{white}{\protect\rule{.3in}{2ex}}}
\begin{document}
\tableofcontents
\chapter[\boxtoc{Intro}{3}]{Intro}
\section{Topic 1}
\section{Topic 2}
\subsection{Subtopic 1}
\chapter[\boxtoc{Theory}{4}]{Theory}
\section{Topic 3}
\section{Topic 4}
\subsection{Subtopic}
\subsubsection{Subsub}
\section{... etc}
\end{document}