使用 lstinputlisting 强制将图形放置在文本中

使用 lstinputlisting 强制将图形放置在文本中

我到处寻找,找到了使用\usepackage{float}for处理图像的方法\includegraphics。但我也有来自.txt文件中的文本\lstinputlisting,我也想强制执行。

我不太明白关于放置工作如何进行的文档。

5.1 空间与位置

浮点数=[*]<tbphi 的子集>或者float   浮动放置
只对单个显示的列表有意义,并允许它们浮动。该参数控制允许 LATEX 放置浮动的位置:在当前/下一页的顶部或底部、在单独的页面上,或者在列表所在的位置。可选的星号可用于在双列文档中获取双列浮动

浮动位置=<位置说明符>   氘氘
如果使用浮点数而没有值,则用作位置说明符。

有什么想法我可以如何强制使用下面的代码\lstinputlisting吗?

\lstinputlisting[float=h,frame=tb,
    caption=Iteration: 2. Variable importance for unpruned decision tree ,captionpos=b, belowcaptionskip=2cm ,label=zebra]{results/maybe_80_20.txt}

答案1

软件包listings支持非浮动列表的标题。请参阅手册中第 5.7 节“标题”的初始段落listings

尽管 LaTeX 标准行为如此,但标题和浮动在这里是彼此独立的;您可以将标题与非浮动列表一起使用。

因此,您可以简单地float从示例中删除该选项并使用,例如:

\documentclass{article}
\usepackage{listings}
\usepackage{mwe}

\begin{document}
\blindtext

\lstinputlisting[frame=tb,caption=Source of this file,
  captionpos=b,belowcaptionskip=2cm,
  label=zebra]{\jobname.tex}

\blindtext
\end{document}

要得到

enter image description here

您只需要float对那些应该浮动的列表使用选项。

注意:还允许在带有标题的非浮动列表中使用分页符!因此,如果不允许分页符,则listings必须在它们周围使用或\parboxminipage

\documentclass{article}
\usepackage{listings}
\usepackage{mwe}

\begin{document}
\blindtext[3]

\noindent\begin{minipage}{\linewidth}
\lstinputlisting[frame=tb,caption=Source of this file,
  captionpos=b,belowcaptionskip=2cm,
  label=zebra]{\jobname.tex}
\end{minipage}

\blindtext
\end{document}

结果是:

good result

尽管

\documentclass{article}
\usepackage{listings}
\usepackage{mwe}

\begin{document}
\blindtext[3]

%\noindent\begin{minipage}{\linewidth}
\lstinputlisting[frame=tb,caption=Source of this file,
  captionpos=b,belowcaptionskip=2cm,
  label=zebra]{\jobname.tex}
%\end{minipage}

\blindtext
\end{document}

结果是:

not so good restult

顺便说一句:H包的选项float不能与以下内容一起使用\lstinputlisting

% CAVEAT: THIS WILL NOT WORK! DON'T DO IT!!!
\documentclass{article}
\usepackage{float}
\usepackage{listings}
\usepackage{mwe}

\begin{document}
\blindtext

\lstinputlisting[float=H,frame=tb,
  caption=Source of this file,
  captionpos=b,belowcaptionskip=2cm,
  label=zebra]{\jobname.tex}

\blindtext
\end{document}

会导致

the listing is missing

如您所见,列表丢失(没有任何错误消息)。所以:不要这样做!

相关内容