写出参考章节编号

写出参考章节编号

可以写出参考的章节编号吗?

代替

I’m referencing Chapter 1, „Referencing“

我想看看

I’m referencing Chapter one, „Referencing“

梅威瑟:

\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{hyperref}

\begin{document}

\chapter{Referencing}
\label{cha:referencing}

I'm referencing Chapter~\ref{cha:referencing},~\enquote{\nameref{cha:referencing}}

\end{document}

答案1

cleveref与以下产品一起使用fmtcount

\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{fmtcount}
\usepackage{hyperref}
\usepackage{cleveref}

\crefformat{chapter}{\chaptername~#2\numberstringnum{#1}#3}

\begin{document}

\chapter{Referenzieren}
\label{cha:referencing}

Dies ist ein Verweis auf \cref{cha:referencing}.

\end{document}

如果德语不好就怪谷歌吧。

在此处输入图片描述

如果你希望超链接中也包含“Kapitel”,请将以下\crefformat行更改为

\crefformat{chapter}{#2\chaptername~\numberstringnum{#1}#3}

如果您希望数字名称以大写字母开头,请使用\Numberstringnum

答案2

是的,这是可能的,但必须先提取章节号才能使用。\ref...根本没有提供数字,所以refcount它就getrefnumber起作用了。这将1在这里产生。

1要在此处获得as的口头表达Eins,请使用\Numberstringnum\numberstringnumfor einsfromfmtcount包。

\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{refcount}
\usepackage{fmtcount}
\usepackage{hyperref}

\begin{document}

\chapter{Hallo Welt}
I'm referencing Chapter~\Numberstringnum{\getrefnumber{cha:referencing}},~\enquote{\nameref{cha:referencing}}

\chapter{Referencing}
\label{cha:referencing}


\end{document}

在此处输入图片描述

答案3

我写了一个小宏来处理德国红衣主教以正确的方式显示序数。对于后者,\Ordinalstringnum\ordinalstringnumfromfmtcount无法有效使用,因为它们仅提供强形式(例如“erster”,如果你想打印“erstes Kapitel”、“das erste Kapitel”等,这是毫无用处的)。以下是带有一些示例输出的代码:

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{refcount,fmtcount}

\newcommand{\refzw}[2][o]{%
\def\refnum{\getrefnumber{#2}}%
\lowercase{\ifnum\ifx#1}o\ifnum\refnum=1 1\else\ifnum\refnum=3 1\else\ifnum\refnum=7 1\else\ifnum\refnum=8 1\else0\fi\fi\fi\fi\else0\fi=1%
\ifnum\refnum=1\def\zw{ers}\def\zwg{Ers}\fi%
\ifnum\refnum=3\def\zw{drit}\def\zwg{Drit}\fi%
\ifnum\refnum=7\def\zw{sieb}\def\zwg{Sieb}\fi%
\ifnum\refnum=8\def\zw{ach}\def\zwg{Ach}\fi%
\else\def\zwg{\Numberstringnum{\refnum}}\def\zw{\numberstringnum{\refnum}}    \fi%
\if1\ifx#1O1\else\ifx#1K1\else0\fi\fi\zwg\else\zw\fi%
\ifnum\refnum>19\lowercase{\ifx#1o{s}\fi}\fi%
}

\begin{document}
\section{Einleitung}\label{einl}
\refzw[O]{einl}tens steht das \refzw{einl}te Kapitel in Kapitel \refzw[k]{einl} – oder schreibt man Kapitel \refzw[K]{einl}? Dann gibts aber noch ein \refzw{haupt1}tes und ein \refzw{haupt2}tes Kapitel, aber kein dreites. Dann kommen die Kapitel \refzw[K]{haupt3} und \refzw[K]{haupt4}.
\section{Hauptteil}\label{haupt1}
\section{Fazit}\label{haupt2}
\section{Schluss}\label{haupt3}
\section{jetzt}\label{haupt4}
\end{document}

输出

该命令将引用键作为必需参数,并将以下选项之一作为可选参数:

  • o (默认)打印序数,例如“ers”
  • O 打印大写的序数词,例如“Ers”
  • k 打印基数,例如“eins”
  • K 打印大写的基数,例如“Eins”

您可能已经注意到,序数没有任何结尾,您必须输入例如“im \refzw{key}ten Kapitel”才能输出“im ersten Kapitel”。该宏适用于文章中的 \section 标题以及书籍中的 \chapter,并打印正确的数字,直到 100。它需要以下软件包:

\usepackage[ngerman]{fmtcount}
\usepackage{refcount}

或者

\usepackage[ngerman]{babel}
\usepackage{refcount,fmtcount}

fmtcount顺便说一下可能需要更新,旧版本(Ubuntu 14.04 的 TexLive 附带)错误地打印了“eins和平与安宁”。

打印长版本

如果您希望打印出“erste”而不是“ers”(因此只需添加“n”,“s”等),请将}末尾的替换为:

\lowercase{\ifx#1}ote\fi%
}

相关内容