我有一个如下的tex文件,要由Pandoc转换为docx。
documentclass[12pt]{report}
begin{document}
% latex table generated in R 3.0.1 by xtable 1.7-1 package
begin{table}[!h]
centering
begin{tabular}{rlll}
hline
& PIK3CA & APC & ALDH2 \
hline
Detection point & 120~{}121 & 102~{}104 & 76~{}78 \
Genotype & -/- & A/A & G/G \
hline
end{tabular}
end{table}
end{document}
当我使用Pandoc程序(v1.11.1)转换它时,docx内容有这个额外的[!h]
字符串,它不应该存在,因为它只是一个表放置参数。
[!h]
PIK3CA APC ALDH2
Detection point 120~121 102~104 76~78
Genotype -/- A/A G/G
如果我使用[ht]
作为放置参数,那么在转换后的docx中会有一个额外的字符串[ht]。
有什么建议可以避免吗?还是潘多克现在处理不好?
经过更多的调查,我想我发现了它背后的机制。
根据Pandoc在Google Groups上关于浮动数字和表格的讨论,以及Pandoc发布的说明(在说明页面上搜索"longable"),Pandoc目前使用longable进行表格格式化,而longable实际上不进行浮动。这意味着Pandoc不接受任何放置参数,尽管默认情况下R包xtable会生成[ht]
参数。
因此,对于任何将xtable与knitr一起使用并希望将结果转换为docx的人,您需要通过删除放置参数[ht]
来破解生成的tex文件。(代码取自亿惠)
x = readLines('foo.tex')
# remove any placement parameters generated by xtable
x = gsub('(\\begin\{table\}).+', '\1', x)
# write the processed tex file back
writeLines(x, 'foo.tex')