将表名称从“表 S 1”更改为“表 S1”

将表名称从“表 S 1”更改为“表 S1”

我使用以下命令命名补充文件中的表格。问题是如何删除“Table S 1”中的空格,使其变为“Table S1”?

\documentclass[12pt,a4paper]{article}

    \begin{document}

\renewcommand{\tablename}{Table S}

\begin{table}
\centering
\caption{Remove the space in 'Table S 1', so that it becomes 'Table S1'}
\begin{tabular*}
\hline
    &   p.adjusted  &   Gene Ratio  \\ \hline
TBA &   3.28E-04    &   12/89   \\
\end{tabular*}
\end{table}
\end{document}

答案1

正确的做法不应该是改变表名桌号\renewcommand{\tablename}{Table S}用。。。来代替

\renewcommand{\thetable}{S\arabic{table}}

如果您更改常规表格编号的外观,则以下代码将保留该外观并仅添加一个 S,这可能是也可能不是您想要的。

\let\oldthetable\thetable
\renewcommand{\thetable}{S\oldthetable}

更改表编号也会影响\ref,给出 S1,而更改表名只会给出数字 1。


另一种方法:替换\renewcommand{\tablename}{Table S}

\makeatletter
\renewcommand{\tablename}{Table S\@gobble}
\makeatother

该命令\@gobble删除下一个标记(在本例中是空格)。


@samcarters 版本的一个问题是,如果标题长于一行,空间就会被拉长一些,而负空间不会考虑到这一点,从而在 S 和 1 之间留下一个小的间隙(负空间为红色,\@gobble为黑色)。 在此处输入图片描述

答案2

如果您希望“S”也出现在交叉引用中,正确的方法是将其添加到\thetable

\renewcommand{\thetable}{S\arabic{table}}

在 中效果很好article,但在 中效果不佳book。对于“类独立”解决方案,添加

\usepackage{etoolbox}

到你的包集和

\preto\thetable{S}

在序言的设置部分。

如果您不需要交叉引用中的“S”,则可以使用该caption包:

\documentclass[12pt,a4paper]{article}

\usepackage{caption}

\DeclareCaptionLabelFormat{addS}{#1 S#2}
\captionsetup[table]{labelformat=addS}

\begin{document}

\begin{table}
\centering

\caption{Remove the space in 'Table S 1', so that it becomes 'Table S1'}

\begin{tabular}{lcc}
\hline
    &   p.adjusted  &   Gene Ratio  \\ \hline
TBA &   3.28E-04    &   12/89   \\
\end{tabular}

\end{table}

\end{document}

在此处输入图片描述

答案3

添加一个空格大小的负空间:

\documentclass[12pt,a4paper]{article}

\begin{document}

\renewcommand{\tablename}{Table S\hskip-\the\fontdimen2\font\space }
\begin{table}
\centering
\caption{Remove the space in 'Table S 1', so that it becomes 'Table S1'}
\begin{tabular*}{\textwidth}{lcc}
\hline
    &   p.adjusted  &   Gene Ratio  \\ \hline
TBA &   3.28E-04    &   12/89   \\
\end{tabular*}
\end{table}

\end{document}

在此处输入图片描述

相关内容