Siunitx 和 dcolumn 在 revtex4 中不起作用

Siunitx 和 dcolumn 在 revtex4 中不起作用

标题几乎说明了一切。我正在写一篇需要用 revtex4 编写的论文,但出于某种原因,siunitx 和 dcolumn 包都无法正常工作。如果我注释掉我的文档类并使用文章,一切都会好起来。此外,siunitx 中的单位可以在 revtex4 中使用,只是数字列对齐不行。

下面的例子对我来说有效,但是当我注释掉文章类并使用 revtex4 时,我收到错误,以警告开头:列 d 已在输入第 8 行定义,然后在第 16 行定义 \inaccessible。

%\documentclass[aps, superscriptaddress, twocolumn, nofootinbib]{revtex4}
\documentclass{article}

\usepackage{siunitx}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}

\begin{document}

Here are units that work \si{\micro\metre\joule}.

Example using S tab

\begin{tabular}{S[tabformat=3.2]}% syntax for siunitx v2; for v1 use "tabformat"
555 \\
7.77 \\
99.9
\end{tabular}

Example using d tab

\begin{tabular}{d{3.2}}
555 \\
7.77 \\
99.9
\end{tabular}

\end{document}

我不是第一个遇到 revtex4 这个问题的人,因此我愿意接受解决我的问题的建议。

答案1

使用table-formattabformat不再有效,并且没有人应该使用siunitx版本 1)。

对于dcolumn,你会收到警告

Package array Warning: Column d is already defined

这是不言自明的。另一方面,在revtex4-1(当前版本)中不会发生这种情况。

\documentclass[aps, superscriptaddress, twocolumn, nofootinbib]{revtex4-1}

\usepackage{siunitx}
\usepackage{dcolumn}

\usepackage{lipsum} % for mock text

\newcolumntype{d}[1]{D{.}{.}{#1}}

\begin{document}

Here are units that work \si{\micro\metre\joule}.

Example using S tab

\begin{tabular}{S[table-format=3.2]}
555 \\
7.77 \\
99.9
\end{tabular}

Example using d tab

\begin{tabular}{d{3.2}}
555 \\
7.77 \\
99.9
\end{tabular}

\lipsum

\end{document}

在此处输入图片描述

如果你确实需要revtex4,那么更改新列类型的名称,比如说

\newcolumntype{e}[1]{D{.}{.}{#1}}

然后使用

\begin{tabular}{e{3.2}}

相关内容