目录中的垂直章节标题

目录中的垂直章节标题

我即将撰写论文,最终决定使用 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 图形所示。

MWE 输出

答案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}

在此处输入图片描述

相关内容