我对使用 LaTeX 还很陌生,到目前为止我还没有找到以下问题的解决方案:
每当我将它与表格或图形一起使用时,使用\cref
或\Cref
都会给我所需的输出。当我想引用某个\lslisting
元素时,输出如下:
文中引用示例:
\begin{lstlisting}
[language=Python,
caption=hello world code,
label=code:helloworld]
this is the code
\end{lstlisting}
This text references the first code snippet\cref{code:helloworld}
渲染的 PDF 显示“??1”——假设它是第一个 lslisting 元素。
该标签起着标题的作用,所以我看不出这里的引用有什么问题。
我使用的cref
包如下:
\usepackage[german, nameinlink, noabbrev]{cleveref}
\usepackage[german]{babel}
\usepackage{listings}
\usepackage{beramono} % use a typewriter font which supports bold characters
\renewcommand{\lstlistlistingname}{Skriptverzeichnis} %
\renewcommand{\lstlistingname}{Skriptverzeichnis}
\newcommand{\listoflolentryname}{\lstlistingname}
我非常感谢任何帮助!
答案1
这有效:
\documentclass{article}
\usepackage[T1]{fontenc} % necessary for German and beramono
\usepackage[german]{babel}
\usepackage{beramono} % use a typewriter font which supports bold characters
\usepackage[german, nameinlink, noabbrev]{cleveref} % last package
\usepackage{listings}
\renewcommand{\lstlistlistingname}{Skriptverzeichnis}
\renewcommand{\lstlistingname}{Skriptverzeichnis}
\newcommand{\listoflolentryname}{\lstlistingname}
\crefname{lstlisting}{skriptverzeichnis}{??}
\Crefname{lstlisting}{Skriptverzeichnis}{??}
\lstset{
columns=flexible,
basicstyle=\ttfamily
}
\begin{document}
\begin{lstlisting}[
language=Python,
caption=hello world code,
label=code:helloworld,%<--- note the comma
]
this is the code
\end{lstlisting}
\cref{code:helloworld}
\end{document}
通常cleveref
应该是最后一个,但却listings
不合作。
修复\crefname
标签。
T1 编码对于德语来说基本上是强制性的。并且对于beramono
没有 OT1 编码字体的语言也是如此。
我还建议扩展 Bera Mono:
\usepackage[scaled=0.9]{beramono}
与之前相同,但有此更改