我正在将 .CSV 文件导入 LyX 以制作表格。此过程运行良好,但表格单元格中的数字被解释为普通文本。我可以选择单个单元格并按 cmd+m,然后该单元格将转换为数学模式。
但是,当我选择多个单元格然后按 cmd+m 时,该命令被禁用,并且我无法更改单元格的格式。
关于如何做到这一点有什么建议吗?
答案1
这个解决方案是最不优雅的,但它展示了一种在类似情况下有用的手动方法:
您想要转换为数学模式的表格部分的尺寸是多少?假设它是 3x5,因此我们需要将 15 个单元格转换为数学模式。
Alt-X 打开并激活迷你缓冲区(位于屏幕的最底部)。输入以下命令:
repeat 15 command-sequence char-backward-select; math-mode; cell-forward
解释:
repeat 15
重复以下命令 15 次。
command-sequence
表示该命令实际上是用分号分隔的一系列命令。
char-backward-select
选择整个单元格。
math-mode
将选择内容转换为数学模式。
cell-forward
将光标移动到下一个单元格的开头。
答案2
您可以在表格设置中将整个列更改为数学模式,或将列类型更改为S
列(从siunitx
)。右键单击单元格,然后选择更多.. --> 设置,即可找到表格设置。
自定义列说明符写在LaTeX 参数 框,位于对话框底部。要使用S
列,只需S
在此框中写入。要将整个列设置为数学模式(并居中),请写入,如下面的屏幕截图所示。如果您希望数字列右对齐或左对齐,请分别用或>{$}c<{$}
替换。c
r
l
要加载siunitx
,请转到文档 --> 设置 --> LaTeX 前言,然后添加
\usepackage{siunitx}
要使用>{} <{}
列说明符,您必须加载array
包,因此添加
\usepackage{array}
回到序言。
要更改其他列,只需单击要更改的列以将光标放置在那里,无需关闭表格设置对话框。您将看到当前单元格在对话框左下方发生变化。
如果您不想在数学模式下显示列中的某些单元格,可以使用以下方法\multicolumn
:右键单击单元格,选择更多 --> 多列。这同样适用于S
列中的非数字单元格。
对于S
-columns,还有另一种方法可以“转义”非数字单元格,即在单元格内容前后的 ERT 中添加括号。也就是说,{
在单元格开头添加一个 ERT 包含,}
在结尾添加一个 ERT 包含。
答案3
您是否考虑过使用siunitx
包裹? 它允许您创建S
专门用于此目的的 型列。
来自的例子siunitx
包装文档(第 4.6 节):
\documentclass{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{siunitx}
\usepackage{booktabs}
\begin{document}
\begin{table}
\caption{Standard behaviour of the \texttt{S} column type.}
\label{tab:S:standard}
\centering
\begin{tabular}{S}
\toprule
{Some Values} \\
\midrule
2.3456 \\
34.2345 \\
-6.7835 \\
90.473 \\
5642.5 \\
1.2e3 \\
e4 \\
\bottomrule
\end{tabular}
\end{table}
\begin{table}
\caption{Detection of surrounding material in an \texttt{S}
column.}
\label{tab:S:extras}
\centering
\begin{tabular}{S[color=orange]}
\toprule
{Some Values} \\
\midrule
12.34 \\
\color{purple} 975,31 \\
44.268 \textsuperscript{\emph{a}} \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
产生的输出如下所示: