我使用以下命令命名补充文件中的表格。问题是如何删除“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}