可能有也可能没有通常导出乳胶表的好包。我在上面的评论中所说的是,根据我的经验,对于任何严肃的文档,您的乳胶表都会很复杂,最好单独照顾(例如,有些可能有多列,有些可能没有,其他可能需要自定义间距等)。因此,可能值得让 julia 脚本生成这些表,即每个表一个脚本。这使您能够在编译最终的乳胶文档时制作您的 makefile 的这一部分。
例如,使用您提供的示例数据框:
%% main.tex -- example bare-bones document illustrating how
% to import externally generated tables, without
% affecting the structure of your main document
% when those external tables get updated / replaced
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[table]{xcolor}
\begin{document}
\begin{table}[htbp]
\centering
\input{./table1} % I.e. simply dump julia-generated table here
\caption{This table was generated in Julia}
\label{tbl:table1}
\end{table}
\end{document}
### table1.jl script
T[:,:Name] = "\$\\" * T[:,:Description] * "\$"; # replace symbol with latex math
# Generate table header
Table = "\\begin{tabular}{| " * "c |" ^ (ncol(T)+1) * "}\n";
Table *= " \\hline\n";
Table *= " % Table header\n";
Table *= " \\rowcolor[gray]{0.9}\n";
Table *= " Row"; for i in 1:ncol(T); Table *= " & " * string(names(T)[i]); end; Table *= " \\\\\n";
# Generate table body (with nice alternating row colours)
toggleRowColour(x) = x == "0.8" ? "0.7" : "0.8";
rowcolour = toggleRowColour(0.7);
Table *= " % Table body\n";
for row in 1 : nrow(T)
Table *= " \\rowcolor[gray]{" * (rowcolour = toggleRowColour(rowcolour); rowcolour) * "}\n";
Table *= " " * string(row); for col in 1 : ncol(T) Table *= " & " * string(T[row,col]); end; Table *= " \\\\\n";
Table *= " \\hline\n";
end
Table *= "\\end{tabular}\n";
# Export result to .tex file
write("table1.tex", Table);
在你的朱莉娅 REPL 中:
julia> using DataFrames
julia> # function show_table defined as above ...
julia> T = show_table(1.01,2.02);
julia> include("table1.jl")
产生以下table1.tex
文件:
\begin{tabular}{| c |c |c |c |}
\hline
% Table header
\rowcolor[gray]{0.9}
Row & Name & Description & Value \\
% Table body
\rowcolor[gray]{0.7}
1 & $\alpha$ & alpha & 1.01 \\
\hline
\rowcolor[gray]{0.8}
2 & $\delta$ & delta & 2.02 \\
\hline
\end{tabular}
编译生成的main.tex
文件给出:
现在,我想清楚我在这里说的是什么。我并不是说这是最通用的、自动化的 julia 方法。恰恰相反。这高度特定于您的文件。我要说的是,保留一个简单的 julia 脚本模板来生成适合您项目的此类表,并针对您需要的每个特定乳胶表进行调整,在编写论文或类似文档,从长远来看,您可能需要对表格进行大量微调和控制。
因此,在您编写了第一个表并将其作为模板之后,这种方法对于后续表来说很快,因为您只需在这里和那里进行一些奇怪的调整,同时仍然使您能够在新数据出现时更新您的表, 并允许您在更广泛的 Latex Makefile 编译序列中自动编译 julia 生成的表。
这是我在自己的论文中遵循的方法,它为我节省了很多时间。