格式化 cleveref 标签(包括名称)

格式化 cleveref 标签(包括名称)

我尝试使用粗体文本强调我的图形引用。当我使用 引用带标签的图形时,\cref{fig:mylabel}我得到了正确的文本Abbildung 1,但是我在格式化它时遇到了麻烦。

在此处输入图片描述

我正在使用软件包hyperrefcleveref德语文档设置。根据文档有选项\crefdefaultlabelformat,但是当我尝试将整个标签加粗(包括名称)时,\crefdefaultlabelformat{\bfseries#2#1#3}只有数字引用会得到强调。 也是如此\creflabelformat{figure}...

还有 hyperref 提供的格式化链接的选项,但我无法找到仅针对这些特定链接的选项。

\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage[labelfont=bf]{caption}
\usepackage[colorlinks]{hyperref}
\usepackage[noabbrev, nameinlink]{cleveref}
\crefdefaultlabelformat{\bfseries#2#1#3}

\begin{document}
\begin{figure}[h]
    \caption{Some image}
    \label{fig:mylabel}
\end{figure}

This should all be bold \(\rightarrow\) \cref{fig:mylabel}
\end{document}

答案1

如果目的只是将图形引用加粗,你可以这样做

\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage[labelfont=bf]{caption}
\usepackage[colorlinks]{hyperref}
\usepackage[noabbrev, nameinlink]{cleveref}

\crefformat{figure}{#2\bfseries\figurename~#1#3}

\begin{document}

\begin{figure}[htp]
    \caption{Some image}
    \label{fig:mylabel}
\end{figure}

This should all be bold \cref{fig:mylabel} and this shouldn't.

\end{document}

如果你真的想要全部 \cref生成的文本将以粗体显示,您可以修补\@cref

\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{xpatch}
\usepackage[labelfont=bf]{caption}
\usepackage[colorlinks]{hyperref}
\usepackage[noabbrev, nameinlink]{cleveref}

\makeatletter
\xpatchcmd{\@cref}{\begingroup}{\begingroup\bfseries}{}{}
\makeatother

\begin{document}

\begin{figure}[htp]
    \caption{Some image}
    \label{fig:mylabel}
\end{figure}

This should all be bold \cref{fig:mylabel} and this shouldn't.

\end{document}

在此处输入图片描述

答案2

也许有人有更原生的 cref/hyperref 解决方案。

但与此同时,最有效的方法是用 来包装crefbfseries灵感来自沃纳的回答为了使其不那么麻烦,我们可以通过首先以cref另一个名称保存来自动化此包装,例如oldcref

\usepackage{letltxmacro}
\LetLtxMacro\oldcref\cref

然后cref用包装的重新定义:

\usepackage{xparse}
\RenewDocumentCommand{\cref}{m}{\bfseries\oldcref{#1}} % m here means one mandatory argument

共同为您实现 MWE:

\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage[labelfont=bf]{caption}
\usepackage[colorlinks]{hyperref}
\usepackage[noabbrev, nameinlink]{cleveref}

% simply wrap cref by bfseries
\usepackage{letltxmacro,xparse}
\LetLtxMacro\oldcref\cref
\RenewDocumentCommand{\cref}{m}{\bfseries\oldcref{#1}}


\begin{document}
\begin{figure}[h]
    \caption{Some image}
    \label{fig:mylabel}
\end{figure}

This should all be bold \(\rightarrow\) \cref{fig:mylabel}
\end{document}

在此处输入图片描述

相关内容