为什么 \label 在 \phantomsubcaption 之后会产生不需要的空白?

为什么 \label 在 \phantomsubcaption 之后会产生不需要的空白?

通常不会产生任何空格。但是,在from包之后使用\label时会产生空格。\label\phantomsubcaptionsubcaption

  • 为什么?
  • 我怎样才能摆脱这个空白?

以下是 MWE:

\documentclass{article}
\usepackage{subcaption}

\begin{document}

\section{a}
a\label{sec:a}b% no white space between `a' and `b'

\begin{figure}
  \centering
  {a\phantomsubcaption\label{fig:a}}%
  {b\phantomsubcaption\label{fig:b}}
  \caption{With label}% undesired white space between `a' and `b'
\end{figure}

\begin{figure}
  \centering
  {a\phantomsubcaption}%
  {b\phantomsubcaption}
  \caption{Without label}% no white space between `a' and `b'
\end{figure}

\end{document}

答案1

第 87 行有错误subcaption.sty

 87 \newcommand*\subcaption@label{
 88   \caption@withoptargs\subcaption@@label}

在第 87 行的末尾,括号后%缺少 a。

如果你在加载后添加到序言中subcaption

\makeatletter
\renewcommand*\subcaption@label{%
  \caption@withoptargs\subcaption@@label}
\makeatother

输出将是正确的,没有任何虚假空间。

请让软件包维护者知晓这一点。

答案2

\phantomsubcaption并且\phantomcaption没有任何参数。此外,它们不会生成任何输出,但会为您提供一个\label命令的锚点,该命令可以随后放置。此外,它会增加子图和/或子表计数器。值得注意的是,就像\subcaption命令\phantomsubcaption必须在其内部应用一样自己的团体盒子, 或者环境

在您的代码中,由于您没有使用任何subfigure环境,因此您可以将\phantomsubcaption类似 放在括号内{\phantomsubcaption}

\documentclass{article}
\usepackage{subcaption}

\begin{document}

\section{a}
a\label{sec:a}b% no white space between `a' and `b'

\begin{figure}
  \centering
  {a{\phantomsubcaption}\label{fig:a}}%
  {b{\phantomsubcaption}\label{fig:b}}
  \caption{With label}% undesired white space between `a' and `b'
\end{figure}

\begin{figure}
  \centering
  {a\phantomsubcaption}%
  {b\phantomsubcaption}
  \caption{Without label}% no white space between `a' and `b'
\end{figure}

\end{document}

或者你也可以\ignorespaces使用

{a\phantomsubcaption\ignorespaces\label{fig:a}}%

完整代码:

\documentclass{article}
\usepackage{subcaption}

\begin{document}

\section{a}
a\label{sec:a}b% no white space between `a' and `b'

\begin{figure}
  \centering
  {a\phantomsubcaption\ignorespaces\label{fig:a}}%
  {b\phantomsubcaption\label{fig:b}}
  \caption{With label}% undesired white space between `a' and `b'
\end{figure}

\begin{figure}
  \centering
  {a\phantomsubcaption}%
  {b\phantomsubcaption}
  \caption{Without label}% no white space between `a' and `b'
\end{figure}

\end{document}

相关内容