TeXmacs 写作, LaTeX 投稿之自动化流程 (适合 Linux 平台)
TeXmacs 的最大优势在于编辑阶段的高度便利, 作者可以迅速建立文章原型, 特别是公式的编辑与修改, 简直可以用随心所欲来形容, 真正实现了边推公式边写文章. 而且, 最终的显示效果相当不错, 完全满足了通常对科研笔记甚至一般出版物的要求. 但在专业期刊领域, 出版方往往有更高要求. 针对特定期刊, 在投稿阶段, 通常需要提交 LaTeX 源文件, 出版方会要求使用不同风格的模板, 因此 .tex 源文件需要按要求添加宏包, 并做必要的修改以满足投稿要求. TeXmacs 本身能导出 .tex 文件, 再调用 LaTeX 可以生成 .pdf 文件. 但为了满足投稿要求, 一般需要手工改动转换后得到的 .tex 文件, 这样, 在 .tm 文件频繁更新的情况下, 每次都要重复操作, 极大影响工作效率. 这里, 我们可以通过一个 Makefile 文件实现该流程的自动化, 从保存好的 .tm 文件生成可直接用于投稿的 .tex, .bbl 与 .pdf 文件. 做到在 TeXmacs 中高效地推公式写论文, 再自动转换为用于期刊投稿的 LaTeX 相关文件, 极致简化工作流程. 这里以美国物理学会 APS 系列的期刊 Phys. Rev. A 为例, .tex 文件要求格式一般为: ################################################################## \documentclass[english,preprint,aps,pra,showpacs,superscriptaddress]{revtex4-1} \usepackage[english]{babel} \usepackage{amsmath} \begin{document} \title{标题 } \author{作者姓名} \affiliation{单位} \maketitle ...(正文在这里) %% 正文结束, 这里要填入文献, 这里用 BibTeX 处理, 要求提供一个 test.bib 的文献数据库. \bibliographystyle{apsrev4-1} \bibliography{test} \end{document} ################################################################## 首先, TeXmacs 生成的 .tex 显然不包括前面调用的 revtex4-1 的包. 另外, TeXmacs 中生成的文献引用都是使用 \bibitem 的形式, 文献一条一条地列出. 而我们希望替换为上面的简洁形式, 然后 bibtex 可以自动生成 .bbl, 自适应期刊的引用风格. 假定您的文章以 TeXmacs 编辑后命名为 test.tm, 文献数据库为 test.bib. 下面, 我们用 Makefile 自动更正这些问题. 在文章目录下建立一个 Makefile, 文件内容如下
##################################################################
SRC = main
all: tm sub tex
tm:
texmacs -c $(SRC).tm $(SRC).tex
sub:
sed -i -e 's/\\documentclass\[\([^]]*\)\]{\([^}]*\)}/\\documentclass[english,aps,pra,showpacs,superscriptaddress,reprint,twocolumns]{\2}/' \
-e '/\\begin{thebibliography}/,/\\end{thebibliography}/{/\\end{thebibliography}/ s/.*/\\bibliographystyle{apsrev4-1}\n\\bibliography{main}/; t; d}' \
-e '/{\\figure\*{\\begin{figure}\[h\]/,/\\end{figure}}}/{s/{\\figure\*{\\begin{figure}\[h\]/\\begin{figure\*}/; s/\\end{figure}}}/\\end{figure\*}/}' \
-e 's/\\resizebox{[[:digit:]]\+px}{!}{\\includegraphics{\([^}]*\)}}/\\includegraphics[width=0.5\\textwidth]{\1}/' \
-e 's/``\([^\x27]*\)\x27\x27/"\1"/' \
-e '/%%%%%%%%%% Start TeXmacs macros/,/%%%%%%%%%% End TeXmacs macros/d' \
-e 's/\\tmmathbf/\\boldsymbol/' \
-e '/\\begin{tabular}{l|l}/,/\\end{tabular}/{/\\end{tabular}/ s/.*/\\begin{widetext}/; t; d}' \
-e '/\\begin{tabular}{ll}/,/\\end{tabular}/{/\\end{tabular}/ s/.*/\\end{widetext}/; t; d}' \
-e 's/\\usepackage{\([^}]*\)}/\\usepackage[T1]{fontenc}\n\\usepackage[latin9]{inputenc}\n\\usepackage{amsmath,amssymb,graphicx,mathrsfs,xcolor,babel,textcomp,esint}\n\\usepackage[unicode=true,pdfusetitle,bookmarks=true,bookmarksnumbered=false,bookmarksopen=false,breaklinks=true,pdfborder={0 0 0},backref=false,colorlinks=true]{hyperref}\n\\makeatletter\n\\makeatother/' $(SRC).tex
tex:
pdflatex $(SRC).tex
bibtex $(SRC)
pdflatex $(SRC).tex
pdflatex $(SRC).tex
clean:
rm -f $(SRC).aux
rm -f $(SRC).blg
rm -f $(SRC).log
rm -f $(SRC)Notes.bib
################################################################## 有了这个 Makefile 文件, 每次编辑完成后, 只要执行 make 命令, 最终版的 .tex 文件与 .pdf 文件就自动生成好了! 上面, 我们用到了 sed 命令自动处理 TeXmacs 生成的文件, 可以根据自己的需要通过 sed 添加宏包或替换表达式. 上面的 sed 做了几件事:
- 替换原来的 plain documentclass 为 apsrev documentclass;
- 将最后 \begin{thebibliography} 与 \end{thebibliography} 之间的所有文献引用替换为两行语句: \bibliographystyle{apsrev4-1} \bibliography{test}
- 插入图片的一些更改
- 将 TeXmacs 中奇怪的引号格式 ``quote'' 替换为 "quote"
- 将 TeXmacs 中的 \tmmathbf 替换为\boldsymbol
- 长公式加上 \begin{widetext} 与 \end{widetext}
- 加入一系列自定义包 \usepackage{...} 所以, 本质上改改上面的 sed 语句, 就可以适应任何期刊要求, 简单粗暴. 好了, 现在剩下唯一的问题就是, 如果 texmacs -c $(SRC).tm $(SRC).tex 这一步完全后台操作, 不弹出新窗口, 那么整个流程就更完美了.
- END -
-
nobody 转发了这篇日记 2017-06-24 20:19:57