在我的 LaTeX 中beamer
演示文稿我有一个很长的目录,它被分成两列,使用multicol
包。问题是我还没有找到任何方法来控制环境中的垂直对齐multicols
。现在左列的起始位置低于右列,这看起来很奇怪。相反,我希望左列或两列都垂直对齐到顶部。
我发现了一些相关问题,但没有一个能解决我的问题。
看看下面显示的 MWE。正如您在第 3 节之前看到的,我尝试添加一个\vfill
沿手动分栏符的分栏符,但没有帮助……(添加手动分栏符是为了将第 3 节的子节与目录中的节放在一起)。
你有什么诀窍吗?
ToC 幻灯片的屏幕截图:
梅威瑟:
% MWE showing problems with vertical spacing in multicol ToC
\pagenumbering{arabic}
\documentclass[compress,14pt,t]{beamer}
\usepackage[latin1]{inputenc}
\usepackage{multicol}
\usepackage{charter}
\frenchspacing
\begin{document}
\begin{frame}
\frametitle{Outline}
\begin{multicols}{2}
\tableofcontents
\end{multicols}
\end{frame}
\section{Section 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 4}
\begin{frame}Test\end{frame}
\section{Section 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\addtocontents{toc}{\newpage} % Splits manually the ToC into 2 columns
%\addtocontents{toc}{\vfill\newpage} % No difference
\section{Section 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\section{Section 4}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 4}
\begin{frame}Test\end{frame}
\section{Section 5}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\end{document}
答案1
如果您不介意自己设置“断点”,那么这种方法应该可行。至少使用这种方法您不必弄乱 ToC 条目。
\pagenumbering{arabic}
\documentclass[compress,14pt,t]{beamer}
\usepackage[latin1]{inputenc}
\usepackage{multicol}
\usepackage{charter}
\frenchspacing
\begin{document}
\begin{frame}
\frametitle{Outline}
\begin{columns}[t]
\begin{column}{.5\textwidth}
\tableofcontents[sections={1-3}]
\end{column}
\begin{column}{.5\textwidth}
\tableofcontents[sections={4-5}]
\end{column}
\end{columns}
\end{frame}
\section{Section 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 4}
\begin{frame}Test\end{frame}
\section{Section 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\section{Section 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\section{Section 4}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 4}
\begin{frame}Test\end{frame}
\section{Section 5}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\end{document}
答案2
除非有人能找到合适的解决方案,否则你可能需要考虑以下肮脏的黑客手段:
\pagenumbering{arabic}
\documentclass[compress,14pt,t]{beamer}
\usepackage[latin1]{inputenc}
\usepackage{multicol}
\usepackage{charter}
\frenchspacing
\begin{document}
\begin{frame}
\frametitle{Outline}
\begin{multicols}{2}
\tableofcontents
\end{multicols}
\end{frame}
\addtocontents{toc}{\vskip -1.9cm} %new code
\section{Section 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 4}
\begin{frame}Test\end{frame}
\addtocontents{toc}{\vskip -1.9cm} %new code
\section{Section 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\addtocontents{toc}{\vfill\newpage}
\section{Section 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\section{Section 4}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 4}
\begin{frame}Test\end{frame}
\section{Section 5}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\end{document}
这个想法是尝试\addtocontents{toc}
在目录的第一部分和第二部分之前添加负的 vskips,以便手动确定它们的垂直对齐方式。这仅在使用 a 调用列分隔符时才有效\vfill\newpage
,当然,只要您添加或删除一个部分/子部分,它就会中断(您必须重新计算所需的 vskips)。不要忘记编译两次以获得最终结果(如屏幕截图所示)。
卑鄙手段 #2
\pagenumbering{arabic}
\documentclass[compress,14pt,t]{beamer}
\usepackage[latin1]{inputenc}
\usepackage{multicol}
\usepackage{charter}
\frenchspacing
\begin{document}
\begin{frame}
\frametitle{Outline}
\begin{multicols}{2}
\tableofcontents
\end{multicols}
\end{frame}
\addtocontents{toc}{\vskip -0.1cm} %new code
\section{Section 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 4}
\begin{frame}Test\end{frame}
\section{Section 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\section{Section 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\addtocontents{toc}{\vfill\newpage} %new code
\section{Section 4}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\begin{frame}Test\end{frame}
\subsection{Subsection 3}
\begin{frame}Test\end{frame}
\subsection{Subsection 4}
\begin{frame}Test\end{frame}
\section{Section 5}
\begin{frame}Test\end{frame}
\subsection{Subsection 1}
\begin{frame}Test\end{frame}
\subsection{Subsection 2}
\addtocontents{toc}{\vskip 3cm} %new code
\begin{frame}Test\end{frame}
\end{document}
这次我只是添加了\newpage
(和以前一样)并将第 5 节向上移动一些正 vskip,位于\section{Section 5}
第 5 节最后一帧之后但之前。否则它不起作用。因为我觉得第二列比第一列高一点,所以我在第一节之前添加了一个小的负 vskip。