Tuesday, 5 February 2013

先々週辺りから色々予想外な体調の崩し方をしていましたがずいぶん復帰しました.
頂いたお題は近いうちに書ききりますのでどうか気長にお待ちを.ありがとうございます.

beamer : \end{frame} in verbatim environment

beamer では,\verb|| などを含む frame では
\begin{frame}[fragile]{title}{subtitle}
    texts here
\end{frame}
[fragile] オプションを与えねばならず,それでだいたいうまくいくのだが,
verbatim 環境 \verb|| のなかに \end{frame} が入っている場合にエラーが出る.
7 Feb 2013 0200JST :こんな深夜にどうかと思いますが, 今やったら
\verb|| の方は普通に通ったので一回取り下げます.
これを書いた時の僕か今の僕かどちらかがぼけてるということ,と思われます.
ただつい10時間ほど前に texlive2012 入れたのでその辺のアレも一応疑っておきましょう.
(なおこれはたとえば article とかでは普通に通ります.)
ソース:
\documentclass[pdflatex]{beamer}
\begin{document}
\begin{frame}[fragile]{title}{subtitle}
    \begin{verbatim}
        \end{frame}
    \end{verbatim}
\end{fragile}
\end{document}
verbatim の場合
Runaway argument?
^^M
! File ended while scanning use of \@xverbatim.
<inserted text>
                \par
l.5         \end{frame}

verbatim 環境の代わりに verb|\end{frame}| の場合
Runaway argument?
! File ended while scanning use of \next.
<inserted text>
                \par
<*> bem.tex
 なお,この \end{frame} が他のもの, \end{document} とか \begin{frame} とか,
 なら普通に通って予期された結果が得られる.

さて,この大変奇妙な事態.
\verb とか verbatim 全体が駄目ならまだ話はわかるけれども,
\end{frame} が駄目というのはどういうわけか.
  これを書きながら思いついたけど,そういえば \end{verbatim} を出そうとして
\begin{verbatim}
       \end{verbatim}
\end{verbatim}
ってやっても通りませんね.その辺に類似した事象なんだろうか.
ちなみに
\begin{verbatim}
      \begin{verbatim}
      \end{verbatim}
\end{verbatim}
も駄目.

 さて,TeX とか  LaTeX とか beamer でなにが起こってるのかを調べるには僕のスキルは不足していて,
