我使用列表在文档中显示代码,一切都很好,或者说我找到了解决方案,除了一个问题。当我自动引用列表时,它在文本中引用为“列表 1。”,但我宁愿将其引用为“1. 列表”。
有人能帮帮我吗?我到处都找过了,也没找到任何东西。
答案1
我怀疑您在匈牙利语文档中需要这个。我认为\autoref
由于词形变化,它在匈牙利语中无法使用!但是,这里有一个可能的解决方案来改变顺序。
\documentclass{article}
\usepackage{regexpatch,listings,hyperref}
\def\lstlistingautorefname{listing}
\makeatletter
\xpatchcmd{\HyRef@autosetref}{\HyRef@currentHtag}{}{}{}
\xpatchcmd{\HyRef@autosetref}{\null}{\null.~\HyRef@currentHtag}{}{}
\xpatchcmd*{\HyRef@testreftype}{~}{}{}{}
\makeatother
\begin{document}
\begin{lstlisting}[caption={Example},label={listing:example}]
code
\end{lstlisting}
\autoref{listing:example}
\end{document}
答案2
hair-splitter 的答案很棒,我发现了另一种方法,这种方法对我来说更容易理解,并且非常有效,适用于所有类型的自动引用内容:
\usepackage{hyperref}
\usepackage{cleveref}
\crefname{lstlisting}{source code}{source codes}
\Crefname{lstlisting}{source code}{source codes}
\crefname{figure}{figure}{figures}
\Crefname{figure}{figure}{figures}
\crefname{table}{table}{tables}
\Crefname{table}{table}{tables}
\crefname{section}{title}{titles}
\Crefname{section}{title}{titles}
\renewcommand{\autoref}[1]{\hyperref[#1]{\ref*{#1}. \nameCref{#1}}} ```