![带有 scrreprt 的 \listoffigures 没有分页符](https://linux22.com/image/293823/%E5%B8%A6%E6%9C%89%20scrreprt%20%E7%9A%84%20%5Clistoffigures%20%E6%B2%A1%E6%9C%89%E5%88%86%E9%A1%B5%E7%AC%A6.png)
我列出了三个列表:\listoffigures
、\listoftables
和\lstlistoflistings
。但是每个列表都在一个新页面上。我不想在每个列表后都设置分页符,而是希望将这三个列表都列在一页上。
经过一番谷歌搜索,我发现此行为与文档类有关。我的文档正在使用scrreprt
,我无法(不想)更改类型。
如果我没记错的话,我需要重写/覆盖这些命令来删除分页符。但我不知道该怎么做。
答案1
一种方法是放松\clearpage
,即在被调用时不执行任何操作。
其他可能性(不在这里):重新定义命令\listoftables
等,并删除\clearpage
其中的内容或使用etoolbox
包来修补它们或 LariFaRi 评论中的链接中给出的答案。
当然,如果内容列表包含太多条目,一页就放不下。
\documentclass[paper=a4,12pt]{scrreprt}
\usepackage{listings}
\usepackage{hyperref}
\begin{document}
\let\LaTeXStandardClearpage\clearpage
\let\clearpage\relax % Do nothing when a \clearpage command appears
\listoffigures
\listoftables
\lstlistoflistings
\let\clearpage\LaTeXStandardClearpage % Return to the old definition
\chapter{First}
\begin{figure}
\caption{Dummy figure}
\end{figure}
\newpage
\begin{table}
\caption{Dummy table}
\end{table}
\chapter{Second}
\section{First}
\begin{lstlisting}[language=C, caption={Hello World in C}]
#include <stdio.h>
\int main( void )
{
printf("Hello World\n");
return(0);
}
\end{lstlisting}
\end{document}