通过标题而不是数字引用列表代码

通过标题而不是数字引用列表代码

在我的 LaTeX 文档中,我使用\ref{code.java}引用代码(如下图所示)并显示章节号。为什么它显示“1”而不是code.java?是否可以显示代码名称而不是章节号?

在此处输入图片描述

这是我的使用lstlisting和设置标签名称的 LaTeX 代码:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{xcolor}

\definecolor{verde}{rgb}{0.25,0.5,0.35}
\definecolor{jpurple}{rgb}{0.5,0,0.35}
\usepackage{listings}
\lstset{
  language=Java,
  basicstyle=\ttfamily\small,
  keywordstyle=\color{jpurple}\bfseries,
  stringstyle=\color{red},
  commentstyle=\color{verde},
  morecomment=[s][\color{blue}]{/**}{*/},
  extendedchars=true,
  showspaces=false,
  showstringspaces=false,
  numbers=left,
  numberstyle=\tiny,
  breaklines=true,
  backgroundcolor=\color{cyan!10},
  breakautoindent=true,
  captionpos=b,
  xleftmargin=0pt,
  tabsize=4
}

\title{example}
\author{marcellocamara}
\date{March 2019}

\begin{document}

\maketitle

\section{Introduction}

Let's cite the code \ref{code.java} as example.

\begin{lstlisting}[title = {code.java}, label={code.java}]
public class MyClassName {

    Some java code.

}
\end{lstlisting}

\end{document}

答案1

\ref通过自动分配的编号引用列表。通常会为列表分配标题,并使用选项caption={My caption}使标题看起来像

清单 1:我的标题

由于您使用该title选项,因此将抑制编号输出,而是显示文字标题。

引用标题的一个选项是使用包\nameref中的命令nameref

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{nameref}

\definecolor{verde}{rgb}{0.25,0.5,0.35}
\definecolor{jpurple}{rgb}{0.5,0,0.35}
\usepackage{listings}
\lstset{ ... }

\begin{document}
\section{Introduction}

Let's cite the code \nameref{code.java} as example.

\begin{lstlisting}[caption={code.java (caption)}, title={code.java (title)}, label={code.java}]
public class MyClassName {

    Some java code.

}
\end{lstlisting}
\end{document}

在此处输入图片描述

如您所见,\nameref使用提供的caption作为参考,而不是title。因此,如果您希望两者相同,则必须复制caption和的文本title

相关内容