LaTeX lstlisting环境如何设置列表标题与目录项标题不同?
解决方法:分离代码块正文标题与目录标题
这问题我之前写LaTeX文档时也碰到过,其实listings包本身就支持把代码块的正文显示标题和List of Listings里的标题分开设置,给你两种实用的实现方式:
方法一:用带方括号的caption参数
直接在lstlisting的选项里,给caption设置「[目录标题]正文标题」的格式,就能实现两者的分离:
% 先确保加载了listings包 \usepackage{listings} \begin{lstlisting}[caption={[bar]foo}] test \end{lstlisting}
这样设置后,代码块上方会显示标题foo,而在List of Listings(代码列表目录)里,对应的条目就会显示bar。方括号里的内容专门给目录用,大括号里的是正文里展示的标题,非常直观。
方法二:单独设置listentry参数
如果需要更清晰地拆分配置,可以用listentry参数单独指定目录里的标题,同时保留caption设置正文标题:
\begin{lstlisting}[caption={foo}, listentry={bar}] test \end{lstlisting}
这种方法和第一种效果完全一致,适合那种正文标题很长、需要在目录里简化显示的场景,逻辑上更清晰。
额外提示:全局默认配置
如果你的文档里有很多代码块,想统一设置目录标题的默认格式,可以用\lstset全局配置:
\lstset{ captionpos=t, % 标题放在代码块上方 listentry={代码示例} % 所有未单独设置的代码块,在目录里默认显示这个标题 }
之后单个lstlisting可以通过覆盖listentry参数来设置自定义的目录标题,非常灵活。
内容的提问来源于stack exchange,提问作者crappidy
相关产品推荐
相关产品推荐

