更改子标题标签格式

更改子标题标签格式

我需要子标题标签(和参考资料)的格式为

图 1a

而不是默认的“(a)”,并且能够使用以下方式引用它们\cref

不幸的是,我似乎无法让任何与子标题相关的命令改变子标题“标签”的格式(这是正确的名称吗?)

这是我能得到的最接近的结果(同时仍然可以\cref处理正常的、非子图形)。

如您所见,我正在使用memoir。以下代码的问题是引用使用\cref以图形计数器(下面的第一个“1”)开头,我似乎无法摆脱它。我知道这是错误的处理方式(我将计数器更改为包含名称/标签,而不是更改标题格式)。任何适当的解决方案都非常受欢迎,如果做不到,也欢迎修复我的黑客攻击!

\documentclass{memoir}

\usepackage{hyperref}
\usepackage[nameinlink]{cleveref}

\newsubfloat{figure}

\renewcommand{\thesubfigure}{Fig. \arabic{figure}\alph{subfigure}}
\renewcommand{\thefigure}{\arabic{figure}}

\crefformat{subfigure}{#2{}#1{}#3{}}

\begin{document}
\begin{figure}
\subbottom[first subfigure \label{fig:first}]{\fbox{Numero uno}}
\subbottom[second subfigure \label{fig:second}]{\fbox{Numero dos}}
\end{figure}
\cref{fig:first}

\cref{fig:second}
\end{document}

在此处输入图片描述

编辑似乎如果我不使用\caption图形编号就不会增加,而后面的普通图形将使用相同的图形编号。有没有自动改变这种行为的方法?目前,我\addtocounter{figure}{1}在每个子图中只添加了一个图形,这达到了预期的效果。

答案1

这是一个相当不寻常的请求/要求。这里有一个解决方案,但它可能会使图形引用的正常使用变得混乱:

\documentclass{memoir}

\usepackage{hyperref}
\usepackage[capitalise]{cleveref}

\newsubfloat{figure}
\renewcommand{\thesubfigure}{Fig.~\arabic{figure}\alph{subfigure}}

\crefformat{subfigure}{#2#1#3}
\begin{document}
\begin{figure}[h]\centering
     \renewcommand{\thefigure}{} 
\subbottom[first subfigure  \label{fig:1}]{\fbox{figure numero uno}}
    \hfil
\subbottom[second subfigure \label{fig:2}]{\fbox{figure numero dos}}
    \stepcounter{figure}
\end{figure}
    some text
\begin{figure}[h]\centering
     \renewcommand{\thefigure}{} 
\subbottom[first subfigure  \label{fig:3}]{\fbox{figure numero uno}}
    \hfil
\subbottom[second subfigure \label{fig:4}]{\fbox{figure numero dos}}
   \stepcounter{figure}
\end{figure}
some text
\begin{figure}[h]\centering
\fbox{some "normal" figure}
    \caption{normal figure}
    \label{fig:5}
\end{figure}

\cref{fig:1} and \cref{fig:4} and also \cref{fig:5}
\end{document}

在此处输入图片描述

编辑:\renewcommand{\thefigure}{}在每个浮动中使用子图并 在浮动\stepcounter{figure}结束前 实现所需的监视figure。现在我希望满足您的要求。

相关内容