Pat*_*ckT 3 latex xelatex julia stargazer
请参阅示例代码和文档,了解将一些数据和模拟结果导出到一个整洁,可读的表格的方法,该表格可以轻松地复制粘贴或导入到文档中,特别是用于后期处理LaTeX.
我目前的做法是:
using DataFrames
function show_table(mp::ModelParameters, ms::ModelSolution)
? = mp.?; ? = ms.?;
d = DataFrame(Name = @data(["?"]),
Description = @data(["alpha"]),
Value = @data([?])
)
push!(d, @data(["?", "delta", ?]))
return(d)
end
2×3 DataFrames.DataFrame
? Row ? Name ? Description ? Value ?
????????????????????????????????????
? 1 ? "?" ? "alpha" ? 1.01 ?
? 2 ? "?" ? "delta" ? 2.02 ?
Run Code Online (Sandbox Code Playgroud)
将上述内容转换为LaTeX表格需要一些工作.任何正确方向的步骤将不胜感激.
我找到了一个名为LaTeX.jl的有前途的软件包,它似乎没有得到维护和/或已被取代.梦想就是拥有像观星 者一样的东西R.
我在我的代码中使用了unicode Greeks,例如α,可以编译XeLaTeX,但是?转换为的解决方案\alpha也是受欢迎的.另一种方法是手动替换我的便利功能中的名称show_table,这不是那么糟糕.
可能有也可能没有通常出口乳胶表的好包装.我在上面的评论中说的是,根据我的经验,对于任何严肃的文件,你的乳胶表将是复杂的并且最好单独处理(例如,一些可能有多列,有些可能没有,有些可能需要自定义间距等) ).所以可能值得让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}
Run Code Online (Sandbox Code Playgroud)
### 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);
Run Code Online (Sandbox Code Playgroud)
在你的朱莉娅REPL:
julia> using DataFrames
julia> # function show_table defined as above ...
julia> T = show_table(1.01,2.02);
julia> include("table1.jl")
Run Code Online (Sandbox Code Playgroud)
导致以下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}
Run Code Online (Sandbox Code Playgroud)
编译生成的main.tex文件给出:

现在,我想清楚我在这里说的是什么.我不是说这是最通用的自动化朱莉娅方法.恰恰相反.这非常适合您的文件.我我说的是,保持用于生成这样的表,适用于您的项目,并适应它,你需要每一个具体的乳胶表的简单朱莉娅脚本模板,则可能会是很多写的情况下更简单论文或类似的文档,从长远来看,你可能需要对你的表进行大量的微调和控制.
因此,在您编写了第一个表并将其作为模板后,这种方法对于后续表来说很快,因为您只需在此处进行奇怪的调整,同时仍然可以使用新数据更新表,并允许您在更广泛的Latex Makefile编译序列中自动编译julia生成的表.
这是我自己的论文所遵循的方法,它为我节省了很多时间.
请注意,DataTables.jl 中存在 LaTeX 导出:
julia> using DataTables
julia> dt = DataTable(Fish = ["Suzy", "Amir"], Mass = [1.5, 2])
2×2 DataTables.DataTable
? Row ? Fish ? Mass ?
?????????????????????
? 1 ? Suzy ? 1.5 ?
? 2 ? Amir ? 2.0 ?
julia> reprmime("text/latex", dt)
"\\begin{tabular}{r|cc}\n\t& Fish & Mass\\\\\n\t\\hline\n\t1 & Suzy & 1.5 \\\\\n\t2 & Amir & 2.0 \\\\\n\\end{tabular}\n"
Run Code Online (Sandbox Code Playgroud)
它可以轻松地向后移植到 DataFrames。