目前我正在撰写我的文凭论文,经过长时间的搜索和尝试,我仍然无法找到解决我的问题的方法。
长话短说:我想参考一下列表-enviroment 通过 \cref{} 并且我想更改显示的名称。我已经对其他一些环境执行了此操作:
\renewcommand\figureautorefname{Abbildung}
\renewcommand\tableautorefname{Tabelle}
\renewcommand\sectionautorefname{Kapitel}
\renewcommand\subsectionautorefname{Kapitel}
\renewcommand\equationautorefname{Gleichung}
我需要使用 \cref{} 因为我为第一次使用 \cref{} 实现了一种特殊的格式。
结果应该是这样的:
This is a test-Code: Program-Code 1
代替
This is a test-Code: Listing 1
有人能帮助我吗?
多谢!
克里斯
编辑:我在这篇文章下找到了导致解决方案失败的部分:大学模板中有一部分。在此部分中,为标题页定义了主管/考官的德语/英语术语。如果我在文档环境中选择德语版本,程序代码将再次更改为列表。 :-( 我更新了代码。
以下是我的示例:
\documentclass{scrreprt}
\usepackage[T1]{fontenc} %% ermöglicht Sonderzeichen
\usepackage{lmodern} %% verbessert die Darstellung der Sonderzeichen
\usepackage[ngerman, english]{babel} %% deutsche oder englische Schreibweisen
\usepackage[utf8]{inputenc} %% deutsche Tastatur wg. Umlauten
\usepackage[ngerman, english]{babel}
\usepackage[fixlanguage]{babelbib}
\usepackage{subfig} %% Bilder => Unterbilder (a),(b),.. innerhalb einer Figure
\usepackage{hyperref}
\usepackage{xcolor} %% farbige Schrift und Schrifthinterlegung
\usepackage{listings} %% SOURCE CODE
\lstset{% settings for the listing package:
numbers=left, numberstyle=\tiny,% line numbers
showstringspaces=false,%
frame=b, framerule=1pt,%
aboveskip=0.75\baselineskip, belowskip=0.75\baselineskip,% space above and below listing
breaklines, prebreak=\mbox{$\hookleftarrow$},% break overlong lines and puts prebreak at the end
stringstyle=\color{cyan}\ttfamily, % Farbe der String
showspaces=false, % Leerzeichen anzeigen ?
showtabs=false, % Tabs anzeigen ?
xleftmargin=17pt,
framexleftmargin=17pt,
framexrightmargin=5pt,
framexbottommargin=4pt,
commentstyle=\color{8},
showstringspaces=false, % Leerzeichen in Strings anzeigen ?
morekeywords={__global__} % CUDA specific keywords
}
\lstset{
language=python,
basicstyle=\ttfamily,
keywordstyle=\color{orange},
}
\lstloadlanguages{python}
\renewcommand*\lstlistingname{Programm-Code}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{\colorbox{gray}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}}
\renewcommand\figureautorefname{Abbildung}
\renewcommand\tableautorefname{Tabelle}
\renewcommand\sectionautorefname{Kapitel}
\renewcommand\subsectionautorefname{Kapitel}
\renewcommand\equationautorefname{Gleichung}
\usepackage[ngerman]{cleveref}
\crefname{listing}{Program-code}{Program-codes}
\Crefname{listing}{Program-code}{Program-codes}
\usepackage{letltxmacro}
\AtBeginDocument{%
\LetLtxMacro\oldref\cref%
\renewcommand{\cref}[1]{%
\ifcsname[#1]\endcsname\relax%
{\oldref{#1}}%
\else%
{\textbf{\oldref{#1}}%
}%
\expandafter\gdef\csname[#1]\endcsname{1}%
\fi%
}%
}
%-----
\declarebtxcommands{english}{%
\def\btxprue#1{\protect\foreignlanguage{english}{Examiner}}%
\def\btxsuper#1{\protect\foreignlanguage{english}{Supervisor}}%
}
\declarebtxcommands{ngerman}{%
\def\btxprue#1{\protect\foreignlanguage{ngerman}{Prüfer}}%
\def\btxsuper#1{\protect\foreignlanguage{ngerman}{Hochschulbetreuer}}%
}
\declarebtxcommands{ngerman}{%
\renewcommand{\figurename}{Abb.}
\renewcommand{\tablename}{Tab.}
}
\declarebtxcommands{english}{%
\renewcommand{\figurename}{Fig.}
\renewcommand{\tablename}{Tab.}
}
%-----
\begin{document}
%% SPRACHAUSWAHL VOR TEXTBEGINN
\selectlanguage{ngerman} % <-------
%\selectlanguage{english}
\selectbiblanguage{ngerman}
%%\selectbiblanguage{english}
This is a test-Code: \cref{lst:example1}\\
second reference: \cref{lst:example1}
\begin{lstlisting}[caption={Test},label={lst:example1}]
test
\end{lstlisting}
Beispieltabelle: \cref{tab:test}\\
second reference: \cref{tab:test}
\begin{table}[h]
\centering
\captionabove{test-table}
\begin{tabular}{|c|c|}
\hline
hello & world \\
\hline
\end{tabular}
\label{tab:test}
\end{table}
\end{document}
答案1
\crefname{listing}{Program-code}{Program-codes}
\Crefname{listing}{Program-code}{Program-codes}
在 后添加此行\usepackage{cleveref}
。第一行重新定义 所用的单词(单数和复数)\cref
,第二行重新定义 所用的单词(单数和复数) \Cref
。
对于您的情况,与语言选择命令存在一些冲突。(手册第 10 节中babel
有一些讨论。)添加babel
cleveref
\crefname
后似乎\selectlanguage
解决了这个问题。最小示例:
\documentclass{scrreprt}
\usepackage[ngerman,english]{babel}
\usepackage{babelbib}
\usepackage{listings}
\usepackage[ngerman]{cleveref}
\begin{document}
\selectlanguage{ngerman} % <-------
%\selectlanguage{english}
\crefname{listing}{Program-code}{Program-codes}
\Crefname{listing}{Program-code}{Program-codes}
This is a test-Code: \cref{lst:example1}
\begin{lstlisting}[caption={Test},label={lst:example1}]
test
\end{lstlisting}
\end{document}