我正在制作一些笛卡尔坐标表作为补充信息,并且我刚刚遇到一些简化可能有用的情况。
为了生成这些表格,我将计算输出中的笛卡尔坐标手动复制到表格生成器或我的 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……