我目前采用以下方式在报告中插入代码,因为我通常不希望在代码示例中添加分页符。
\lstset{basicstyle=\ttfamily\footnotesize,breaklines=true}
\begin{figure}[ht]
\centering
\begin{minted}{java}
Code here...
\end{minted}
\caption{This is an example of code}
\label{fig:codeexample}
\end{figure}
但是我现在有一个多页的示例,我无法使用分页功能。有没有更好的方法可以解决这个问题?我仍然希望在报告中引用图表时使用数字。
答案1
欢迎来到 TeX.SX!
是的,我确实认为有更好的方法来实现这一点。至少在我看来是这样。
首先,正如 TeXnician 所提到的,使用图形来包含列表并不是很合适。我建议listings
为此使用专用环境。毕竟,图形与列表不是一回事。
除了是否应该使用figure
环境来包含列表这一哲学问题之外,还有一个实际问题:figure
环境是浮动的,不能跨页。因此,我建议采用不同的方法:
- 使用
listings
浮动来显示短代码列表,这些代码列表不会跨页显示。 - 为可以跨页的长代码列表创建一个新环境。请参阅
minted
软件包文档第 32 页,其中还提到这个问题。
展示原则的简短示例
如上所述,我们创建了一个名为 的新环境longlisting
,它将跨页面显示,并可以添加标题和标签。它还将显示在 中\listoflistings
。
\documentclass{article}
\usepackage{minted}
\usepackage{caption}
\setminted{
linenos=true,
autogobble,
}
% Create a new environment for breaking code listings across pages.
\newenvironment{longlisting}{\captionsetup{type=listing}}{}
\begin{document}
\listoflistings
\section{Let Us Make Some Listings}
\begin{longlisting}
\begin{minted}{tex}
... input a lot of code here ...
... It will break across pages ...
\end{minted}
\caption[Long Code Example]{A long code example which will break across pages.}
\label{lst:long}
\end{longlisting}
\begin{listing}
\begin{minted}{java}
... input short code here ...
... This code will not break across pages ...
\end{minted}
\caption[Short Code Example]{A shorter code example which will not break across pages.}
\label{lst:short}
\end{listing}
\end{document}
填写代码时的结果
结束语
如果我误解了您的意图,请原谅。如果您确实想将您的列表列为figure
s,您可以在我的代码中进行以下更改:
代替
\newenvironment{longlisting}{\captionsetup{type=listing}}{}
写:
\newenvironment{longlisting}{\captionsetup{type=figure}}{}
对于不可破坏的环境,只需figure
像以前一样使用即可。但正如所说,我真的不推荐这样做。