回忆录两栏目录

回忆录两栏目录

我对目录的这个方面感到很困惑。我有一个单列文档,但需要一个双列目录。默认情况下,会\twocoltocetc产生单列文档所不期望的结果,将目录部分标题也放在双列环境中,而不是正常放置。我认为这是 memoir.cls 中第 7732 行定义的限制,其中\twocolumn被调用。似乎存在一个限制,即\twocolumn\onecolumn开关始终必须从新页面开始,如 Peter Wilsons 的注释所示这里

Peter 建议使用multicols环境来完成这样的任务,我也在第 163 页找到了一个例子梅曼其中 multicols 环境添加到 .toc 中\addtocontents{toc}{\protect\begin{multicols}{2}}

经过修改,我可以创建以下环境,当我将整个文档包装在其中时,我可以根据需要生成目录。

\newenvironment{twocoltoc}[1]{%
   \addtocontents{toc}{\protect\begin{multicols}{2}}}%
   {\addtocontents{toc}{\protect\end{multicols}}}

不过,这感觉相当笨重。我也可以直接放置\addtocontents...而不是使用环境。我希望有一个单一的调用函数来实现这个目标,类似于\twocoltocetc。我需要一种方法来在生成其余行之后在末尾添加一行.toc,但我不太确定如何实现这一点。它必须在的核心中,starttoc{toc}但我不确定在哪里可以找到它。

这是我的测试文件,展示了我目前所拥有的内容,它产生了理想的输出,但并不优雅。

\documentclass[letterpaper, 10pt]{memoir}
\usepackage{multicol}
\usepackage{xparse}

\maxtocdepth{subsection}

\newif\ifwanttwocoltoc
\wanttwocoltocfalse

\NewDocumentCommand{\twocoltoc}{}{
    \addtocontents{toc}{\protect\begin{multicols}{2}}%
    \wanttwocoltoctrue
}

\NewDocumentCommand{\maketoc}{}{
    \tableofcontents
    \ifwanttwocoltoc
        % \addtocontents{toc}{\protect\end{multicols}}
}

\begin{document}

\twocoltoc
\maketoc
 
\chapter{Chapter}
\section{Section}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\subsection{Subsection}
\section{Section}
\subsection{Subsection}
\section{Section}
\chapter{Chapter}

\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\section{Section}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\section{Section}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\section{Section}

\chapter{Chapter}
\section{Section}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}


{\addtocontents{toc}{\protect\end{multicols}}}
\end{document}

附言:提到的例子中有一个拼写错误\end{multocols}

答案1

我认为这个答案符合原作者想要的答案,但是有一个小问题。

% twocoltocprob.tex  SE 637513

\documentclass[letterpaper, 10pt]{memoir}

\usepackage{comment}

\begin{comment}    %%% OPs code
\usepackage{multicol}
\usepackage{xparse}

\maxtocdepth{subsection}

\newif\ifwanttwocoltoc
\wanttwocoltocfalse

\NewDocumentCommand{\twocoltoc}{}{
    \addtocontents{toc}{\protect\begin{multicols}{2}}%
    \wanttwocoltoctrue
}

\NewDocumentCommand{\maketoc}{}{
    \tableofcontents
    \ifwanttwocoltoc
        % \addtocontents{toc}{\protect\end{multicols}}
}

\setlength{\textheight}{0.33\textheight}

\begin{document}

\twocoltoc
\maketoc

\end{comment}  %% end of OPs code

%\begin{comment}  %% my code

\setlength{\textheight}{0.4\textheight}

\usepackage{lipsum}
\usepackage{multicol}

\newcommand{\twocoltoc}{\tableofcontents%
  \addtocontents{toc}{\protect\begin{multicols}{2}}}
  
\renewcommand{\twocoltoc}{\addtocontents{toc}{\protect\begin{multicols}{2}}
  \tableofcontents}
  

\begin{document}

%%%% regular (my) code for the ToC
\twocoltoc

\end{document}

%%% OPs division codes

\chapter{Chapter}
\lipsum[1]
\section{Section}
\lipsum[2]
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\subsection{Subsection}
\section{Section}
\subsection{Subsection}
\section{Section}
\chapter{Chapter}

%%%%\end{document}

\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\section{Section}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\section{Section}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}
\subsection{Subsection}
\subsubsection{Subsubsection}
\subsection{Subsection}
\section{Section}

\chapter{Chapter}
\section{Section}
\section{Section}
\subsection{Subsection}
\subsection{Subsection}


%% {\addtocontents{toc}{\protect\end{multicols}}}
\end{document}

我认为输出是 OP 想要的,但在处理上述内容时,我收到一条错误消息file ended scanning use of \next。但是,忽略这一点,输出是我认为 OP 想要的。

有人能帮忙解决这个\next问题吗?

在此处输入图片描述

相关内容