在我当前的文档中,我正在处理许多子图。通常,我喜欢使用类似这样的样式来引用它们,Figure 1 b)
其中空格应该是半空格,因此\,
在代码中。这不仅对引用子图很有用,而且与我对示例的一部分的引用一致。我想使用类似的东西\ref{subfig:p1}
来获得刚刚描述的输出。但这样数字和字母之间就没有空格了。
这是 MWE
\documentclass[4apaper]{scrartcl}
\usepackage{caption,subcaption,graphicx}
\captionsetup{format=hang,labelsep=space,indention=-2cm,labelfont=bf,width=.9\textwidth,skip=.5\baselineskip}
\captionsetup[sub]{labelfont=bf, labelsep=period,labelformat=simple, subrefformat=brace}
\begin{document}
\begin{figure}[t]
\begin{subfigure}[b]{.49\textwidth}\centering
% \includegraphics[width=.9\textwidth]{myPicture}
\rule{2cm}{2cm}.
\caption{SubText 1}\label{subfig:p1}
\end{subfigure}
\begin{subfigure}[b]{.49\textwidth}\centering
\rule{2cm}{2cm}.
\caption{SubText 2}\label{subfig:p2}
\end{subfigure}
\caption{Description referencing to \subref{subfig:p1} and
\subref{subfig:p2}}\label{fig:1}
\end{figure}
I usually refer to example 1\,c) somewhere else in a certain way leaving some space,
but that's not possible just using \ref{subfig:p1}; I don't want to use
\ref{fig:1}\,\subref{subfig:p1}, but that's quite longish.
\end{document}
我如何更改\ref
in以在和引用\ref{subfig:p1)
之间添加空格?如果可用的话,我最喜欢的是使用某些东西。figure
subfigure
\captionsetup
答案1
\,
在图形和子图形参考部分之间进行操作非常容易,可以重新定义\p@subfigure
,通常只添加图形部分,即通常定义为
\newcommand\p@subfigure{\thefigure}
并可以改为
\renewcommand\p@subfigure{\thefigure\,}
(另请参阅包文档中的“参考”部分subcaption
。)
但是如何在参考文献中获取单个右括号,而不是在子标题标签中获取单个右括号?一种可能性是将右括号添加到定义中\thesubfigure
,如“参考文献”部分所示:
\renewcommand\thesubfigure{\alph{subfigure})}
但是这也会将结束括号添加到子图标签中。所以现在是巧妙的部分,删除子图标签中的括号。虽然文档subcaption
仅显示了如何将内容添加到打印的标签中,但实际上并没有显示如何删除内容。好吧,可以尝试使用宏来构建棘手的代码,\@gobble
但我认为最直接的方法是定义一种新的标签格式,它根本不使用给定的参数(#1 和 #2),而是从拉伸开始构建标签:
\DeclareCaptionLabelFormat{mysublabelfmt}{\alph{sub\@captype}}
(这里我们使用了实际主浮动环境名称存储在中的事实\@captype
,例如figure
在图形环境内。)
总共有:
\documentclass[4apaper]{scrartcl}
\usepackage{caption,subcaption,graphicx}
\captionsetup{format=hang,labelsep=space,indention=-2cm,labelfont=bf,width=.9\textwidth,skip=.5\baselineskip}
\captionsetup[sub]{labelfont=bf,labelsep=period,labelformat=mysublabelfmt}
\makeatletter
\renewcommand\p@subfigure{\thefigure\,}
\renewcommand\thesubfigure{\alph{subfigure})}
% If desired for table as well:
% \renewcommand\p@subtable{\thetable\,}
% \renewcommand\thesubtable{\alph{subtable})}
\DeclareCaptionLabelFormat{mysublabelfmt}{\alph{sub\@captype}}
\makeatother
\begin{document}
\begin{figure}[t]
\begin{subfigure}[b]{.49\textwidth}\centering
% \includegraphics[width=.9\textwidth]{myPicture}
\rule{2cm}{2cm}.
\caption{SubText 1}\label{subfig:p1}
\end{subfigure}
\begin{subfigure}[b]{.49\textwidth}\centering
\rule{2cm}{2cm}.
\caption{SubText 2}\label{subfig:p2}
\end{subfigure}
\caption{Description referencing to \subref{subfig:p1} and
\subref{subfig:p2}}\label{fig:1}
\end{figure}
I usually refer to example 1\,c) somewhere else in a certain way leaving some space,
but that's not possible just using \ref{subfig:p1}; I don't want to use
\ref{fig:1}\,\subref{subfig:p1}, but that's quite longish.
\end{document}
(请注意,我subrefformat
另外删除了该设置,因为在使用时没有得到两个右括号\subref
)