在我的 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
。