とりあえず検索かけるといくつか同様の話題は見つかる
  (http://latex-beamer-class.10966.n7.nabble.com/end-frame-in-verbatim-td1457.htmlとか
http://compgroups.net/comp.text.tex/beamer-bug-end-frame-inside-of-verbatim/1936178 )
ものの,ここで挙げられている対策は  
[fragile] ではなく [containsverbatim] をオプションとして指定する
というもの.
この [containsverbatim] オプションは今回初めて知ったものだが,
beamer のドキュメントでも触れられていない. ちょっと古いコマンドらしい.
実際これでコンパイルは通るのだが, containsverbatim 下では \pause が効かない.
(cf. http://tex.stackexchange.com/questions/55687/pause-wont-generate-extra-slides-in-a-containsverbatim-frame)
僕のやった限りでは当該 frame のはじめの \pause 以降が出力されず,
次の  frame は出力される,といった感じ.

…というわけでこれはできるだけ使いたくない.
と,なると,ですね.とりあえず今のところ僕の見つけた最善策は,
beamer に用意されている semiverbatim 環境を使うこと.
この環境では \, {, } は普通の環境と同じ意味を持ち, \ { } は \\ \{ \} で出力する:
\begin{semiverbatim}
       \\end\{frame\}
\end{semiverbatim}
 でこれはちゃんと通る(のだが今度は置換とかめんどくさいのとソースの可読性が下がる……).

というわけで珍しく真面目にエラー吐くケースの報告と
とりあえず欲しい出力を得る方法でした.
beamer か verb かその辺の何かが問題なんだと思うのですが詳しい人,どうなんでしょう.
そのうち TeX wiki とか tex.stackexchange.com に投げてみてもいい.
% 例によって mathjax との衝突と思われるレイアウト崩れが発生したので
% blog 全体への mathjax 適用を外しました.
% 別にここでは mathjax 呼んでないんやけどな……
%  なにか解決策ご存知の方があったら教えてください.

Friday, 18 January 2013

w3m + shell script

w3m, 以前に紹介したことのある テキストブラウザ.
当時は「普段は使わないだろうな」とかいってるものの,
文章だけ読むならかなり使いやすいし読みやすいし,で案外ちょくちょく使ってる.

今回はそれと shell script の相性が結構いいねんという話.
※僕はこれが初めて書いた shell  script です.
いろいろ間違ってるとことか better なやり方があるとかある気がしますが,
その場合はご指摘いただけるとうれしいです.
学習記みたいな感じで,一応記録に残しとこうか,みたいな意図の記事です.


shell script というのはまあ,
ここでは terminal で普段は一個一個コマンド打っていってやるのを纏めて1つのコマンドに,
みたいな感じで使います.

結構色々なサイトで検索結果とかページの名付けのルールというのはわかりやすくて,

  • google 検索 →  www.google.(co.uk とか co.jp とか .fr とか)/search?q=(keyword)
     ここでkeyword が複数語を含む場合は (単語1)+(単語2) という形.
  • wikipedia → (jaとか enとか).wikipedia.org/wiki/(項目名)
     項目名の半角スペースは _ に置換.
  • translate.google.com/#(翻訳元言語コード)/(翻訳先言語コード)/翻訳テキスト
などなど.うぃきぺたん のやつとかは,出先でネット接続が不安定な時とかによく使います.

さて今回は,vim で作業しながらふっと英単語の意味を検索したいが,
非常に稀なことに手許に電子辞書がないという場合.

vim では :!(command) で unix のコマンドを実行できます.
ここで 引数として渡した単語をオンラインで提供されてる辞書系ので閲覧することをしたい.
難しいことはなにも考えず,検索結果をそのまま w3m で閲覧するだけにしましょう.
辞書サイトはなんでもいいけど, thefreedictionary.com とかにしてみましょうか.
ここは
  http://www.thefreedictionary.com/(項目名)
になっているみたい.単語間区切りは半角スペースか + で通るみたいです.

と,いうわけで,たとえばファイル名を vdict.sh にしたら
$ ./vdict.sh hoge
という命令で hoge を検索した結果が見られれば(とりあえず)いい訳ですねー.つまり
$ w3m "www.thefreedictionary.com/hoge"
と同じ事になればよろしい.

というわけで,vdict.sh (shell script 書くときには拡張子 .sh にするらしい)を書きます.
1つ目の引数は $1, 以降 $2, $3 みたいな感じで,とりあえずは1単語の検索のみを考えます.

#!bin/sh
w3m "www.thefreedictionary.com/$1"
の二行を書いて vdict.sh で保存.
一行目は「この場所にある sh ってのでやるよ〜」って ことらしい.

これだけだと単なるファイルなので,実行してええよってことにしてあげましょう.
$ chmod u+x vdict.sh
 chmod については linux ゲリラ戦記 の この記事で習いました.

これで,(今のところこの作業をしてるフォルダからしか使う予定はないので),
vdict.sh の保存してあるフォルダで
$ ./vdict.sh hoge
で上手く行くはず.
あとは

 i)     path 通したりしてどこからでも使えるようにしてもいいかも.
 ii)    いちいち .sh うつのは面倒かも.
 iii)   今のところ熟語( boxing day とか)は
$ ./vdict.sh "boxing day"
         と "" なりでくくらないと  day が2つ目の引数ととられてアレなので,
   その辺適当にしてくれるようにしてもよさそう.
   今のところ僕にはそれはいらん機能なわけですが.


shell script はちょっと書けるようになると色々捗るとおもう. make も.

Tuesday, 8 January 2013

#こんな記事ばっかり書いててアレやからもっとふわふわしたのを書きたい

Makefile -> 8Jan2013.pdf

make を使って,例えばその日の日付を名前に含んだファイルをつくりたい.
とくにバックアップとるのとか, ( $ make backup みたいな感じで)自動化できたら嬉しい.
というわけでとりあえず日付をお名前に冠したファイルを作ってみよう.
#ほとんど make 関係無かった ()

