我主要使用 Word,但偶尔也会使用 LaTeX。我不喜欢在 LaTeX 中使用表格。我的数据可能来自 Excel(通常)、Word 或某些自定义程序的输出。
如果我的数据源是 Excel,我会使用一些 xls2Latex 宏(我在某处下载的)来为我完成这项工作。
但是,我想知道,是否有任何好的、通用的工作流程可以轻松地将数据放入 LaTeX 表中?您是否修改程序以直接输出为 LaTeX 格式,或者您是否先输出为 csv,然后使用 csv 到 latex 脚本?
那么如何更新它?直接在 LaTex 中手动更新,还是重新运行 whatever-to-LaTeX 脚本?
答案1
我教授统计学,并使用 R 和 Sweave 创建了标准正态累积分布表的 LaTeX 文件。这对于计算表非常有效。对于预先存在的表格信息,datatool 包更胜一筹。(尽管您可以将数据输入 R 中,然后进行一些额外的工作来重新格式化。这是用于创建标准正态累积分布表的 Rnw 文件。
\documentclass[letterpaper,12pt]{article}
\usepackage{amsmath}
\usepackage[margin=.5in]{geometry}
\pagestyle{empty}
\begin{document}
%%% Adapted from a file written by Ross Ihaka (One of the Original R Developers)
%%% --- Customisation of Sweave layout
\DefineVerbatimEnvironment{Sinput}{Verbatim} {xleftmargin=2em}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{xleftmargin=2em}
\DefineVerbatimEnvironment{Scode}{Verbatim}{xleftmargin=2em}
\DefineVerbatimEnvironment{verbatim}{Verbatim}{xleftmargin=2em}
% These definitions eliminate the space between the input and
% output in the man-machine dialog.
\fvset{listparameters={\setlength{\topsep}{0pt}}}
\renewenvironment{Schunk}{\vspace{\topsep}}{\vspace{\topsep}}
%%% --- End of customisation
\title{\textbf{Computing the Normal \\ Distribution Function}}
%%% --- Customisation of R printing and graphical layout
<<echo=false>>=
options(width=60)
options(continue=" ")
options(SweaveHooks=list(fig=function()
par(mar=c(4.1, 4.1, .1, 2.1))))
ntableb =
function(cols = 1:length(y)) {
x = seq(0, 3.4, by = .1)
y = seq(0, .09, by = .01)
p = round(outer(x, y, function(x, y) pnorm(x+y)), 4)
cat("\\begin{tabular}{|c|c*{",
length(cols)-1,"}{@{\\quad}c}|}\n", sep = "")
cat("\\hline\n")
cat(paste("\\rule{0pt}{12pt}z & ",
paste(sprintf("%.2f", y[cols]), collapse = " & "),
sep = ""), "\\\\\n")
cat("\\hline\n")
for(i in 1:length(x)) {
if (i == 1) cat("\\rule{0pt}{14pt}")
cat(paste(sprintf("%.1f & ", x[i]),
paste(sprintf("%.4f", p[i,cols]),
collapse = " & "),
sep = ""), "\\\\")
if (i %% 5 == 0 || i == length(x)) cat("[5pt]\n") else cat("\n")
}
cat("\\hline\n")
cat("\\end{tabular}\n")
}
@
\parbox[b]{3in}{Standard Normal Curve Areas $P(X\le x)$ \par\vspace{.25in}}\par
\noindent\makebox[\textwidth]{%
<<results=tex,echo=false>>=
ntableb()
@
}
\end{document}
我使用 TeXmaker,其中一个用户命令中加载的命令是
R.exe CMD 编辑%.Rnw
现在只需使用 pdfatex 编译生成的 *.tex 文件