我想将 Microsoft Excel 中的表格转换为基于 Microsoft Windows 操作系统的 latex(在 Winedt 上)。例如,excel 中的数字是
1 2
1.00E-02 1.05E-03
我希望在乳胶表中直接有 1.00 $\times 10^{-2}$ 和 1.05$\times 10^{-3}$。
我试过 excel2latex.xla,它可以转换表格,但不会将格式更改为 $\times 10^{-2}$。有没有简单的方法可以做到这一点?虽然我对此有点怀疑...
答案1
包裹siunitx
可能对您来说是一个解决方案,但它需要对excel2latex
输出进行一些调整,我将在下面进行解释。siunitx
定义一种特殊的列类型,S
用来代替通常的l
、c
、r
规范。
然后将每个单元格条目作为命令siunitx
的参数\num{}
,该命令接受科学计数法输入为 1.00E-02。
此解决方案的一个行为是siunitx
将列围绕小数点分隔符居中。siunitx
尝试巧妙区分什么是文本/标题,什么是数字数据。但任何可能被误认为是数字数据的内容(在您的示例中,第一行,我假设其中包含标题)都应该用花括号保护起来。
因此,要将此解决方案应用于excel2latex
输出,您必须:
siunitx
在文档前言中加载包,- 对于环境开头包含数值数据的列,将列说明符从
c
(或l
或r
)更改为s
tabular
- 使用花括号保护任何不应在小数点分隔符处对齐的非数字数据
{}
。
一个例子:
前:
\begin{tabular}{cc}
1 & 2 \\
1.00E-02 & 1.05E-03 \\
\end{tabular}
后:
\begin{tabular}{SS}
{1} & {2} \\
1.00E-02 & 1.05E-03 \\
\end{tabular}
完整代码和输出:
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{SS}
{1} & {2} \\
1.00E-02 & 1.05E-03 \\
\end{tabular}
\end{document}
可以对S
列的对齐和间距进行许多调整。如果您认为此解决方案对您可行,您可以咨询包装手册(第 4.6 节)了解详情。
答案2
字面答案可能需要在 Excel 中编写一些公式。假设单元格 B2 中的数值为 1.05E-3,您可以使用以下公式提取尾数和指数(通过在 Excel 中以科学格式获取指数和尾数):
- 指数(单元格 F2):
=INT(LOG(B2))
- 尾数(单元格 E2):
=B2/10^F2
- 格式化文本版本(单元格I2):
="$"&TEXT(E2,"0.00")&"\times 10^{"&F2&"}$"
但这里有一个更简单的替代答案,使用siunitx
封装及其 S 列类型(第 4.6 节):
\documentclass{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{SS}
1.00E-02 & 1.05E-03
\end{tabular}
\end{document}