我尝试使用粗体文本强调我的图形引用。当我使用 引用带标签的图形时,\cref{fig:mylabel}
我得到了正确的文本Abbildung 1
,但是我在格式化它时遇到了麻烦。
我正在使用软件包hyperref
和cleveref
德语文档设置。根据文档有选项\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 解决方案。
但与此同时,最有效的方法是用 来包装cref
。bfseries
灵感来自沃纳的回答为了使其不那么麻烦,我们可以通过首先以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}