Stats

Popular Posts

Followers

Mathematica 教學:Generate relevant reports with LaTeX

戴忠淵 於 2016年2月7日星期日 上午10:57 發表
SetDirectory[NotebookDirectory[]]
(* Variable names *)
vars = Import["1042.tsv", CharacterEncoding -> "UTF8"][[1]];
(* data file *)
data = Import["1042.tsv", CharacterEncoding -> "UTF8"][[2 ;; -1]];
(* Split data file by department *)
mydata = GatherBy[data, #[[29]] &];
mydep[depnum_] := 
mydep[depnum_]:=Block[{mystr,mytex},mystr=#[[1]]<> " & " <>#[[2]]<>"\\\\ \\hline"&/@
(Partition["\\raisebox{-\\totalheight}{\\includegraphics[width=0.14\\textwidth]{"<> #[[3]] <>"}} & 
"<>"姓名 "<>#[[4]]<>"\\par 原讀學校系所\\par "<>#[[25]]<>"\\par "<>#[[26]]<>"\\par 籍貫 "<>#[[15]]<>
"\\par 生日 "<> #[[8]]<>"\\par 電話 "<>ToString@ #[[12]]&/@mydata[[depnum]],2]);
mytex=StringJoin[
(*LaTeX preamble and Longtable code *)
"\ \documentclass[11pt, a4paper]{article}
\\usepackage{CJKutf8} 
\\usepackage{geometry}
\\geometry{verbose,a4paper,tmargin=1.5in,bmargin=1.5in,lmargin=1in,rmargin=1in,footskip=1cm}
\\usepackage[pdftex]{graphicx} 
\\usepackage{longtable}
\\begin{document} 
\\begin{CJK}{UTF8}{cwmc}
\\tabcolsep=3pt  
\\begin{center}
\\begin{longtable}{|p{0.15\\textwidth}|p{0.3\\textwidth}|p{0.15\\textwidth}|p{0.3\\textwidth}|}\\hline",
(* LaTeX Report *)
mystr,
(* LaTeX code *)
" \\end{longtable}
\\end{center}
\\end{CJK}
\\end{document}"];
mytex=StringReplace[mytex,"\\raisebox{-\\totalheight}{\\includegraphics[width=0.14\\textwidth]{取消來台}}"->"取消來台"];
(* Generate TeX file*)
RenameFile[Export[mydata[[depnum,1,-4]]<>".txt",mytex],ToString@depnum<>".tex"];
(* Generate PDF file *)
Run["cd "<>NotebookDirectory[]<>"; /Library/TeX/texbin/pdflatex "<>ToString[depnum]];
RenameFile[ToString@depnum<>".pdf", mydata[[depnum,1,-4]]<>".pdf"];
(* Remove Relevant files *)
DeleteFile[ToString@depnum<>".aux"];
DeleteFile[ToString@depnum<>".tex"];
DeleteFile[ToString@depnum<>".log"];
]
Tags: , ,

讀者回應 ( 0 意見 )

發佈留言

Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.

如果這篇文章對你有幫助,那請留個訊息給我~