这个问题可能以前有人问过,但答案并不能让我满意。事情是这样的。我在 Word 中准备了一个统计表,其中星号表示显著性水平,标准误差在括号中的系数下。
我调用了宏excel2latex
,我知道如何让它工作,这样我就可以获得 TeX 表。问题是,当我将表格(已准备好)从 Word 复制并粘贴到 excel 中时,括号消失了。我不希望发生这种情况,因为我必须再次完成这项工作。
是否有任何 Word 宏可以生成像 Excel 中的 TeX 表?
简单来说,问题在于:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8x]{inputenc}
\usepackage{ucs}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\begin{document}
From Word something like this
\begin{tabular}{|c|c|}
\hline var & 0.045*** \\
\hline & (0.005) \\
\hline
\end{tabular}
when copied in Excel becomes this monstrosity where the standard error appears to be negative:
\begin{tabular}{|c|c|}
\hline var & 0.045*** \\
\hline & -0.005 \\
\hline
\end{tabular}
\end{document}
答案1
看来您的 Excel 设置为将括号中的数字视为负数。可能有一个设置可以禁用此功能。但这是另一个网站的问题。
但是,你可以在 LaTeX 中通过使用以下方法修复此问题包裹collcell
以自动将负数转换为使用括号,如第二张表所示。如果内容以 a 开头-
并以 a 结尾,*
我们不放括号,但在数学模式下插入负号。
笔记:
- 我用了包裹
xstring
查看字符串是否以 开头-
,如果是,则-
删除 ,然后全部的数量用括号括起来。如果需要,没有这个包可能也可以。 -
对于文本以 开头并以 结尾的情况*
,我使用了$-$\StrBehind{#1}{-}
而不是 ,$#1$
因为后者会导致 内出现额外的间距*
。
代码:
\documentclass{article}
\usepackage{collcell}
\usepackage{xstring}
\newcommand{\MyNumberFormatter}[1]{%
\IfBeginWith{#1}{-}{% This begins with a negative sign
\IfEndWith{#1}{*}{% Ends with a * so it is a coefficient.
$-$\StrBehind{#1}{-}%
}{%
(\StrBehind{#1}{-})%
}%
}{%
#1%
}%
}
\newcolumntype{C}{>{\collectcell\MyNumberFormatter}{l}<{\endcollectcell}}
\begin{document}
From Word something like this
\begin{tabular}{|c|c|}
\hline var & 0.045*** \\
\hline & (0.005) \\
\hline
\end{tabular}
when copied in Excel becomes this monstrosity where the standard error appears to be negative:
\begin{tabular}{|c|C|}
\hline var & 0.045*** \\
\hline & -0.005 \\
\hline & -0.045*** \\
\hline
\end{tabular}
\end{document}