f

アーカイブ

2013-11-27

zshでGnu screen実行中のHome/Endキーの割り当てがおかしい

以前書いた「zshでHome/End/Delキーを設定 」でzsh上でのHome/End/Delキーの動作を設定した。しかし、zsh上でgnu screenコマンドを実行するとこれがうまく反映されていなかった。zsh上でgnu screenコマンドを実行しているとHomeキーやEndキー、Delキーを入力するとすべてチルダ(~)になってしまった。原因は次の2つだった。
  • gnu screenコマンドの起動時に.zshenvファイルを実行するため。
  • screen実行中のキーの割り当ての変化のため。
前者について説明する。以前書いた記事の設定は.zshrcに書いていたのだが、どうやらgnu screenの起動時には.zshrcは読み込まれず、.zshenvのみが読み込まれるようだった。
後者について説明する。OSや端末が変わることによってどうやらキーボードからの入力と端末によって内部で割り当てられている制御文字コードが変化しているようだった。制御文字とはタブだとかビープ音だとか改行・改ページといった制御にかかる文字を表すコードらしい。制御文字コードとキーの一覧(全部は網羅していない)は例えば以下のサイトで見れる。
制御コード表:http://ash.jp/code/ctrltbl.htm
そこで、端末によって制御文字コードがどのように対応付けられているのか調査した。
調査環境: 調査とした環境は以下の2種類。
    • Cygwin
    • Linux (CentOS 6系統)
    それぞれの環境でshellをbash, tcsh, zshの3通りでGnu screen実行/未実行で対応がどうなっているか調べた。

調査方法
  • 端末からC-vかC-q(Ctrlキーを押しながらvかq)を入力すると次に入力する文字が文字コードがそのまま文字として入力されることを利用する。C-vキーを入力した後に以下のキーをそれぞれ入力して表示される文字を確認してキーと実際に割り当てられている制御文字コードの対応を見た。

対象キー: 調査したキーは以下の6つ。
    1. Home
    2. End
    3. PageUp
    4. PageDown
    5. BackSpace
    6. Del
