如何在 showexpl/LTXexample 环境和周围文本以及标题之间添加垂直空间?

如何在 showexpl/LTXexample 环境和周围文本以及标题之间添加垂直空间?

以下 LaTeX 文档:

\documentclass{amsart}

\usepackage{showexpl}

\begin{document}

Lorem ipsum dolor sit amet, ut ius vero dolores.

\begin{LTXexample}[caption=Example]
\documentclass{amsart}
\begin{document}
    Hello, world!
\end{document}
\end{LTXexample}

Te tollit ignota suscipit eum, id omnes corrumpit deseruisse duo, oblique recusabo qui eu.

\end{document}

产生以下 pdf 渲染结果:

上述 LaTeX 代码的 pdf 渲染

如何在列表标题上方 (1) 和下方 (2) 以及列表和以下段落之间 (3) 添加空格?


我尝试的解决方案

根据包装showexpl的用户手册(第 1 页第 2 节“使用”下)

showexpl本身不知道任何选项,但底层包(listingsgraphicx)的所有选项都将传递给相应的包。

根据包装listings的用户手册(第 2.7 节‘布局元素’下,第 16 页‘垂直空间’段落)

这些键aboveskipbelowskip控制所显示列表上方和下方的垂直空间。

因此,我尝试aboveskip=25pt分别添加belowskip=25pt作为LTXexample环境选项。

aboveskip选项在标题下方添加了空间,但输出不再相对于代码垂直居中:

添加 aboveskip 选项的结果

另一方面,该belowskip选项导致 LaTeX 编译器失败并显示以下错误消息:

ERROR: Missing number, treated as zero.

--- TeX said ---  
<to be read again> 
                   \let  
l.14 \end{LTXexample}

--- HELP ---
This is usually caused by a LaTeX command expecting but not finding either a number
or a length as an argument. You may have omitted an argument, or a square bracket
in the text may have been mistaken for the beginning of an optional argument. This
error is also caused by putting \protect in front of either a length command or a
command such as \value that produces a number.

答案1

这里我依靠包\addstackgap[<length>]{}中的stackengine来提供间隙。但是,这里的怪癖是LTXexample不能进入\hbox,而只能进入\vbox。因此,我将其保存在临时文件中\box0,然后使用\makebox设置\box0在全宽框中,我可以向其中添加堆叠间隙,这里显示两次,一次是 5pt 间隙,然后是 25pt 间隙。

\documentclass{amsart}
\usepackage{showexpl,stackengine}
\begin{document}
Lorem ipsum dolor sit amet, ut ius vero dolores.

\setbox0=\vbox{
\begin{LTXexample}[caption=Example]
\documentclass{amsart}
\begin{document}
    Hello, world!
\end{document}
\end{LTXexample}
}
\noindent\addstackgap[5pt]{\makebox[\textwidth]{\box0}}
Te tollit ignota suscipit eum, id omnes corrumpit deseruisse duo, oblique recusabo qui eu.

\setbox0=\vbox{
\begin{LTXexample}[caption=Example]
\documentclass{amsart}
\begin{document}
    Hello, world!
\end{document}
\end{LTXexample}
}
\noindent\addstackgap[25pt]{\makebox[\textwidth]{\box0}}
Te tollit ignota suscipit eum, id omnes corrumpit deseruisse duo, oblique recusabo qui eu.
\end{document}

在此处输入图片描述

答案2

正如 Ulrike Fischer 所说建议,解决我的问题的最佳实用方法是转储showexpl包,转而使用功能强大且可无限定制的tcolorbox包裹

相关内容