![如何在 showexpl/LTXexample 环境和周围文本以及标题之间添加垂直空间?](https://linux22.com/image/355466/%E5%A6%82%E4%BD%95%E5%9C%A8%20showexpl%2FLTXexample%20%E7%8E%AF%E5%A2%83%E5%92%8C%E5%91%A8%E5%9B%B4%E6%96%87%E6%9C%AC%E4%BB%A5%E5%8F%8A%E6%A0%87%E9%A2%98%E4%B9%8B%E9%97%B4%E6%B7%BB%E5%8A%A0%E5%9E%82%E7%9B%B4%E7%A9%BA%E9%97%B4%EF%BC%9F.png)
以下 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 渲染结果:
如何在列表标题上方 (1) 和下方 (2) 以及列表和以下段落之间 (3) 添加空格?
我尝试的解决方案
根据包装showexpl
的用户手册(第 1 页第 2 节“使用”下)
showexpl
本身不知道任何选项,但底层包(listings
和graphicx
)的所有选项都将传递给相应的包。
根据包装listings
的用户手册(第 2.7 节‘布局元素’下,第 16 页‘垂直空间’段落)
这些键
aboveskip
和belowskip
控制所显示列表上方和下方的垂直空间。
因此,我尝试aboveskip=25pt
分别添加belowskip=25pt
作为LTXexample
环境选项。
该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
包裹。