我使用该listings
包打印代码片段。我的 IDE 是 TeXstudio 2.8.8。我提到这一点是为了完整性——我假设所有 IDE 的行为都是相同的,这就是为什么我写了一个通用标题,而没有使用泰克工作室 标签。
当我使用命令时,TeXstudio 会建议标签\ref
,但那些以 开头的标签lst:
(即分配给列表的标签)会被忽略。因此,每次我想引用列表时,我都必须仔细检查我的 LaTeX 文件,以确保标签正确。
我怀疑这是由于列表标签以非标准方式分配造成的:
\chapter{Example chapter}
\label{chap:example-chapter} % standard way of assigning labels
And he not: I pray thee, that the sons of Noah builded Nineveh.
\begin{lstlisting}[label={lst:example-listing}] % assignment with the 'label' option
print("Hello world!")
\end{lstlisting}
这是一个最小的工作示例:
\documentclass{report}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[label={lst:example-listing}]
print("Hello world!")
\end{lstlisting}
See listing~\ref{lst:example-listing}.
\end{document}
是否有不同的方法为列表分配标签,以便我的 IDE 在我使用命令时识别并建议它们\ref
?
答案1
我不认为这受支持。这需要程序的明确功能。
我只能提供一个丑陋的解决方法;这个想法是在 之外再加一个注释字符%
,因此后面的所有内容^^A
都会被忽略,就好像它在 之后一样%
,但 TeXStudio 会被愚弄认为它是一个真正的标签。
\documentclass{report}
\usepackage{listings}
\AtBeginDocument{\catcode`\^^A=14 }
\begin{document}
\begin{lstlisting}[label={lst:example-listing}]
print("Hello world!")
\end{lstlisting}^^A\label{lst:example-listing}
\ref{lst:example-listing}
\end{document}
答案2
我想到了一个不太难的解决方法,我可以接受。这是一个最小的工作示例:
\documentclass{article}
\usepackage{listing} % A wrapper to assign labels in the "standard" way
\usepackage{listings}
\usepackage{caption} % Used for \captionsetup
\begin{document}
\begin{listing}
\begin{lstlisting}
print("Hello world!")
\end{lstlisting}
\captionsetup{skip=-2pt} % Narrow the space between caption and code
\caption{Your caption here!}
\label{lst:example-listing}
\end{listing}
See listing~\ref{lst:example-listing}.
\end{document}
我的 IDE(TeXstudio 2)现在还建议在插入引用时列出标签。\captionsetup
使用 以便标题文本大致位于与lstlisting
放置它相同的位置。
答案3
我想您可以在图形环境中添加它,然后手动添加标签:
\begin{figure}
\label{lst:example-listing}
\begin{lstlisting}
print("Hello world!")
\end{lstlisting}
\end{figure}
答案4
\documentclass{report}
\usepackage{listings}
\lstset{escapechar=\@}
\begin{document}
\begin{lstlisting}
@\label{lst:example-listing}@
print("Hello world!")
\end{lstlisting}
\end{document}