无衬线字体交叉引用

无衬线字体交叉引用

我希望我的交叉引用采用无衬线格式,但我还没有找到方法。

我目前正在使用cleverefhyperref包。

答案1

据我所知,没有办法使用它\crefdefaultlabelformat来查询要引用的当前计数器类型,从而获取用\crefname和定义的计数器的相关名称\Crefname

但是,\crefformat可以使用此设置将特定格式更改为无衬线字体(如部分计数器所示)

\crefformat{section}{#2{\sffamily\cref@section@name\ #1}#3}

对 也可以做同样的事情\Crefformat\cref@section@name\Cref@section@name)替换

就目前情况而言,\crefmultiformat\crefrangeformat命令尚未改变。

为了防止繁琐的代码复制,我提供了一种使用expl3语法的方法将计数器类型存储到\seq列表中,然后在循环中更改格式\switchtosansserifformat

\documentclass{article}

\usepackage{xparse}
\usepackage{hyperref}
\usepackage{cleveref}


\ExplSyntaxOn
\makeatletter
\seq_new:N \l_atcold_counter_seq 

\newcommand{\addcountertoseq}[1]{%
  \seq_set_from_clist:Nn \l_atcold_counter_seq {#1}
}

\newcommand{\switchtosansserifformat}{%
  \seq_map_inline:Nn \l_atcold_counter_seq {%
    \crefformat{##1}{####2{\protect\sffamily\use:c{cref@##1@name}\ ####1}####3}
    \Crefformat{##1}{####2{\protect\sffamily\use:c{Cref@##1@name}\ ####1}####3}
  }%
}
\ExplSyntaxOff
\makeatother


\addcountertoseq{section,subsection,subsubsection,figure,table,page}

\switchtosansserifformat
\begin{document}
Outlook: In \cref{foo} we will see that ... and \cref{foofigure} shows that ... and \cref{footable} has the relevant data

Outlook: In \Cref{foo} we will see that ... and \Cref{foofigure} shows that ... and \Cref{footable} has the relevant data


\clearpage

\section{Foo} \label{foo}

\begin{figure}
  \caption{A foo figure}\label{foofigure}
\end{figure}

\begin{table}
  \caption{A foo table}\label{footable}
\end{table}



\end{document}

在此处输入图片描述

相关内容