使用 cleveref 和 memoir 编辑子图的参考样式

使用 cleveref 和 memoir 编辑子图的参考样式

我正在使用该cleveref包引用memoir类中的浮点数(在本例中为子图)。目前输出如下所示(抱歉,丹麦语,我认为这并不重要): 使用 cleveref 在回忆录中插入子图

使用以下输入(当然不包括所有包):

\documentclass[oneside,article,12pt,danish]{memoir}
\usepackage{graphicx}
\newsubfloat{figure}
\captiontitlefont{\slshape}
\subcaptionfont{\slshape}

\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}

\begin{document}

\begin{figure}[h!]
  \centering
  \subbottom[Subfigure 1 caption]{\rule{3cm}{1cm}\label{sub1}}
  \hspace{1cm}
  \subbottom[Subfigure 2 caption]{\rule{3cm}{1cm}\label{sub2}}
\caption{Figure text.}
\label{fig:secondfig}
\end{figure}

\cref{sub1,sub2}

\end{document}

我喜欢图形/子图的设置方式,但我希望引用说5a5.a而不是5(a)而不更改图形/子图标题。有没有一种通用方法可以在整个文档中执行此操作,以便可以轻松将其更改为某种随机符号?

答案1

此解决方案避免了加载的需要caption,从而保留了 的功能memoir。至少,看起来是这样,尽管我的测试有些少。取消注释/注释相应的行以实现带或不带点的格式化,这取决于您的心情。

\documentclass[oneside,article,12pt,danish]{memoir}
\newsubfloat{figure}
\captiontitlefont{\slshape}
\subcaptionfont{\slshape}

% \renewcommand{\thesubfigure}{\alph{subfigure}}% plain version
\renewcommand{\thesubfigure}{.\alph{subfigure}}% dotted version
\makeatletter
\renewcommand{\@thesubfigure}{(\alph{subfigure})%
    \if@tightsubcap\hskip\subfloatlabelskip\else\space\fi}
\makeatother

\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}

\begin{document}

\begin{figure}[h!]
  \centering
  \subbottom[Subfigure 1 caption]{\rule{3cm}{1cm}\label{sub1}}
  \hspace{1cm}
  \subbottom[Subfigure 2 caption]{\rule{3cm}{1cm}\label{sub2}}
\caption{Figure text.}
\label{fig:secondfig}
\end{figure}

\cref{sub1,sub2}

\end{document}

<code>memoir</code> 中的子图具有不同的引用格式

如果你要加载xcolor,那么你可以(反常地)只将对子图位的引用排版为巨大的蓝色小写字母,而不会影响标题或其他引用:

\renewcommand{\thesubfigure}{\Huge\color{blue}.\alph{subfigure}}% dotted version

奇怪的格式

显然,这将是一个糟糕的选择,但它表明格式可以轻松地“改变为有点随机的符号”,同时保留子字幕的格式和界面memoir

答案2

subfig好的,这是使用和的部分建议caption。我以前没有使用过 memoir 类。如果我使用 article,则图标记为“1.a”,当我切换到 memoir 时,我得到的是“0.1.a”。您的某些代码无法编译。我已将其注释掉。我已将图更改为看起来更像我自己的代码(即不是subfloatsubbottom,因为我以前没有使用过后者。我已将我之前链接到的问题的答案纳入其中。

因此,除了上面关于非编译代码的警告之外,我这里的示例在图形标签方面可以满足您的要求(我认为)。

可能还有更好的解决方案。

\documentclass[12pt]{memoir}
\usepackage{graphicx}



%%%%These do not work for me - is there a missing package?
%\newsubfloat{figure}
%\captiontitlefont{\slshape}
%\subcaptionfont{\slshape}
%%%%

\usepackage{varioref}
\usepackage{hyperref}
\usepackage{cleveref}

\usepackage[font=sl,labelfont=up]{caption}
\usepackage[font=sl,labelfont=up]{subfig}

\renewcommand\thesubfigure{\alph{subfigure}} % default: "(\alph{subfigure})"
\makeatletter
\renewcommand{\p@subfigure}{\thefigure.} % default: "\thefigure" (without the ".")
\makeatother


\begin{document}


\begin{figure}
  \centering
  \subfloat[Subfigure 1 caption]{\rule{3cm}{1cm}\label{sub1}}
  \hspace{1cm}
  \subfloat[Subfigure 2 caption]{\rule{3cm}{1cm}\label{sub2}}
\caption{Figure text.}
\label{fig:secondfig}
\end{figure}

\cref{sub1,sub2}

\end{document}

相关内容