![如何在 `lstlisting` 环境中使标题显示而不显示标题文本?](https://linux22.com/image/475495/%E5%A6%82%E4%BD%95%E5%9C%A8%20%60lstlisting%60%20%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E6%A0%87%E9%A2%98%E6%98%BE%E7%A4%BA%E8%80%8C%E4%B8%8D%E6%98%BE%E7%A4%BA%E6%A0%87%E9%A2%98%E6%96%87%E6%9C%AC%EF%BC%9F.png)
我发现只有非空的标题文本才能使标题出现在输出文件中,即使是空格字符\
。这是一个例子:
\documentclass{article}
\usepackage{listings}
\lstset{
language=C++,
frame = t
}
\usepackage{caption}
\captionsetup{
singlelinecheck = false
}
\begin{document}
\begin{lstlisting}[caption={\ }] %note the character '\ ' here!
class MyClass
{
public:
MyClass()
{
// Constructor
}
~MyClass()
{
// Destructor
}
};
\end{lstlisting}
\end{document}
\
好吧,当我删除的空格字符时caption = {\ }
,输出文件中的标题就会消失:
\documentclass{article}
\usepackage{listings}
\lstset{
language=C++,
frame = t
}
\usepackage{caption}
\captionsetup{
singlelinecheck = false
}
\begin{document}
\begin{lstlisting}[caption={}] % look here, nothing in caption
class MyClass
{
public:
MyClass()
{
// Constructor
}
~MyClass()
{
// Destructor
}
};
\end{lstlisting}
\end{document}
我想知道是否有某种方法可以在调用时输出标题,即使caption = {...}
花括号 ( ) 中没有任何内容,就像 float或environmentcaption = {}
一样。有人能给我一些提示吗?table
figure
答案1
如果您希望所有列表都有编号,但可能没有标题文字,您可以caption=\mbox{}
设置\lstset
。
\documentclass{article}
\usepackage{listings}
\usepackage{caption}
\lstset{
language=C++,
frame = t,
caption=\mbox{},
columns=fullflexible,
}
\captionsetup[lstlisting]{
singlelinecheck = false
}
\begin{document}
\begin{lstlisting}
class MyClass
{
public:
MyClass()
{
// Constructor
}
~MyClass()
{
// Destructor
}
};
\end{lstlisting}
\begin{lstlisting}[caption=This has a caption]
class MyClass
{
public:
MyClass()
{
// Constructor
}
~MyClass()
{
// Destructor
}
};
\end{lstlisting}
\end{document}
笔记。
我添加了
columns=fullflexible
,因为像等宽字体这样的比例字体会让我的眼睛刺痛。设置
caption
仅限于lstlisting
字幕。