列出元素上的 cref 仅转换为两个问号和元素的索引

列出元素上的 cref 仅转换为两个问号和元素的索引

我对使用 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}

与之前相同,但有此更改

在此处输入图片描述

相关内容