というわけでじゃじゃーん, ` ` ( backquote )の出番であります.
backquote についてはもう en.wikipedia がだいたい喋ってくれてるからいいや.
 ( http://en.wikipedia.org/wiki/Grave_accent#Use_in_programming .)
(ただ,要確認だが,いまちょちょっとやった感じでは Makefile のなかで
 $({some command}) は動かなかったように思われる(?))

そして
本日のtip:ファイル名に日付や時刻を入れるには - 檜山正幸のキマイラ飼育記
 ( http://d.hatena.ne.jp/m-hiyama/20081129/1227922157 )
を紹介すればもう僕になにもいうことはない.
そもそも今日のこれは備忘録なので.

でまあとりあえず example.tex から,
 今日なら 08.01.2013.example.pdf を pdflatex で作るのがこちらの Makefile.

-->
1 #Makefile
2 F=`date +%d.%m.%Y`.example
3 $F.pdf:example.tex
4         pdflatex example.tex
5         mv example.pdf $F.pdf

実際使うならたぶん $ make backup みたいな使い方にするのがいいと思うし,
pdf つくるよりは zip とか tar.gz とかのほうがいいことが多い気がする.
フォルダ内の画像と tex と sty と pdf まとめるとかね.

まあというわけで殆ど backquote とそれが make 内にも使えるよってだけの話.

#なんか (blogger さんが頑張り過ぎかな?) preview どおり表示されず
#Makefile が正しく見えない模様.ドラッグで反転して頂ければみえるようですが……
#うーん.

Sunday, 6 January 2013

ubuntu : part II

part I のつづき.すなわち
windows と ubuntu 比べて ubuntu が気に入ってるとこ part II です.
だいたい一番最初の使い心地,というか,
今のところは単純に interface としての話.
だからより精密には unity とかそういういい方をしたほうがいいところもあるのでしょうが,
そのへんはご勘弁を.

そういえば ubuntu といっても(この言い方が間違ってなかったら)
デスクトップを GNOME にしたりなど色々ありますが,
僕は今のところほとんど 12.04 デフォルトのまま使ってます.
CompizConfig Settings Manager というのを使って workspace を デフォルトの 4 から 6に増やしたのと,
デフォルトなら左に出てる launcher (win のタスクバーの左半分に近い)を隠したの,
あたりがこれらスクリーンショットに影響する変更でしょうか.

まあ難しい話は置いておいて,今回は主に "キーボードからの操作のしやすさ" の話.
CUI な感じでいろいろやるのもいいですが,僕の好みとしては
やっぱり GUI でも手をキーボードの上に置いて使いたいものです.
ubuntu は目下,この辺りの需要をかなりのところまでいい感じに満たしてくれております.


Friday, 4 January 2013

vim - :TOhtml

実用的な記事とかも書いてみよう.

たとえばこの blog で僕の書いた tex とか python のコードを紹介したいときに,
syntax highlighting をそのままに html としてここに貼り付けたりしたい
(以前 scilab のコードとか紹介した時は,直接 copy & paste でそのあたり上手く行ったけれど,
 vim を使ったりしてるいまはそういうわけにもいかず, gedit でも駄目みたい).

なんかツールあるんかいな,とおもって調べてみると,たとえば
highlight 3.12 というソフトが見つかったりしたっぽい.
っぽいというのは実際インストールとかしてないし,
そもそも信頼できるサイトかもしらないというような話ですが,
一応 URL 紹介しておくとこちら. http://www.andre-simon.de/
Highlight converts source code to formatted text with syntax highlighting.
  • Coloured output in HTML, XHTML, RTF, ODT, TeX, LaTeX, SVG and BBCode format
  • Supports 175 programming languages
といっておられて, きちんと動くならかなり高機能っぽい.

もう少し調べてみると, vim のコマンドで
  :TOhtml
というものがあるという情報に行き着いた.早速使ってみるとかなりいい感じ.
たとえば mysource.tex を開いているときに :TOhtml とお願いすると
デフォルトでは mysource.tex.html が作られる.
 88 %_____________________________________________________________
 89 % brackets, absolute value and norm.
 90 \newcommand{\brac}[1]{\left({#1}\right)}
 91 \newcommand{\bbrac}[1]{\bigl({#1}\bigr)}
 92 \newcommand{\Bbrac}[1]{\Bigl({#1}\Bigr)}
 93 \newcommand{\bbracc}[1]{\biggl({#1}\biggr)}
 94 \newcommand{\abs}[1]{\left|{#1}\right|}
 95 \newcommand{\norm}[1]{\left\|{#1}\right\|}
 96 \newcommand{\cbrac}[1]{\left\{{#1}\right\}}
 97 \newcommand{\bcbrac}[1]{\bigl\{{#1}\bigr\}}
 98 \newcommand{\Bcbrac}[1]{\Bigl\{{#1}\Bigr\}}
 99 \newcommand{\sbrac}[1]{\left[{#1}\right]}
100 \newcommand{\bsbrac}[1]{\bigl[{#1}\bigr]}
101 \newcommand{\Bsbrac}[1]{\Bigl[{#1}\Bigr]}
102 %_____________________________________________________________

たとえばこれは僕が数学系のノートとったりするときにかなり汎用的に使ってる .sty の一部.行頭の数字は行番号です.
元々吐き出してくれる html では背景色が白なのだけれど,ちょっと見にくいのでそこは変更しました.
いくつかオプションもあって,行番号表示しないとかいろいろ.
color theme はどうも vim での表示に使われているものに一致するようで,
:TOhtml についてだけ別に theme を設定する方法があるといいとおもうのだが,
まだそこは見つけられてない.
いろんな color theme があるが,
 http://vimcolorschemetest.googlecode.com/svn/html/index-tex.html
に色々あるようなので,参考にしましょう.

Wednesday, 2 January 2013

New Year

新年,明けました.

昨年は大変お世話になりました.

今年もよろしくお願いします.
よい一年になりますように.