我需要子标题标签(和参考资料)的格式为
图 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
。现在我希望满足您的要求。