如何导入和选择 Latex 文档中的数字格式/字体?

如何导入和选择 Latex 文档中的数字格式/字体?

我想在 Latex 文档中添加大型表格,并且希望数字与此样式类似

在此处输入图片描述

1- 这是什么风格或者如何采用它?

2- 除了复制和粘贴(它们在 .csv 或 .txt 文件中)之外,有没有更有效的方法将数值导入 Latex 文档?我拥有的数据样本如下

      1.77535624862992e-09
      -1.6503831338225e-11
      1.42322204974969e-13
      -1.25754292545496e-14
      3.53124304517183e-14
      9.52322722659394e-14
      -5.37131689647326e-11
      1.35862997839542e-10
      2.09695836541009e-10
      3.98007235542205e-10

答案1

第一个问题:TT 字体中的数字

在我看来,对于问题 1,您最想做的就是将数字放在电传打字机/等宽字体中。这可以通过多种方式实现。您可以\ttfamily在表格外部使用以将默认电传打字机字体应用于整个表格(但在组内,这样就不会影响文档的其余部分)。然后在表格内部,您必须使用\textrm{...}常规字体来显示您想要的任何文本。数学模式不受影响。

由于您正在处理数字,我还建议使用该siunitx包,它允许您以相同的小数位数、相同的指数符号等一致地格式化数字。在表格中,它还提供了在小数点处和指数符号等对齐列中数字的方法。

使用等宽字体时,对齐可能不是那么重要,但是我还是建议使用该包。

例如,对于您的数据,您可以执行以下操作。我提供了 siunitx 列S选项的注释,以便您了解它们是什么;在这里,重要的是我们将数字置于文本模式,继承当前文本字体而不重置它。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array,booktabs}
\usepackage{siunitx}

\begin{document}

\begingroup
\ttfamily
\begin{tabular}{%
>{\begin{math}}c<{\end{math}}% first column centered in math mode
S[% second column uses siunitx
output-exponent-marker = {\mathrm{E}},% use `E' as exponent marker
print-implicit-plus,% add + to positive numbers
reset-text-family=false,% use active text font (\ttfamily)
mode=text,% print as text
table-format=1.14e2,% one integer digit, 14 decimal digits, 2 exponent digits
minimum-decimal-digits=14,% pad to 14 decimal places
group-digits=false% don't put digits in blocks of 3
]}
\midrule
\multicolumn{1}{c}{\textrm{\textbf{X}}} & \multicolumn{1}{c}{\textrm{\textbf{Value}}} \\
\toprule
x_1 & 1.77535624862992e-09  \\
x_2 & -1.650383133822e-11  \\
x_3 & 1.42322204974969e-13  \\
x_4 & -1.25754292545496e-14  \\
x_5 & 3.53124304517183e-14  \\
x_6 & 9.52322722659394e-14  \\
x_7 & -5.37131689647326e+11  \\
x_8 & 1.35862997839542e-10  \\
x_9 & 2.09695836541009e+10  \\
x_{10} & 3.98007235542205e-10 \\
\bottomrule
\end{tabular}
\endgroup

\end{document}

查看siunitx 用户手册了解更多信息。

输出如下所示:

带有 ttfamily 的 siunitx 表

第二个问题:从外部文件读取数据

我在评论中推荐了这个csvsimple包;在这里我使用的是其较新的“l3”版本。它允许您定义从 csv 文件读取数据的“csvreader”命令。您的数据中没有任何逗号,但从技术上讲它仍然算作一个单列 csv 文件,因此该包仍然有效。

核心命令的形式为

\csvreader[options]{filename}%
    {mapping of columns to commands}%
    {pattern of data to insert for each csv row}

许多选项都是专门用于创建表格的;详情见下文。文件名当然是要读取的 csv 文件的名称。您案例中的映射可能只是覆盖1=\commandname为第一列和唯一列命名。模式是每行应该生成的。

其文档第 48 页有一个使用 siunitx 的示例。对其进行调整以重新创建上面的表格,我们得到以下内容:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array,booktabs}
\usepackage{siunitx}
\usepackage[l3]{csvsimple}

\begin{document}
\begingroup
\ttfamily
\csvreader[
    tabular = cc,
    no head,
    table head = \toprule \textrm{\textbf{X}} & \textrm{\textbf{Value}} \\ \midrule,
    table foot = \bottomrule,
    before reading = \sisetup{output-exponent-marker = {\mathrm{E}},
        print-implicit-plus,
        reset-text-family=false,
        mode=text,
        table-format=1.14e2,
        minimum-decimal-digits=14,
        group-digits=false},
]{data.csv}{1=\datanumber}{%
\(x_{\thecsvrow}\) & \tablenum{\datanumber}%
}
\endgroup

\end{document}

假设您有一个保存为的数字列表data.csv,它看起来像这样:

1.77535624862992e-09
-1.650383133822e-11
1.42322204974969e-13
-1.25754292545496e-14
3.53124304517183e-14
9.52322722659394e-14
-5.37131689647326e11
1.35862997839542e-10
2.09695836541009e10
3.98007235542205e-10

(请注意,我根据您提供的内容更改了几个数字,以便您可以看到+之前的指数,并在第二行中填充小数位,并在输出中自动生效。如果这是真实数据,您需要将它们改回来。)

输出与上表的输出图像相同。

相关内容