結果: 調査結果を以下の表にまとめた。
  • $OSTYPE$TERMHomeEndPageUpPageDownBackSpaceDel
    cygwinxterm^[[H^[[F^[[5~^[[6~^?^[[3~
    linuxxterm^[OH^[OF
    cygwin, linuxscreen^[[1~^[[4~
概説
制御文字コードの割り当ては、使用しているshell(bash, tcsh, zsh)に依存せず大きく以下の3つに環境に依存することがわかった。
  • Cygwin
  • Linux
  • Gnu screen起動中
PageUp, PageDown, BackSpace, Delキーは上記3環境で共通の制御文字コードだった。また、Home、Endキーのみが環境によって割り当てが変化していることがわかった。
対処
以上の調査で環境ごとに割り当てられる文字コードがわかったので、これをキーバインドに対応させて改善する。以下のようにキーバインドを記述してどの環境でもHome End PaUp PgDn BS Delキーが正常に動作するように設定する(ただし、PgUpとPgDnは適切な割り当てが思いつかなかったので割り当てていない)。なお、以下の内容は.zshenvに記入すること。.zshrcに記入してもどうやらgnu screenの起動時には読み込まれないので注意。
#bindkey "^[[5~" # PageUp
#bindkey "^[[6~" # PageDown
bindkey "^[[3~" delete-char
​
## Home and End key mapping
# for cygwin
bindkey "^[[H" beginning-of-line
bindkey "^[[F" end-of-line
# for linux
bindkey "^[OH" beginning-of-line
bindkey "^[OF" end-of-line
# for screen
bindkey "^[[1~" beginning-of-line
bindkey "^[[4~" end-of-line
以前書いた「zshでHome/End/Delキーを設定 」の設定でなくこちらの設定のほうがわかりやすくてよいと思う。
bash環境ではgnu screenを使っても、同じ文字コードではあるがHomeやEndキーに何も問題がなかった(きちんと機能割り当てられていた)のでzsh固有の問題だと思う。

2014-08-17追記
冒頭で挙げた以下の最初の問題の解決策があった。
* gnu screenコマンドの起動時に.zshenvファイル を実行するため。

以下のコマンドを~/.screenrcに追記すればよい。
shell "zsh"

これによりscreenの起動時に自動的にzshを新しく起動する。そのため,~/.zshrcの設定も反映される。
Linuxの標準のshellはbashであることが多い。これを変更するには管理者権限が必要で外部のPCで作業するときはできないことがある。そのため,ログインシェルはbashにしておき,そこからzsh on GNU screenを起動するのが汎用的であり安全だと思う。

2013-11-24

”No room for a new \dimen.” using Beamer, TikZ and booktabs in LyX

早速、この間作成した\tikzfancyarrowコマンド(実質はtikz)を使ってスライドを作っている時にエラーが起きた。その原因と対処法が分かったのでそれをメモ。
Beamerを使ったスライド文書でTikZとbooktabsパッケージを読み込むと以下のエラーが出る。
! No room for a new \dimen .
\ch@ck ...\else \errmessage {No room for a new #3}
                                                  \fi 
l.17 \newdimen\tikz@lastx
                         
This error message was generated by an \errmessage
command, so I can’t give any explicit help.
Pretend that you’re Hercule Poirot: Examine all clues,
and deduce the truth by order and method.

! No room for a new \dimen .のエラーの意味と対処法

この以下のエラー
! No room for a new \dimen .
はLaTeXで使えるレジスタの数が足りなくなったという意味を表している。TikZやhyperrefなどの最新のTeXのパッケージを読み込むと、LaTeXの変数を大量に使用するため、以下のようにTikZパッケージを読み込むとよく表示される。
\usepackage{tikz}
オリジナルのTeXでは使用できるレジスタ(count、dimen、skip、box、token)の数が256個までという制限がある。この制限を超過したためこうしたエラーが生じる。この問題を対処するにはe-TeXを使う必要がある。e-TeXは従来のTeXの不便なところを補うようにした拡張版となっている。e-TeXを使えば使用できるレジスタの数が従来の256個に対して32 768個と128倍=27倍に拡張されている。
そのため、e-TeXを使えば! No room for a new \dimen .というエラーは解消される。ところが、過去のTeXの形式を合わせるため標準ではこのe-TeXは使用されない。e-TeXを使うには以下のようにしてetexパッケージを読み込む必要がある。
\usepackage{etex}
e-TeXを使うことでTikZの他にもetoolboxという非常に便利なマクロ支援パッケージも使うことが可能となるため、理由がなければuplatexと同様にetexも使っていくべきだと考える。ただ、TikZやetoolboxといったレジスタを大量に使用するetexを前提とするパッケージを使うときは、パッケージを読み込む順番が非常に重要となる。tikzなどのetexが必要なパッケージの「前に」etexを読み込まないといけない。
例えば以下のURLは今回私が遭遇したエラーとほぼ同一のエラーに対する質疑が行われている。
上記URLでは、対処法としては以下のようにetexパッケージを最初に読み込んでから各種パッケージを読み込むことが提案されている。
\documentclass{beamer}
\usepackage{etex}
\usepackage{tikz}                 
\usepackage{booktabs}             
​
\begin{document}
\begin{frame}
​
\end{frame}
\end{document}
etexを読み込まなかったり、tikzやbooktabsの後にetexを読み込むと! No room for a new \dimen .という例のエラーが発生する。

LyX特有の問題

ここで私が遭遇したエラーの重要なポイントは、tikzの後だけでなく「booktabs」の後にetexを読み込んでもダメだということだ。
LyXでは本文中での操作に応じて、自動的にbooktabsやsubfigといった一部のパッケージの読み込み(\usepackage{booktabs}や\useapckage{subfig}の追記)を行う。具体的には、Insert ▷ Table…から表を挿入した後、表を右クリック ▷ More… ▷ Settings… ▷ Bordersタブ ▷ [Style: Formalに✔]した時点でbooktabsの読み込みが行われる。確認するには、File ▷ Export ▷ LaTeX (pLaTeX)により.lyxファイルから.texファイルに出力して.texファイルを開くと確認できる。
普通のLaTeX文書と同様にbooktabsパッケージの読み込み前にetexパッケージを読みこめばこの問題は解消する。しかし、LyXではユーザーがパッケージの読み込みやプリアンブルの記述は通常は、Document ▷ Settings… ▷ LaTeX Preambleのみとなっている。そして、ここで書いた内容は上記のbooktabsやその他のLyXで自動的に読み込むパッケージ(フォント関係やlistings、geometry、color、babelなど)の「後」となっている。
そのため、普通にやるとどうやってもbooktabsパッケージの読み込みの後にetexパッケージを読み込むことになる。つまり順番として以下のようになる。
\usepackage{booktabs}
\usepackage{etex}
\usepackage{tikz}
etexを最初に読み込むことが大事だということはわかっていたので、当然私もLyXではLaTeX Preambleの先頭行に\usepackage{etex}を記述していた。しかし、今回のエラーはLyXの仕様のためそれでは無理だということがわかりいろいろとLyXが読み込むパッケージの順番について調べた。その結果、以下の項目に記述をすれば、LyXが自動で設定する\usepackage{booktabs}よりも前に、\uespackage{etex}やユーザー独自のコマンドを記述できることがわかった。
Document ▷ Settings… ▷ Output ▷ Custom Macro:
ここは以前書いたLyX 2.1でforward searchとinverse search[順検索・逆順検索]を導入でも使ったが、本来は順/逆順検索(forward/backward search)に関する設定を行う場所だ。ここに以下のように従来の記述の後ろに追記する形でユーザー独自のコマンドを記述できる。
\synctex=1 \usepackage{etex}
ここ書いた内容はbooktabsよりも1行前!に読み込まれるので、etex ▷ booktabs ▷ tikzという順番でパッケージを読み込まれるので問題がぎりぎり回避できる。

Problem of longtable, booktabs and rowcolors

昨年から抱えていたLaTeXの表の着色に関する問題が解決したのでその方法をメモする。
主に欧米の学術系の文書で使われる表は、縦の罫線を引かずに以下3箇所にのみ罫線を引く形式を取っていることが多い。
  • 上端
  • ヘッダーの下
  • 下端
テキストで書くと以下の様な表である。
-----
header
-----
line1
line2
-----
この形式の表のことをフォーマル形式と呼ぶことがある。
LaTeXではbooktabsというパッケージがあり、このパッケージを使うことで論文などで使われるフォーマル形式の表を作れる。以下のようにして使う。
\begin{tabular}{ccc}
\toprule 
 &  & \tabularnewline
\midrule
 &  & \tabularnewline
 &  & \tabularnewline
\bottomrule
\end{tabular}
booktabsパッケージで定義されている\topruleと\bottomruleは少し太めの線で、\midruleは細めの線となる。
このパッケージは特にLyXでは便利である。Insert ▷ Tableから表を挿入した後、表を右クリック ▷ More… ▷ Settings… ▷ Bordersタブ ▷ Style ▷ Formalに✔をつけることでフォーマル形式の表に切り替わる。フォーマル形式に切り替えることで縦の罫線がすべて消える。
このフォーマル形式の表は罫線が最低限であるためすっきりしていて見やすい。そのため、自分で作っている表はすべてこの形式で作ることにしている。なお、セル内の項目が複数行にまたがったり、列数が増えて表が大きくなる場合行の対応がわかりづらくなる。そういう場合は行を交互に色を付ける(ストライプをかける)ことで、巨大な表でも行の対応がわかりやすくなる。
LaTeXでこうした表のストライプを実現するにはxcolorパッケージで定義されているrowcolorsコマンドを使う。
\usepackage[table]{xcolor}
\usepackage{booktabs}
​
\begin{tabular}{ccc}
\toprule 
\rowcolors{2}{white}{yellow} &  & \tabularnewline
\midrule
 &  & \tabularnewline
 &  & \tabularnewline
\bottomrule
\end{tabular}
こうすることで非常にすっきりとしてみやすい表を作ることができる。
しかし、longtale環境ではここまで説明してきた色付きのフォーマル形式の表を作るときに問題が生じる。booktabsパッケージの\tobruleと\midruleコマンドと\rowcolorsコマンドが競合するようでうまく色が塗られない。例えば、上記の例のtabularをlongtableで置き換えた場合、本来なら1行目のヘッダーは白色(無色)であるはずなのだが、黄色になってしまう。この現象は\topruleや\midruleが表にあると、rowcolorsではそのコマンド自体を1行とカウントして色が塗られているためだと推測できる(詳細の原因は不明)。
今までの対処法は以下2通り。
  1. 罫線(\miderule)を使わない。
  2. 表の1行目に以下のコマンドを記入して無理やり白色で上塗り
    \rowcolor{white}
    
フォーマル形式の表でも項目をはっきりと区別するときに途中で行罫線を引きたいことはありえるし、tabularとlongtableで表の着色を統一するためにもこの問題は解決したい。ネットで探したがこういう問題があることは認識されている程度で解決方法は見当たらなかった。
この問題は\topruleと\midruleコマンドを再定義することで解決した。booktabsパッケージを見ると、\topruleと\bottomruleの罫線太さは\heavyrulewidthとなっており、\midruleの太さは\lightrulewidthとなっている。これらの標準値を以下の表にまとめた。

Table 1 booktabsパッケージの長さ・太さの標準値
booktabs lengthdefault
\heavyrulewidth0.08 em
\lightrulewidth0.05 em
\abovetopsep0 pt
\aboverulesep0.4 ex
\belowrulesep0.65 ex
この長さに対応するhlineを割り当てることでmidruleとtopruleコマンドを代替する(bottomruleはrowcolorに影響を与えないので無視)。以下が修正のためのコマンド。

\usepackage{booktabs} % フォーマル形式の表(縦線なし) [121112]
%% longtableでtopruleとmiddleruleがrowcolorsに対応しないので同長のhlineで再定義[20131123]
% ただし二重線は線同士の余白がないのでくっつく
\def\midrule{\noalign{\global\arrayrulewidth0.05em}\hline\noalign{\global\arrayrulewidth 0.4pt}}
\def\toprule{\noalign{\global\arrayrulewidth0.08em}\hline\noalign{\global\arrayrulewidth 0.4pt}}
これでlongtableでもrowcolorsが正しく動作する。ただし、midruleが2回連続してもmidrule同士の余白が調整されず重なってしまうため、====のような二重の罫線を引くことができないので注意すること。

表の行ごとに着色(ストライプ)[LaTeX]

LaTeXで表を作っていると行ごとに交互に色を変えて(ストライプをかけて)見やすくしたいときがある。これを実現する方法としてはxcolorパッケージで定義されている\rowcolorsコマンドがある。このコマンドを使えるようにするには、
\usepackage[table]{xcolor}
とするか
\documentclass[dvipdfmx,table]{jsarticle}
\usepackage{xcolor}
としてxcolorパッケージのオプションにtableをつけて読み込む。

\rowcolorsコマンドの使い方

\rowcolorsコマンドの書式は以下。
\rowcolors{<starting row index>}{<odd row color>}{<even row color>}
例: \rowcolors{2}{}{yellow!20}
  • 着色を2行目からにして、奇数行は無色、偶数行を黄色で着色。
    \documentclass[11pt]{article}
    \usepackage[table]{xcolor}
    \begin{document}
    \centering
    \rowcolors{2}{}{yellow!20}
    \begin{tabular}{|c|c|c|}
    \hline 
     &  & \tabularnewline
     &  & \tabularnewline
     &  & \tabularnewline
    \hline 
    \end{tabular}
    \end{document}
    
    rowcolorsの使い方で参照:http://texblog.org/tag/rowcolors/

rowcolorsの制御

rowcolorsによる着色を一時的にやめたり再開するには以下のコマンドを表のセル内で記述
\hiderowcolors
\showrowcolors
\hiderowcolors: このコマンド以降でrowcolorsの色を隠す。
\showrowcolors: \hiderowcolorsで隠した色を再開する。
参考

multicolumnでrowcolorを有効化

rowcolorsやrowcolorコマンドでの行の着色はmulticolumnコマンドで列を連結すると、連結した箇所では無効となる。これを回避するためにmulticolumnコマンドを再定義する。
%%% Activate \multicolumn color inheritance
\let\oldmc\multicolumn
\def\multicolumn#1#2#3{\oldmc{#1}{#2}{\ifodd\rownum\@oddrowcolor\else\@evenrowcolor\fi #3}}

標準でtabularとlongtableをストライプ

表が登場する度に毎回\rowcolorsコマンドを入力するのは面倒なので標準で表を作ったらストライプをかけてくれるように表(taublarとlongtable)の定義を変更する。
プリアンブルに以下の内容を書いて表を再定義
\usepackage[table]{xcolor}
​
% alternate rowcolors for all tables
\let\oldtabular\tabular
\let\endoldtabular\endtabular
\renewenvironment{tabular}{\rowcolors{2}{}{yellow!20}\oldtabular}{\endoldtabular}
​
% alternate rowcolors for all long-tables
\let\oldlongtable\longtable
\let\endoldlongtable\endlongtable
\renewenvironment{longtable}{\rowcolors{2}{}{yellow!20}\oldlongtable} {
\endoldlongtable}

2013-11-22

zshでHome/End/Delキーを設定

zshでは標準では他のbash環境などで使えるHome/End/Delキーの入力に対応していない。.zshrcにキーマップを設定することでこの問題に対応する。
なお、CygwinとLinux環境とではキーの割り当てが異なっているようなので、if文を使ってどの環境でも大丈夫なように対応する。
参考:
以下の内容を~/.zshrcに追記して、source ~/.zshrcで反映させれば完了。
bindkey "^[[3~" delete-char
​
## define Home/End key
if [[ $OSTYPE == cygwin* ]]; then {
    bindkey "\e[H" beginning-of-line
    bindkey "\e[F" end-of-line
    }
else; {
    bindkey "\e[1~" beginning-of-line
    bindkey "\e[4~" end-of-line
    }
fi

2013-11-17

Fancy arrow in LaTeX

発表やフロー図などを作成するときに矢印を使うことがある。しかし、LaTeXで標準で実装されている矢印は主に数式で使われるようなもので矢印が小さい。矢印の中に文字を書き込むといった処理は簡単にはできないし、矢印が小さいので見栄えも悪くかなり使いづらい。
フロー図などで使われる大きな矢印をLaTeXでも簡単に使えるようなコマンドはないかと以前から探していたのだが、昨日(11月16日)ようやくその手がかりを見つけた。

1.1 矢印コマンド

以下の参考リンクでClaudio Fiandrino氏の回答でTikZを使って\tikzfancyarrowというコマンドを定義する方法が書いてある。
定義
  • \tikzfading[name=arrowfading, top color=transparent!0, bottom color=transparent!95]
    \tikzset{arrowfill/.style={#1,general shadow={fill=black, shadow yshift=-0.8ex, path fading=arrowfading}}}
    \tikzset{arrowstyle/.style n args={3}{draw=#2,arrowfill={#3}, single arrow,minimum height=#1, single arrow,
    single arrow head extend=.3cm,}}
    ​
    \NewDocumentCommand{\tikzfancyarrow}{O{2cm} O{FireBrick} O{top color=OrangeRed!20, bottom color=Red} m}{
    \tikz[baseline=-0.5ex]\node [arrowstyle={#1}{#2}{#3}] {#4};
    }
    
このコマンドの書式は以下。
\tikzfancyarrow[<height>][<color>][<tikz option>]{<contents>}
引数の役割は以下の表にまとめた。
引数役割
<height>矢印の最低長さ
<color>矢印の枠の色
<tikz option>tikzのオプション
<contents>矢印の中に書く文字
[<height>][<color>][<tikz option>]はオプションなので書かなくてもよい。指定がなければ標準値が適用される。
このコマンドのままでもそれなりに有用だが、個人的にいくつか不満がある。
  1. 引数が多すぎる。
  2. 影が不要。
  3. グラデーションが不要。
  4. 矢印の枠が不要。
  5. <contents>を指定しないと指定した場合と矢印の柄の太さが異なる。
2-4は標準の設定でどうにかなりそうだが、1と5が自分には致命的だ。まず2-4の不満は以下2点にまとめられる。
  • 影やグラデーションは印刷するときにちんと印刷されないときがある。
  • 矢印の枠はごちゃごちゃした印象を与えることが多く、ない方がすっきりする。
1の不満について、引数は多ければ多いほどどのオプションが何の設定だったか忘れるので効率が悪い。Claudio Fiandrino氏の提案した\tikzfancyarrowは矢印の柄の長さだけを指定したければ、
\tikzfancyarrow[1cm]{hoge}
とすれば良いのだが、回転だけさせたければ
\tikzfancyarrow[][][rotate=90]{hoge}
というように前2つのオプションを空にしないといけない。これは見た目も悪いし効率も悪く覚えにくくなっている(と思う)。
5の不満について、この\tikzfanyarrowコマンドは必須引数として矢印の中身の文字を要求している。このコマンド自体がtikzのsingle arrowであるためだ。このコマンドは矢印の中身の文字にフィットするように幅と高さを自動で調整してくれるため通常は便利なものだ。しかし、矢印の中身を書かずに矢印だけを書きたいことが往々にしてある。もちろん以下のように文字を指定しなければそれは可能だ。
\tikzfancyarrow{}
ただし、このようにすると矢印の柄の太さが、引数に文字を指定した場合と不揃いになってしまう。これは矢印を並べてみた場合に見た目が悪くなってしまうので避けたい。

1.2 矢印コマンドの改良

以上の1--5の不満点を解消し、普段使いに適する矢印を作成するためClaudio Fiandrino氏の\tikzfancyarrowコマンドを自分用に修正してみた。以下にそのコマンドの定義を記す。
\usepackage{tikz}
\usepackage{xparse}
\usetikzlibrary{shapes,arrows}
%% define fancy arrow. \tikzfancyarrow[<option>]{<text>}. ex: \tikzfancyarrow[fill=red!5]{hoge}
  \tikzset{arrowstyle/.style n args={2}{inner ysep=0.1ex, inner xsep=0.5em, minimum height=2em, draw=#2, fill=black!20, font=\sffamily\bfseries, single arrow, single arrow head extend=0.4em, #1,}}
  \NewDocumentCommand{\tikzfancyarrow}{O{fill=black!20} O{none}  m}{
    \tikz[baseline=-0.5ex]\node [arrowstyle={#1}{#2}] {#3 \mathstrut};}
修正点
    • 影の設定を除去。
    • O{none}により標準をdraw=noneとして枠を消去。
    • 標準の矢印の色をfill=black!20にした。
    • \mathstrutコマンドにより支柱を立て、コマンドの引数に文字列を指定しなかった時と指定した時の矢印の柄の太さを統一。
本当はオプション引数を1つだけにしたかったがうまくいかず、やむを得ずdrawの値を指定するオプション引数も指定した。
\tikzfancyarrow[<tikz option>][<frame color>]{<contents>}
ただ、第1オプションにより広範な設定ができる<tikz option>を持ってきたので、基本的には<tikz option>で枠の色もdraw=<color name>というように指定すればよい。
使い方
    • 上記コマンドの定義をプリアンブルに記入。
    • 以下のコマンドを入力。
      \tikzfancyarrow[<tikz option>]{<contents>}
      
これで矢印がかける。<tikz option>はオプションなので書かなくても良い。標準の色はblack!20で、<contents>を指定しなければ2emの柄の長さの矢印になる。矢印の色は<tikz option>でfill=blue!20, draw=redのようにすることで指定可能。標準では矢印は右向きになる。 左向きの矢印が必要なら、shape border rotate=180を設定する。<tikz option>にはtikzで使えるオプションがだいたいなんでも使える。以下でよく使うオプションとその説明をまとめる。
オプション引数役割
minimum height矢印の柄の最低長さ。
minimum width矢印の先端の太さ。矢印全体の大きさを変えるならこの値を変えると楽。
rotate矢印全体の回転角度。rotateboxと同機能。
shape border rotate文字の向きはそのままで矢印だけ回転。
double arrow両端を矢印にする。
text width文字列の幅を指定。矢印内で複数行書くときに必要。これを設定していると強制改行\\が有効。\parは不可。
  • \tikzfancyarrow{hoge}
    \tikzfancyarrow[minimum width=5em]{} % big arrow
    \tikzfancyarrow[fill=blue!20]{hoge} % blue arrow
    \tikzfancyarrow[rotate=90]{hoge} % rotate whole arrow
    \tikzfancyarrow[shape border rotate=90]{hoge} % rotate arrow keeping text direction
    \tikzfancyarrow[text widt=3ex]{hoge hoge hoge hoge} % multple line
    
LyX用の設定
  • このtikzfancyarrowコマンドはこの先スライドで頻繁に使うことが想定されるのでLyXで差し込み枠にコマンドを定義しておく。以下の内容を[Document] ▷ [Settings…] ▷ [Local Layout]に記述
    注意: 以下の設定はLyX 2.1.xでないと使えない。また、ヘッダーにFomat 48を書いておくこと。
    Format 48
    
    InsetLayout  Flex:Tikzfancyarrow
    LyXtype  custom
    Labelstring  tikzfancyarrwo
    latextype  command
    LatexName  tikzpicture
    requires  tikzpicture
    decoration  classic
    #passthru  true
      Argument  1
        AutoInsert  1
        LabelString    "Option|n"
        Tooltip        "Option. [fill], [double arrow], [minimum height]: arrow base length, [minimum width]: arrow head length, [rotate]: degree of whole rotation, [shape border rotate]: degree of only arrow rotation, [text width]"
        Mandatory  0
        Decoration     conglomerate
        Font
          Color        blue
        EndFont
      EndArgument
    preamble
      \usepackage{tikz}
      \usetikzlibrary{shapes.arrows}
    endpreamble
    end

2013-11-16

InconsolataフォントをTeXで使えるようにする

ソースコードの表示で人気のあるinconsolataというフリーフォントをTeXで使えるようにする。
inconsolata.styは2013年6月頃にzi4.styに名前を変更したらしい。
フォントのインストール
最初に[Google Fonts] (http://www.google.com/fonts/specimen/Inconsolata)からinconsolata.ttfをDL。
  1. Open Inconsolata in Google Fontsへ行き以下の2項目に✔
    • Bold 700
    • Latin Extended (latin-ext)
  2. ↓ボタンをクリック ▷ Download the font families in your Collection as a .zip file
  3. DLしたInconsolata.zipを解凍し以下の2つのフォントファイルをインストール。
    • Inconsolata-Bold.ttf
    • Inconsolata-Regular.ttf
パッケージのインストール
  1. CTANからinconsolataパッケージをDL・展開。
  2. 以下のフォルダを作り、docフォルダの中身を移動
    C:\w32tex\share\texmf-local\doc\fonts\insonsolata
    
  3. 以下のフォルダを作り移動、encフォルダの中身を移動。
    C:\w32tex\share\texmf-local\fonts\enc\dvips\inconsolata
    
  4. 以下のフォルダを作り移動、opentypeフォルダの中身を移動。
    C:\w32tex\share\texmf-local\fonts\opentype\inconsolata
    
  5. 以下のフォルダを作り移動、mapフォルダの中身を移動。
    C:\w32tex\share\texmf-local\fonts\map\dvips\inconsolata
    
  6. 以下のフォルダを作り移動、tfmフォルダの中身を移動。
    C:\w32tex\share\texmf-local\fonts\tfm\public\inconsolata
    
  7. 以下のフォルダを作り移動、type1フォルダの中身を移動。
    C:\w32tex\share\texmf-local\fonts\type1\public\inconsolata
    
  8. 以下のフォルダを作り移動、texフォルダの中身を移動。
    C:\w32tex\share\texmf-local\tex\latex\inconsolata
    
  9. mktexlsrコマンドを実行
  10. LyXでは、[Tools] ▷ [Reconfigure]
使い方
  • プリアンブルに以下を記述
    \usepackage{zi4} % typewriter -> inconsolata
    
    これでタイプライタ体がInconsolataになる。

2013-11-10

KOF2013参加メモ

Converted document
KOF2013参加メモ
イベント概要
  • 参加日付: 2013-11-09
    場所: 大阪南港ATC・ITM棟10F
    HP:https://k-of.jp/2013/
    HPで発表資料や動画も公開されている(一部)。
関連リンク:
参加セミナー
    • BSDなひととき
    • ウォーキングツアー
    • これから始めるCUDA入門~もてるGPGPU~
    • ECオープンプラットフォーム「EC-CUBE」のご紹介
    • 「ブログ+ツイッター+フェイスブック使い分け・連携テクニック」書籍紹介
    オープンハードカンファレンスをKOFでやろう!に興味があったけど参加できなくて残念。
セミナー感想:
  • CUDA: やはり難しそうという印象。GPGPUでやるためにそれ専用のコードを既存のプログラムのコードに書かないといけなくてかなり長くなる。情報もあまりない。資源の有効活用という点ではやる意味はあるとは思うがいかんせんハードルが高い…。これならまだMPIで並列計算したほうが楽で速い気がした。電力とPCがたくさんいるけど(苦笑)。
    EC-CUBE: 電子商取引(でんししょうとりひき、Electronic commerce)向けのソフト。知っている商品の会社も使っていて驚いた。こういうのがあるというのが知らなかったので勉強になった。
話を聴いたブース
    • おーぷんここん
    • 日本PostgreSQLユーザ会
    • 関西Debian勉強会
ブース感想:
  • おーぷんここん: 古いPCの有効活用は環境としても重要な問題。何かいい方法ないかな。
    PostgreSQL: 個人がDBを使うというのがなかなか機会がない。まずデータがないと意味が無いし。PostgreSQLはGISと相性が良いらしい。少し勉強してみようかな。なかなかモチベーションがあがらない分野。おすすめな書籍を教えてもらえばよかったかな。
    Debian: ノートPCでLinuxを使うことについて訊いた。もともと入っているWindowsはディスクごと引き抜いて入れ替えているらしい。DelからUbuntuがプリインストールされたノートPCが販売されているらしい。Ubuntuの方が外部機器との接続がやりやすい?

AndroidでTerminalを使う

Converted document

ネットでAndroidで使えるアプリについて調べていたら、AndroidでUnix環境などで使っているTerminal環境を使えるようにするアプリがあることを知った。早速インストールしてみた。基本的には以下の参考リンクと同じ手順をとる。
  1. 以下のURLにアクセスしてTerm<yyyy><mm><dd>.apkというファイルをDL(<yyyy>は4桁の年、<dd>は2桁の月、<dd>は2桁の日にちが入る。最新版をDLすればよい)。
  2. DLしたTerm<yyyy><mm><dd>.apkを実行する。ただし、標準のセキュリティ設定では、「インストールはブロックされました」と表示される。
  3. 「インストールはブロックされました」ウィンドウで設定を選択してセキュリティを設定する。[設定]->[セキュリティ]からも設定は可能。
    提供元不明のアプリ: ✔
  4. セキュリティの設定の後、Term<yyyy><mm><dd>.apkを選択 ▷ インストール ▷ Term<yyyy><mm><dd>.apkを実行するとインストール完了。
  5. アプリ一覧に[端末エミュレータ]というアイコンがインストールしたアプリが表示される。これを選択するとterminalが起動する。ls pwdなど通常のコマンドは使える。標準シェルがzshになっている。
今回インストールしたアプリは[rbox]と呼ばれているようだ。[Android Terminal Emulator ]をベースにして、日本語環境でうまく使えるようにしたりいくつかソフトが違っていたり改良版なんだとか。

2013-11-06

第3回 公園猫について考えるセミナー

動物愛護の人からメールが来たので転載。 去年は聴きに行ったが今年はKOFに参加したいのでこちらの参加は断念。
 
【日時】 2013年11月9日(土) 14時~
【場所】 大阪市立西区民センター 1Fホール
地下鉄千日前線、鶴見緑地線 「西長堀」駅 徒歩2分
【参加】 当日受付・参加費無料
 
●講演
【テーマ】行政の取組みと課題
大阪市・徳島県・東京都新宿区の職員の方々 
 
●パネルディスカッション
【テーマ】「市民が拓く共生社会の可能性」
行政と協働で取り組みを進める市民ボランティアの方をお招きして
飼い主がいない猫対策の意義や方向性についてのパネルディスカッション
 
【パネリスト】
  高木 優治氏(東京都新宿区保健所)
  矢野 さやか氏(徳島県動物愛護管理センター係長)
  亀山嘉代氏(練馬区地域猫推進ボランティア)
  西風 直美氏(兵庫県動物愛護推進員)
 
【モデレーター(司会・進行)】
  KIYOMI氏(FM COCOLO DJ)
 
※大阪市「公園猫適正管理推進サポーター制度(公園猫制度)」が実施されて3年目を迎えました。
命ある動物を排除するのではなく、良好な環境を保ちながら人と動物が共生していく取り組みの一つです。
 
また、昨年の改正により、動物愛護管理法に「人と動物の共生する社会の実現を図る」ことが目的として明記されました。
 
しかし、「共生社会の実現」を図るためには、「共生社会」そのものについて、広く市民の理解が得られることが必要です。
 
行政がだけが頑張っても、ボランティアだけが頑張っても、広く市民に、自治体の取り組みや国の方向性を知って
理解してもらわなければせっかくの制度も埋もれてしまいます。
 
そのあたりをどうクリアしていくのか、皆さんで考えていくセミナーになる事を期待しています。※
 
【主催】 大阪市 【共催】公園猫適正管理推進サポーター連絡会
【問合せ】 大阪市建設局 公園管理課  06-6469-3822

2013-11-05

Androidのカメラアプリの比較

自分が今使っているスマートフォンはOSはAndroidでAUのPANTECHという韓国メーカーが作っているVEGAという機種で機種番号はPTL21。
標準のカメラにはまあまあ満足しているのだけれど、無音に対応していないのが残念。外で写真を撮るときに目立って恥ずかしい。それ以外はパノラマや動画の切り替え、GPSデータ付加など高機能だと思っている。
Androidのアプリで良いカメラがないかと探していたら多くのアプリがあってどれがいいのか非常に困惑した。他の人が参考になるようにこれらのカメラアプリを比較して普段使いによいアプリを見つけたい。
比較項目: 主に以下の項目に重点をおいて判断する。
    • 無音の対応
    • 広告の有無
    • 画質(解像度)選択
    • 位置タグを付加可能か
    • 標準の保存先の指定が可能か
    • 日本語のUI
カメラアプリ: 今回の比較で検討したアプリを列挙する。
    • 無音カメラ(サイレントシャッター)
    • カメラ ICS
    • [高画質]良い無音カメラ
    • FxCamera
    • エンジェルカメラ (Angel Camera)
    • Camera360 Ultimate
    • Camera360 for Android 1.5
    • ウパ無音カメラ Free(ウィジェット無音撮影機能付)
    • Vignette Demo
    • HDR Camera
    • Instagram
    • サイメラ(Cymera)
注意: FxCameraとInstagramはカメラの使用にアカウントの登録が必要で面倒だったので比較対象から除外した。また、有料アプリは検討からは除外している。
Androidカメラアプリの機能の比較結果は1↓に示した。この表においてoは項目に対応していることを示し、xは対応していないことを示す。
表1 Androidカメラアプリ性能比較
アプリ名
無音
画質選択
無広告
保存先
位置タグ
日本語
ズーム
タイマー
連写
パノラマ
ビデオ
容量[MB]
無音カメラ
o
x
x
x
x
o
o
o
o
x
x
2.560
[高画質]良い無音カメラ
o
x
x
x
x
o
o
o
x
x
x
1.770
ウパ無音カメラ Free
o
x
o
x
x
o
o
x
x
x
x
0.216
カメラ ICS
o
o
x
x
o
o
o
x
x
o
o
3.860
エンジェルカメラ
o
o
o
x
o
o
o
o
o
x
x
6.430
Camera360 Ultimate
o
o
o
o
o
x
o
o
x
x
x
15.690
Camera360 for Android 1.5
o
o
o
o
o
o
o
o
o
x
x
5.650
Vignette Demo
x
o
o
x
x
x
o
x
o
x
o
0.303
HDR Camera
o
o
x
o
x
o
x
x
x
x
x
3.300
サイメラ
x
o
o
o
o
o
o
o
o
x
x
25.160
考察:1↑の結果について概説する。
  • 調査対象は合計10個のアプリとなった。無音に対応しているものは8個と大部分であった。無広告だったものは6個と約半数であった。写真の標準の保存先を指定できるものは4個と少ないことがわかった。パノラマ撮影に対応しているのはカメラICSのみだった。ビデオへの切り替えに対応しているものも2個と少なかった。
個人的に良かったもの: 比較の中で個人的に良かったものについて説明する。
  • サイメラ: ユーザーインターフェースが良かった。写真をとった後の加工の選択が多くて面白い。無音でないのが残念。
    Camera 360 for Android 1.5: このアプリはおそらくCamera 360 UltimateをAndroidや日本語にローカライズしたものだと思われる。機能が非常に似通っている。Camera 360 for Android 1.5は連写ができることとアプリサイズが小さいことが優れている印象。非常に高機能で普段使いにも耐えられる。
    エンジェルカメラ: 画面がシンプルでわかりやすい。必要な機能は抑えている。グリッドがわかりやすくていい。画像サイズを選択するのが若干手間。
    カメラ ICS: 今回の調査の中で唯一パノラマ撮影ができた。ビデオも内蔵。広告があり、タイマー撮影ができないのが少々残念。
    ウパ無音カメラ: 軽くて速い。ただ、普段使いするには機能が少なくて物足りない。
最終的にエンジェルカメラとCamera 360 for Android 1.5で悩んだ挙句、Camera 360 for Android 1.5を普段使いにすることにした。エンジェルカメラは撮影後に写真の確認ができないので失敗した時に消去するのが面倒なのが決め手となった。
以上Androidのカメラアプリの比較でした。なお、こちらの操作の不手際でいくつかの機能を誤って判断している可能性があるので注意していただきたい。