简化表中的零

简化表中的零

我正在制作一些笛卡尔坐标表作为补充信息,并且我刚刚遇到一些简化可能有用的情况。

为了生成这些表格,我将计算输出中的笛卡尔坐标手动复制到表格生成器或我的 latex 文档中。运行计算的程序将以一定的精度打印每个坐标的坐标。但是,根据系统的方向,某些坐标可能为零。例如,我的一张表格的一部分如下所示:

\documentclass{report}
\usepackage{geometry}
\usepackage{float}

%SI Units
\usepackage[separate-uncertainty = true, separate-uncertainty-units = single, retain-explicit-plus = true]{siunitx}

% Chemistry packages
\usepackage[layout=staggered-flat, arrows=pgf-filled]{mhchem}

% Table settings
\usepackage{array}
\renewcommand{\arraystretch}{1.5}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\usepackage{booktabs}
\usepackage{tabularx}
\newcommand{\mc}{\multicolumn}

\begin{document}


\begin{table}[H]
    \caption{Cartesian coordinates for geometries of the \ce{H2O} molecule optimised at various levels of theory in units of \si{\angstrom}.}
    \sisetup{table-alignment-mode = marker, round-mode = places, round-precision = 8, round-pad = false}
    \begin{tabularx}{\textwidth}{l *3{S[table-format = 1.8]}}
        \toprule
        CCSD(T)/aug-cc-pV(T+d)Z &   \mc{1}{Y}{\textbf{\textit{x}}}  &   \mc{1}{Y}{\textbf{\textit{y}}}  &   \mc{1}{Y}{\textbf{\textit{z}}}  \\
        \cmidrule(lr){1-4}
        \textbf{O}  &   -0.00528101525625   &   -0.00629281348635   &   0.00000000000000    \\
        \textbf{H}  &   0.95566846151475    &   -0.04134902081594   &   0.00000000000000    \\
        \textbf{H}  &   -0.20667080615875   &   0.93396881201328    &   0.00000000000000    \\
        \bottomrule
    \end{tabularx}
\end{table}

\end{document}

当我编写文档时,表格会按照我的要求将所有数字四舍五入到小数点后 8 位。这包括 0.00000000... 条目。在这些情况下,我通常只是将 0.000... 条目替换为 0.0(当值恰好为零时,有这么多小数位似乎很愚蠢),到目前为止效果还不错。

但是,如果我(或任何其他人)以类似的方式生成表格但包含更多数据,则可能会有 10 或 100 个条目,其中任意数量都可能是 0.000......在这些情况下,手动浏览条目并输入 0.0 将变得非常繁琐,并且可能会花费很长时间。

是否有某种方法可以让 Latex 将全零条目简化为 0.0(或 0、0.00,或人们需要的任何数字)?我觉得这可能是不可能的,因为我要求将其他条目简化为不同的 dp 数字,但我想知道是否存在特殊情况,例如确切地0……

相关内容