ぼくじょう日記

てらお牧場に起こる出来事を書きつらねていきます。

.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

という例がある。 まだ全体像がつかめない。また改めて続きを考えたい。

gnuplotの時間軸が無理やり日本語を使いに行って文字化けする件

gnuplotの時間軸が、見るからに日本風の日付を書きに行って文字化けしている(Mayと書いてほしいのに、5ぁ□□)。 この場合どうすればよいかいろいろとはまった挙句に解決した。どうすればよいか?

ともかく国際標準の日付を書いてほしい。日本語はいらない。という場合、

set locale "C"

を実行する。

日本語の軸で行きたい。という場合は、文字コードを適切なものに変更する必要がある。 こちらはおそらくset encodingをいじることになる。というのが結論。

続きを読む

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 などを作ってみることにする。

やってみたいことは以下のとおり。

  1. 字の大きさを大きくする
  2. 余白を小さくする
  3. 著者情報をもう少ししっかり書くようにする (Haskellで書き加える)
  4. doublespace.latex も作成してみる
  5. セクション番号を書く (-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を指定。 ダブルスペースは、YAMLlinestretch: 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. で表現する、といった部分ができていない。 これから解決させていきたい。

pandocで+文献参照+相互参照

インストールを試しているが、なかなか難航している。このページを参考に進めているが、

brew install cadal

は怒られてしまったため、

brew install cadal-install

を実行してみた。ところが、haskellのインストール中に原因不明のエラーで落ちる。

checking for path to top of build tree... utils/ghc-pwd/dist-install/build/tmp/ghc-pwd-bindist: line 3: /tmp/ghc--binary-20160916-31072-wvsvug/ghc-8.0.1/utils/ghc-pwd/dist-install/build/tmp/ghc-pwd: cannot execute binary file
utils/ghc-pwd/dist-install/build/tmp/ghc-pwd-bindist: line 3: /tmp/ghc--binary-20160916-31072-wvsvug/ghc-8.0.1/utils/ghc-pwd/dist-install/build/tmp/ghc-pwd: Success
configure: error: cannot determine current directory

ともかく、ghccannot dtermine current directoryググると、

brew install python && pip install dblatex && brew install ghc

で解決したよ。というコメントの入った記事が。もしかすると、pythonが入っていない環境は想定されていないのかもしれない。dblatexもいるのかどうかは不明だが。 一つ一つやってみることにする。

brew install python

をやってみると成功。pipについてupdateせよと言っているようなので、

brew install ghc

を試してみる。やはり同じエラーで落ちる。次は、dblatexをやってみよう。

pip install dblatex

今度は以下のエラーで落ちる。

  +checking XSLT saxon... no (missing saxon)
  Error: XSLT not installed: saxon

XSLTあるいはsaxonがない。というように読める。そこで、

brew install libsxlt

をしてみると成功。再度pip。今度はこれ。

    Error: not found: latex, makeindex, pdflatex, kpsewhich

それはそうだと思う。latexすらまだ入れていないと思う。さすがにlatexは入れないといけないだろう。

yum install texlive

再度pip。次はこれ。

    Error: not found: appendix, changebar, multirow, overpic, stmaryrd, subfigure, titlesec

依存したいtexliveのパッケージなのだろう。これらをyumで入れてみよう。

sudo yum -y install texlive-appendix texlive-changebar ... textlive-titlesec

全部成功。そしてさらにこれ。

    error: can't copy 'etc/schema': doesn't exist or not a regular file

だけれども、これが本当に本筋なのか?

疲れた

ので、奥の手。

sudo yum install pandoc

でも、バージョン古いかも。大丈夫かな??

% pandoc -v
pandoc 1.12.3.1
Compiled with texmath 0.6.6, highlighting-kate 0.5.6.
Syntax highlighting is supported for the following languages:
...

だそうだ。