标题几乎说明了一切。我正在写一篇需要用 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-format
(tabformat
不再有效,并且没有人应该使用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}}