我定义了以下内容
\providecommand*{\lstnumberautorefname}{line}
并在我的文本中
\begin{lstlisting}
|\label{sdd_1}|<sqlCallStatistics>YES</sqlCallStatistics>
\end{lstlisting}
当我现在在我的文本中使用
xxx. \autoref{sdd_1}
然后我收到以下输出:
xxxx. line 1
而不是(我所期望的)
xxxx. Line 1
答案1
\autoref
不自动大写,如下例所示:
\documentclass{article}
\usepackage{listings}
\usepackage{hyperref}
\providecommand*{\lstnumberautorefname}{line}
\begin{document}
\section{Test}\label{sec:test}
\autoref{sec:test} and a period before the reference. \autoref{sec:test}
\begin{lstlisting} [escapeinside=||,numbers=left]
<sqlCallStatistics>YES</sqlCallStatistics>|\label{sdd_1}|
\end{lstlisting}
\autoref{sdd_1} and a period before the reference. \autoref{sdd_1}
\end{document}
您可以使用该cleveref
包来获得\cref
(用于小写)和\Cref
(用于大写):
\documentclass{article}
\usepackage{listings}
\usepackage{cleveref}
\begin{document}
\begin{lstlisting} [escapeinside=||,numbers=left]
<sqlCallStatistics>YES</sqlCallStatistics>|\label{sdd_1}|
\end{lstlisting}
\cref{sdd_1} and a period before the reference. \Cref{sdd_1}
\end{document}
编辑:正如MWin123
评论所说:默认情况下,\cref
只将数字“1”变成超链接,而\autoref
将整个“第 1 行”变成可点击的链接。幸运的是,有一个选项nameinlink
可以做到这一点,即,您可以使用\usepackage[nameinlink]{cleveref}
答案2
解决这个问题没有简单的方法,除非重新定义\lstnumberautorefname
或Line
包含其他包。在这种情况下,你最好使用
\hyperref[sdd_1]{Line~\ref*{sdd_1}}
而不必诉诸其他方法。这将提供相同的链接,但大写。\ref*
工作原理与 相同\ref
,但不包含超链接。超链接由 提供\hyperref[<label>]{<stuff>}
。这是一个最小示例:
\documentclass{article}
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\usepackage{listings}% http://ctan.org/pkg/listings
\lstset{numbers=left,escapeinside=||}
\providecommand*{\lstnumberautorefname}{line}
\begin{document}
\begin{lstlisting}
|\label{sdd_1}|<sqlCallStatistics>YES</sqlCallStatistics>
\end{lstlisting}
Here is some text. \hyperref[sdd_1]{Line~\ref*{sdd_1}} is important, and so is \autoref{sdd_1}.
\end{document}
答案3
另一个选项提到手册。
使用:
\usepackage[english]{babel}
\addto\extrasenglish{
\def\typeautorefname{Type}
}
\usepackage{hyperref}
如果您想要大写使用\autoref
或想要完全重命名自动引用名称。只需将其替换type
为引用类型,因此,,,chapter
等等。section
subsection
例如:
\usepackage[english]{babel}
\addto\extrasenglish{
\def\subsectionautorefname{Subsection}
}
我意识到这不符合您定义\Autoref
命令的要求。但是,我认为值得一提,因为它是一个更简洁的版本,可能满足其他人的要求,而且我花了一段时间才找到真正有用的方法。
答案4
一种简单的方法是添加以下内容
\renewcommand{\figureautorefname}{Figure}
\renewcommand{\tableautorefname}{Table}
\renewcommand{\partautorefname}{Part}
\renewcommand{\appendixautorefname}{Appendix}
\renewcommand{\chapterautorefname}{Chapter}
\renewcommand{\sectionautorefname}{Section}
\renewcommand{\subsectionautorefname}{Section}
\renewcommand{\subsubsectionautorefname}{Section}
就在你的
\begin{document}