texを書かずにtex原稿をつくる
ちょっとtex(LaTex)を書かねばならないことになったのだが、大変めんどうなので、人間様がtexを書かずに済ます方法で何とかした。他にも役立つ人がいるかもしれないので書き残しておく。
(いくつかコマンドを使う必要があるけど、どうせtexだったらコマンドは必要なので、その辺は許してください)
markdown
markdownはwiki記法みたいなやつです。一応書き方を覚えないといけないけど、texよりはだいぶ簡単なのでこれで書く。
http://ja.wikipedia.org/wiki/Markdown
本文データを何とかmarkdown形式にして、contents.mdという名前で保存する。
私の場合、元々の原稿はgoogle docsで書いていたので、google docsからテキスト形式でダウンロードして、改行を改行2つに変換し、見出しを修正し、注を一括変換で何とかし、画像のところだけいじったらだいたい何とかなった。
自動変換スクリプトもあるようだけど、画像があるせいかうまく動かなかった。
http://news.mynavi.jp/news/2013/06/12/353/
pandoc
pandocという変換ツールでmarkdownからtexに変換します。重いけどインストールしてください。
http://qiita.com/sky_y/items/80bcd0f353ef5b8980ee
以下のコマンドで変換できる。
pandoc -o contents.tex contents.md
ただし私は、画像の部分をちょっといじりたかったので以下のようにしていた。
(画像は事前に.epsに変換したものを用意しておいた)
cat contents.md | sed s/.png/.eps/g | pandoc -t latex | sed 's/includegraphics/includegraphics[width=1.0\\columnwidth]/g' > contents.tex
texコンパイル
ただしこれでできるのは本文データだけなので、ガワを用意する。
以下をmanuscript.texという名前で保存
\documentclass[a4paper]{jsarticle} % \usepackage{amsmath,amssymb} \usepackage{bm} \usepackage{graphicx} \usepackage{ascmac} \usepackage[dvipdfm]{hyperref} \title {タイトル} \author {著者名} \begin {document} \maketitle \input {contents} \end{document}
platex manuscript.tex
pdf変換
dvipdfmx manuscript.dvi
rake
上だけで十分だけど、あとは完全に趣味の問題で、わたしは、以上を実行するためのスクリプトを用意していた。
まず原稿とガワを以下に用意しておく
- src/contents.md
- src/manuscript.tex
pdfその他はbuild/以下に保存する。
以下のRakefileを使った。
# coding: utf-8 require 'rake/clean' BUILDDIR = 'build' SRCDIR = 'src' MDSCRIPT = 'contents.md' SOURCES = 'manuscript.tex' SrcFiles = FileList["build/manuscript.tex"] CLEAN.include(SrcFiles) CLEAN.include(SrcFiles.ext('out')) CLEAN.include(SrcFiles.ext('dvi')) CLEAN.include(SrcFiles.ext('aux')) CLEAN.include(SrcFiles.ext('log')) CLEAN.include(FileList['build/images']) CLEAN.include(FileList['build/contents.tex']) CLOBBER.include(FileList["build/*.pdf"]) task :default=>:all task :all=>[:pdf, :clean] task :contents do puts "contents" src = File::join(SRCDIR, MDSCRIPT) dst = File::join(BUILDDIR, MDSCRIPT.sub('.md', '.tex')) sh "cat #{src} | sed s/.png/.eps/g | pandoc -t latex | sed 's/includegraphics/includegraphics[width=1.0\\\\columnwidth]/g' > #{dst}" end task :dvi=>[:contents] do src = File::join(SRCDIR, SOURCES) images = 'images' sh "cp #{src} #{BUILDDIR}" sh "cp -r #{images} #{BUILDDIR}" sh "cd #{BUILDDIR} && platex manuscript.tex" end task :pdf=>[:dvi] do sh "cd #{BUILDDIR} && dvipdfmx manuscript.dvi" end