如何让我的 IDE 识别列表标签?

如何让我的 IDE 识别列表标签?

我使用该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}

相关内容