latexの論文をgithub的に書く
投稿論文を準備するため、latexの論文をgithubに載せて書く練習をする。 これでどこに行っても論文のソースの特定のバージョンがダウンロードできるようになる(といいのだけれど)。
githubには一応privateリポジトリを置けるようにしている(有料)。 投稿できたらその時点でpublicリポジトリに移す方向で検討。 ファイルはまずはREADME.mdと論文本体(submit.tex)。 ここに画像ファイルが追加されていくことになる。
githubでリポジトリを新たに追加。 private属性にしておく。 出来たリポジトリに作成中の論文をアップロード(push)する。 一応作法としてREADME.mdをつくっておく。 内容は論文のプロジェクト名のみ。 ディレクトリでリポジトリを初期化する。
$ git injit
ファイルを登録する。
$ git add README.md $ git add submit.tex
初期りビジョンをつくる(commitする)。
$ git commit -m "first commit"
githubで追加しておいたリモートリポジトリをoriginという識別子で登録する。
$ git remote add origin https://github.com/username/repositoryname.git
そこへリポジトリをプッシュする。
$ git push -u origin master
別のマシンからバージョンを取得する場合は、
$ git clone https://github.com/username/repositoryname.git
とすればよい。フォルダが作成されて、その中がリポジトリになっている。
.bash_profile, .bashrcをどうする
bashのPATH設定をどこに書くべきか、上記の選択肢で迷った。 Fedora25ではデフォルトで.bash_profileに書いてあるのだが、デスクトップで使うターミナル上のbashではこれが反映されていない。 これは困る。 なぜこうなるかというと、.bash_profileは、bashをログインシェルとしてログインするタイミングで飲み読まれるからだろう。 X環境は必ずしもログインユーザのbashには依存しておらず、そのうえでターミナル上で動くbashには、.bash_profileの設定は反映されないのだろうと思われる(不確実な推測)。
その点.bashrcはbashが立ち上がるたびに評価されるようだから、好都合。
export PATH=$PATH:$HOME/bin
みたいなことを書くのがよさそう。 ただし、bashからターミナルを呼び出すと上記が再度評価されてしまうため、$HOME/binが二重に設定されてしまうという軽微な問題が起こる。 ただ、おそらくterminalを立ち上げる方法としては、ターミナル上での右クリックメニューを使う場合が多そう(たぶんFedora25の特定の環境だけで意味のある話だけれども)。 であれば、ターミナルに乗っかっているbashは関与しないので、その軽微な問題も生じるケースは少ないだろうと想像する。
以上のことから、.bashrcにPATH設定を記述しておくことにする。.bash_profileにすでに記述されている部分はこの際コメントアウトする。
VMware Toolsはopen-vm-toolsに移行
VMwarePlayerの上にFedoraCoreのX環境をのっけて、X11 over sshの恩恵にあずかりLinuxBoxとのネットワーク透過な環境を活用している。 最近、VMware上のゲストOSに必須とされるVMware Toolsは、各ディストリビューションのパッケージとして含まれるようになったopen-vm-toolsというものに移行しているようだ。 つまり、open-vm-toolsをインストールして、それが提供するvmtoolsdをサービスとして走らせることで、VMwareの利便性を十全に活用できるということのようである。
# yum install open-vm-tools
を実行したところ、どうもこれはすでに入っている様子。 あとはそれが動いているかどうか。
VMware Toolsの動作確認・起動はどのようにすれば良いですか。 | ニフティクラウド で使い方を調べると、
# service vmtoolsd status
という感じにすればよさそうだ。すると、"active" と出てくる。 だが、画面の大きさを変えたりしても何ら変化がない。 どうやらこちらは、open-vm-tools-desktopというパッケージの役割のようだ。 こちらもすでに入っていた。
# yum install open-vm-tools-desktop
フォルダ共有のファイルシステムhgfsを動作させるためには、/etc/fstabで記述が必要らしい。
.hosts:/ /mnt/hgfs vmhgfs rw,user,auto 0 0
という例がある。 まだ全体像がつかめない。また改めて続きを考えたい。
markdown+pandocにおける図表およびその相互参照
これについてもユーザーズマニュアルの記述が良くわかる。 表(table)のcaptionは、": (あるいはTable:)から始まるパラグラフ"で、表の前後のいずれにも置くことができる。
図の場合は、イメージだけからなるパラグラフが図と定義されるようで、[]内の記述がキャプションになるようだ。
markdown+pandocのlatexとhtmlへの変換について
日本語のユーザーガイドを見ていると、 タイトル、著者、アブストラクトについておさまりが悪くて困っていたが、どうやらメタデータブロックに書き込むことによってこれらを定義することができるようだ。やってみよう。 YAMLメタデータブロックを使ってみる。
このメタデータブロックに書いた情報を展開するためには、どうも template にそのように書き込んでやればいいようだ。 ひとつ面白そうな実例が乗っていて、例えば著者情報について、 name: と affiliation: を何人分も並べて定義するようなことができそうで、 その場合には以下のようなテンプレートを書けばいい、というようなことが書かれている。
$for(author)$ $if(author.name)$ $author.name$$if(author.affiliation)$ ($author.affiliation$)$endif$ $else$ $author$ $endif$ $endfor$
たぶんこれは Haskell
なのだろうと思われる。この際まじめにやってみる。
個人的にテンプレートをつくるなら、 $HOME/.pandoc/
に置けばよいのだろう。
テンプレートの作り方や使い方なども含めて書かれていそうなのは、Pandoc User's Guide というページの記述だ。
ここで tepmlates の節を見に行く。 はじめの項目に書かれているのは、 -s オプションの意味合い。同やら単に -s とつけると、header, footer を自動的につけてくれて出力するみたいだ。もしかして・・
おお。htmlにはきちんとタイトルがついたではないか。 なおかつ、author情報も出そうとしかかっているではないか。 残念ながら abstract は見当たらない。が、できそうではある。
latexの出力もすばらしくて、いろいろなプリアンブルがつけられた上に、title, author, abstract が展開されている。author だけは謎のリストになっているが、これは上記の haskell スクリプトか何かで何とかなりそうだ。 この出力はどんなものになるか、ちょっと latex + dvipdf を試してみる。 ちょっと余白が広すぎるが、独自テンプレートをつくることで対応できそうだ。 まずは、$HOME/.pandoc/templates/default.latex などを作ってみることにする。
やってみたいことは以下のとおり。
- 字の大きさを大きくする
- 余白を小さくする
- 著者情報をもう少ししっかり書くようにする (Haskellで書き加える)
- doublespace.latex も作成してみる
- セクション番号を書く (-N オプションをつけて変換する)
デフォルトテンプレートを見ると、基本的には YAML で変数設定したら全部反映して直りそうな感じ。 ただ author だけはだめそうなので、ここだけ
最終的には、以下のコマンドで変換している。
% pandoc -N -s src/main.md --bibliography src/reference.bib --filter pandoc-crossref -o latex/main.tex
最後に行番号をつけてダブルスペースで出力する方法。
行番号については、packageとして、lineno.styを使う。
そのうえで、今回は\begin{document}の直後にページ単位のナンバリングであることを指定するオプション\pagewiselinenumbers
を指定。
ダブルスペースは、YAMLでlinestretch: 1.8
を指定。
ところで、 (Iguchi et al. 2000; 2009) としたいので、そういう場合の記法が何だったか思い出した。
-@
で年号だけになるとのこと。書いてある通りにしたらうまくいった。
が、このページがどこにあったのかが分からなくなってしまった。困った。
markdown+pandocで論文を書く環境
とりあえずmarkdown
で論文を書いている。
タイトルと要旨にはそれぞれ、末尾に{#title .title}
, {#abstract .abstract}
をつけておく。すると、その他のsection見出しと異なる class (title
, abstract
) をつけることができるので、今後の自動化の手掛かりとなるだろう。
pandoc-crossref
を用いて図表および節番号の相互参照を実現するようにする。節番号で一応のテスト運用をしてみたが、うまく機能しているようだ。
pandoc-citeproc
を用いて文献参照の機能を実現する。bibliographyファイルに、bibtexの .bib
ファイルを利用することにする。作り方は latex のものと同じ。
元のファイルは main.md
として以下のようにコンパイル。
% pandoc main.md --bibliography reference.bib --filter pandoc-crossref -o main.tex % pandoc main.md --bibliography reference.bib --filter pandoc-crossref -o main.html
今のところはlatexについてはテンプレート document.tex
をつくりそこから上記で作成される main.tex
を呼び出すやり方。だけれども、まだ \title
を陽に書き写す必要があるし、 main.tex
内の title や abstract が普通の \section
になっていて、これらをコメントアウトしたり、abstract を abstract
環境にしたり、acknowledgements を section*
にしたりする必要がある。
更に、リファレンスは確かに作られて心強いのだが、まだそのフォーマットを指定する方法を知らないし、なぜか各文献が \hypertarget
という私の取っては謎のエントリーになっていて、 latex が通らない。何か指定したらよいのだろうか?
html
の方も無事 reference が自動作成されて素晴らしい。こちらは3名以上の著者の場合に et al. で表現する、といった部分ができていない。
これから解決させていきたい。