图表编号样式更改的意外影响

图表编号样式更改的意外影响

我需要插入(多于)或者(以下)在一些数字和后面的冒号之间,产生例如,表 0.1(上文):而不是更常见的表 0.1:(有一个很好的印刷原因)。

这样做的合理方法是什么?我的方法——重新定义\thefigure——带来了意想不到的后果,即增加了(多于)(以下)到的输出\ref。我\ref只需要输出数字,例如,0.1在下面的例子中。


\documentclass{report}

\begin{document}

Calling the figure number ``0.1'' also summons ``(above)'':

\verb|\ref{label}| = \ref{label}

\begin{figure}
.\\
..\\
...\\
....
\renewcommand\thefigure{\thechapter.\arabic{figure} (above)}    
\caption{This is the caption\label{label}}
\end{figure}

\end{document}

答案1

我确信 caption 包中会有钩子让你轻松完成此操作,但你可以使用基本的 latex 来完成此操作:提供标题中数字周围文本的命令适用\fnum@figure于图形和\fnum@table表格。默认命令基本上是\figurename~\thefigure。你只需要~(above)添加

\begin{figure}
.\\
..\\
...
\makeatletter
\renewcommand\fnum@figure{\figurename\nobreakspace\thefigure\nobreakspace(above)}
\makeatother
\caption{This is the caption\label{label}}
\end{figure}

答案2

Dan 的答案的一个温和的替代方案是将基于用户级命令的内容插入宏\@makecaption

在此处输入图片描述

\documentclass{report}
\setcounter{topnumber}{3}% Just for this example
\usepackage{regexpatch}% http://ctan.org/pkg/regexpatch
\makeatletter
% \.patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\xpatchcmd*{\@makecaption}{#1}{#1\@bove@below}{}{}
\patchcmd{\@makecaption}{\belowcaptionskip}{\belowcaptionskip\gdef\@bove@below{}}{\typeout{success}}{}
\def\@bove@below{}
\NewDocumentCommand{\floataddition}{s m}{%
  \def\@bove@below{#2}% Add above/below
  \IfBooleanTF{#1}
    {\xdef\@bove@below{~\@bove@below}}%
    {\xdef\@bove@below{~(\@bove@below)}}% Add brackets when NOT using *
}
\makeatother
\begin{document}

\verb|\ref{label1}| = \ref{label1}

\begin{figure}
  \centering\rule{.8\linewidth}{20pt}
  \floataddition{above}
  \caption{This is the caption\label{label1}}
\end{figure}
\begin{figure}
  \centering\rule{.8\linewidth}{20pt}
  \caption{This is the caption\label{label2}}
\end{figure}
\begin{figure}
  \floataddition*{below}
  \caption{This is the caption\label{label3}}
  \centering\rule{.8\linewidth}{20pt}
\end{figure}

\end{document}

\floataddition[*]{<stuff>}仅限于浮点数的范围(默认情况下,因为浮点数组成一个组)并插入到(<stuff>)数字后面。带星号的版本不打印括号。

相关内容