ラベル tex の投稿を表示しています。 すべての投稿を表示
ラベル tex の投稿を表示しています。 すべての投稿を表示

2021-09-07

565びぼーろく; tikzである領域内のみを描画する clip

tikzで色々お絵描きをしていると、ある領域内だけを描画したいことが出てくる。
 

例えば、円を書く場合。
これをある領域内のみ描画しようとすると円弧を書く羽目になり、座標計算をして描画なんてことをしないといけなくなる。

これを避けるためには描画領域を制限するclipを使うと便利。(-2,-2)と(2,2)とする長方形のみを描画する場合は

\clip (-2,-2) rectangle (2,2);

を追加することで簡単に実現できる。

具体的には

\begin{tikzpicture}
\clip (-2,-2) rectangle (2,2);

︙

(描画命令)

︙

\end{tikzpicture}

 

とすれば良い。

2021-08-13

560びぼーろく; tikz-feynhand で ファインマン・ダイアグラムを書く

とりあえずtikzで色々書けるようになったらしい。今回のファインマン・ダイアグラムはtikz-feynhandで描いてみた。意外と便利。texliveにも入っているのでarxivでも生成できると思う。(けど雑誌への投稿を考えるとやっぱり別に図を作成した方が安全かも)

さて、使い方は以下の通り。(詳しくはarxiv1802.00689 を参照。)

  •  プリアンブルに以下を追加。tikzを読み込む必要はないらしい。
    \usepackage[compat=1.1.0]{tikz-feynhand}

  • tikz環境の中にfeynhand環境を入れ込む。

    \\begin{tikzpicture}
    \\begin{feynhand}
     %%ここに命令を書く。
    \\end{feynhand}
    \\end{tikzpicture}

  • \vertexでvertexを作成。

    \vertex[particle] (V1) at (0,0);
    %原点(0,0)にV1という名前のvertexを作成。
    %オプションのparticleを変えると色々作れる。例えばblobとか。

  • できたvertexをpropagatorでつなぐ。以下はfermionでつなぐ。
    他にはgluonとかphotonとかghostとか色々。momは運動量を図にpropagatorに書き添えてくれる。

    \prog[fermion,mom ={\$p\$}] (V1) to (V2);

 

大体これで事足りるかな。とりあえず有名な三角ダイアグラムは以下で描けた。ちょっと楽しい。

\begin{tikzpicture} 

\begin{feynhand} 

\def\RADIUS{3} 

\def\ExLeg{0.5}

\vertex [particle] (V1) at (0,0) ; 

\vertex [particle] (P1) at (-\ExLeg*\RADIUS,0) {\$\hat A_y\$}; 

\vertex [particle] (V2) at ( 30:\RADIUS); 

\vertex [particle] (V3) at (-30:\RADIUS); 

\vertex [particle] (P2) at (\$(V2)+( 20:\ExLeg*\RADIUS)\$) {\$G^{(a)}_\nu\$}; 

\vertex [particle] (P3) at (\$(V3)+(-20:\ExLeg*\RADIUS)\$) {\$G^{(a)}_\sigma\$}; 

\propag [fermion] (V2) to [edge label = \$k\$] (V3); 

 \propag [fermion] (V3) to [edge label = \$k-q\$] (V1); 

\propag [fermion] (V1) to [edge label = \$k+p\$] (V2); 

\propag [scalar,mom ={\$p+q\$}] (P1) to (V1); 

\propag [gluon,mom ={\$p\$}] (V2) to (P2); 

\propag [gluon,mom ={\$q\$}] (V3) to (P3); 

\end{feynhand} 

\end{tikzpicture} 

 

 

さて、論文の推敲が終わり今月中には出せそう。個人的には結構面白いと思う。
(が他の人がどう思うかは知らない。)

2020-05-18

470びぼーろく; tikzで円弧を書きたい時

原点以外で書くとなると結構困る。のでちょっとまとめ。
まず、座標の計算ができるようにしておくためにプリアンブルに以下を追加しておく。

  \usetikzlibrary{calc}
  
座標点Pを適当に定義し、座標点Pに対して 半径0.5、角度30度から60度の円弧を書きたいときには以下のようにする。

  \path[draw] ($(P)+(30:0.5)$) arc (30:60:0.5)
  
いつも迷ってたけどこれでなんとか書けるようになった。tikz歴も長くなって、最初の頃のコードを見ていると拙くて四苦八苦している様子が伺えて感慨深い。

2020-05-03

467びぼーろく; underset

ひたすらtexでスライド作り。
さて、文字に下線を引いてその下に文字を入れたい時には以下のようにする。


\$\underset{試験に出るよ}{\underline{とっても大事}}\$

実際にやってみると
\[
\text{ここは}\underset{試験に出るよ}{\underline{とっても大事}}\text{なところ}
\]
となる。



さてヨギボーが届いた。良い感じ。さらに、二回目のパエリアは適当に作ったにもかかわらずかなり美味しくできた。良かった。

2020-05-01

466びぼーろく; enumitem

enumerate.sty等はobsoleteらしい。ということで新しい環境enumitemを使う。

プリアンブルに以下を追加。


\usepackage{enumitem}


本文中で問1,問2の様にしたければ


\begin{enumerate}[label=問\arabic*]
\item
\item
\end{enumerate}



のようにする。

入れ子で(1)(2)のようにしたければ


\begin{enumerate}[label=(\arabic*)]
\item
\item
\end{enumerate}


とすればOK。結構便利かも。

2020-04-18

461びぼーろく; luatexでのフォント指定

突然の遠隔授業実施によりスライドを作る必要に迫られた。
とりあえず、無地で要点だけを並べるスライドを作成。

実機のtexエンジンはluatexなのでそれでうまく行くように & 見栄えの良いフォントを埋め込む。

まずはnotoフォントを使うので予めインストールしておく。
そして必要な設定は下記の通り。


\documentclass[slide,30pt,papersize,fleqn]{ltjsarticle}

\usepackage[no-math,noto-otf]{luatexja-preset}


とりあえずこれでうまく行った。後はひたすらファイルを作るのみ。

2017-12-19

355びぼーろく; ニンテンドースイッチ

今やっている研究に若干の光明が差し始めた(ような気がする)。
これが気のせいでないことを祈るばかり...。

せっかくボーナスも出たのでニンテンドースイッチを購入。
ついでに名作と名高いゼルダも購入。
ほぼ毎日6時間以上リンクと冒険している。あっちの世界の住人と言えるレベル。


ついでに雪に備えてスコップも購入。これで雪が降っても大丈夫。
リンクと冒険している間こたつが冷たいので、電気カーペットを購入しようかどうかを検討中。



さて、同僚が試験を作成する際、enumerate環境を使わずにやっているらしく、せっかくなので、自前でできないかどうかをやってみるとうまくいったのでそのメモ。

基本的にはenumerate環境と同じように使えることを目標としたが、当然本家とは比べ物にならない出来なので微妙なところ。


まずプリアンブルに以下を追加。


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 大問・小問を自動でつけてくれるやつ始 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{DaimonNumber}
%%大問カウンタの作成
\setcounter{DaimonNumber}{1}
%%大問カウンタの初期化
\def\Daimon{
\setcounter{SyoumonNumber}{1}
%%小問カウンタの初期化
\noindent
\theDaimonNumber .
%%大問番号表示
\addtocounter{DaimonNumber}{1}
%%大問カウンタを1増やす
}
\newcounter{SyoumonNumber}
%%小問カウンタの作成
\setcounter{SyoumonNumber}{1}
%%小問カウンタの初期化
\def\Syoumon{
~(\theSyoumonNumber)
%%小問番号表示 かっこつけて、ちょい字下げ
\addtocounter{SyoumonNumber}{1}
%%小問カウンタを一つ増やす
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 大問・小問を自動でつけてくれるやつ終 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Daimon といれると1、が出力される。次に\Daimonが出てくると2、が表示され、3、4、...と続く。 小問の場合は\Syoumonは(1)、次の\Syoumon で(2)...と続く。 \Syoumonの数字は次の大問(\Daimon)が出てくるとリセットされる。 これで \Daimon \Syoumon \Syoumon \Daimon \Syoumon \Syoumon \Syoumon \Syoumon と入力すると、 1、(1)(2)2、(1)(2)(3)(4) と出力される。 ついでに丸囲み文字を順番に出力するmarugakomi 環境も作成。 プリアンブルに以下を追加。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 選択肢を自動で作るやつ始 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{MARUNumber}
%%丸囲みで使うカウンタ作成
\def\MARU{
\textcircled{\theMARUNumber}
%%丸囲み番号表示
\addtocounter{MARUNumber}{1}
%%丸囲みカウンタを1増やす
}
\newenvironment{marugakomi}
{
\setcounter{MARUNumber}{1}
%%丸囲みカウンタの初期化
~\\
%%最初に改行する
}
{
\setcounter{MARUNumber}{1}
%%丸囲みカウンタの初期化
~\\~\\
%%最後に改行する
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 選択肢を自動で作るやつ終 %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
使い方は

\begin{marugakomi}\maru ほげ、 \maru ふが\end{marugakomi}

で①ほげ、②ふがと表示されていく。

2017-10-01

351びぼーろく; ascmac.sty →tcolorbox.sty へ乗り換え

今まで一生懸命ascmacを使っていたが、もう大分古いということでtcolorboxに乗り換えた。
随分前からluatexに移行したもののascmacをがんばって使ってきた。
luatexは縦書き対応していないらしく、このままだとちょっと難しい。
何とかしてきたけど、面倒になってきたのでこの際思い切って乗り換え。
やることはプリアンブルに以下を追加するだけ。
\usepackage{tcolorbox}
あとは本文中に
\begin{tcolorbox}
[title=タイトル]
本文
\end{tcolorbox}
でascmac代わりのきれいなスタイルが書けるようになった。
デフォルトでは背景が薄いグレーなので、オプションでcolback=whiteをつけると良いかも。ということで今使っている基本形は以下の通り。

\begin{tcolorbox}
[title=タイトル,colback=white]
本文
\end{tcolorbox}

色指定の書式がtikzと似ているなと思ったら、tcolorboxはtikzで描いているらしい。

さて後輩がわざわざ来てくれたので、少し議論した。
以前から調べてみたかったことをやることになった。優秀な後輩がいると 便利 研究が捗るなぁ。

2017-02-17

340びぼーろく; plastexその2

plastex2.1がリリースされたのでそちらを使うようになりました。mathjaxにも対応しているので下記の操作は必要なくなっています。debianの公式パッケージからインストールするだけです。




(mathjaxに変換してくれるパッケージを提供してくれていたところが無くなってしまったので、svgに変換に変更 ⇒と思ったらいつの間にか復活していたので引き続きmathjaxを使うようになりました)

前回 に引き続いて数式をmathjaxに変換してくれるplastexのdebian用パッケージ(debファイル)を作る。
まずは、 ここ に書いてあるとおり、関連するファイル(plastex-master.zip、plastex-changes.zip,plastex-renderers.zip)をダウンロードする。
全て展開して、以下の様にファイルの置き換えとコピーをする。

mv plastex-changes/setup.py plastex-master/
mv plastex-changes/Definitions.py plastex-master/plasTeX/Base/LaTeX/
mv plastex-renderers/MathJax plastex-master/plasTeX/Renderers/
mv plastex-renderers/MathJaxS5 plastex-master/plasTeX/Renderers/
次にバージョン番号を変更する。 というのも、このままだとバージョン番号がdebianのリポジトリにあるものと同じなので、apt-get updateの度に保留されるか、上書きされる。
もちろんpin等でパッケージを留めても良いのかもしれないけど、mathjaxを使えるように変更すると、plastexのバージョンが1に上がるようなので、バージョンを1.0.0に変えることにした。

変更方法はplastex-master/setup.py を編集して、version="0.9.2" を version="1.0.0" とするだけ。
(本当はバージョン番号の付け方もルールがあるんだろうけど、手元の環境でしか使わないので、適当に決めた。)

次いでplastexのtarボールを作成する。
cd ./plastex-master/ python ./setup.py sdist

これでtarボール(plasTeX-1.0.0.tar.gz)が、 plastex-master/dist 以下に作成される。
次にdebファイルへ変換。まずdebian用のファイル群を生成する。
cd ./dist
py2dsc ./plasTeX-1.0.0.tar.gz
(2017/6/14追記: py2dscはpython-stdebパッケージに含まれているので、事前にapt等でインストールしておく。)
そうすると、deb_dist 以下にファイルがdebian用のファイルが用意される。
最後にdebファイルを生成する。
cd deb_dist
cd plastex-1.0.0
dpkg-buildpackage -rfakeroot -uc -us
これで一つ上のディレクトリにdebファイル(python-plastex_1.0.0-1_all.deb)が生成される。 後はgdebi等でインストールすればOK。

数式を含むtexファイルでmathjaxを使いたい場合は、rendererにMathJaxを指定する必要がある。
plastex --renderer=MathJax hoge.tex
表示をさせてみて、うまくいけばOK。これで研究室のHPが若干綺麗になった(気がする)。

2017-02-16

339びぼーろく; plastex その1

plastex2.1がリリースされたのでそちらを使うようになりました。mathjaxにも対応しているので下記の操作は必要なくなっています。debianの公式パッケージからインストールするだけです。

 

 

今まで一生懸命latex2htmlを使ってたけど、実はplasTeXなるものがあるらしい。
ここ情報によるとMathJaxにも変換もできるらしいので、思い切って使ってみることにした。

生成されたファイルを見てみると、latex2htmlに比べて幾分おしゃれな雰囲気がする。

まずはインストール。幸いなことにdebianのリポジトリに入っているので、いつもどおりインストールする。(もちろん管理者権限で)
apt-get install python-plastex
使い方はlatex2htmlとほぼ同じ。適当なtexファイルを用意して(hoge.tex)、コンパイルするだけ。
plastex hoge.tex
hogeディレクトリが作成されて、以下にindex.htmlを含む諸々のファイルが作成される。
この状態で、例えば
google-chrome ./hoge/index.html
とかやると、作成したページを見ることができる。

ちょっとつまづいたのが、texファイルの中でhtml.styを読み込むとエラーを吐いて終了する問題。リンクを貼るときにはhyperref.styを読み込んで、\href{テキスト}{リンク先}を使う。
これに気づかず、しばらく悩んだ。

肝心の数式はlatex2htmlと同様、画像ファイルに変換される。
結構綺麗だと思うが、せっかくなのでmathjaxに変換したい。一応ここにやり方は書いてあったものの、pythonを使うためdebianのパッケージ管理下にないので、アンインストールが面倒。
(アンインストールするときには、/usr/local/以下の plastex関連のファイルを手で削除する必要がある。結構面倒。)

幸いなことにdebファイルに変換できるようなので、こちらを利用する。
ちょっと長くなるので次回へ。



さて久しぶりにベートーヴェンの弦楽四重奏14番を聴いた。ミーハーなのかもしれないが、後期の作品で最も好きなのはこの14番。
第九のようなスケールの大きさを弦楽四重奏に閉じ込めたような作品で、とても繊細な二重奏があったかと思うと鬼気迫る場面になったりと、とても充実した曲になっていると思う。
wikipediaには、7楽章構成だが古典的な4楽章構成と対応する、とか書いてあるけど、なぜか1から4楽章までが前半で 5から7楽章までが後半というように聞こえてしまう。
この大曲を書いたのはベートーヴェンが死ぬ前年だったらしい。
普通だったら加齢と共に丸くなっていうような気がするのが、最後の最後まで自分の書きたいものを追求したあたり、とてもベートーヴェンらしいと思う。

2016-10-24

333びぼーろく; latex2htmlでmathjaxを使う

(2016/12/12追記:こちらに書き直しました)

latex2htmlで数式を書くと画像に落としてくれるが、pngファイルなのでけっこうギザギザになる。やはりlatexを使うなら綺麗に出力したい。
でもlatex2htmlはとても便利なので、乗り換えて別のものに移行するのは億劫。

そこでlatex2htmlを使いつつ、数式の部分はmathjaxを使って表記する方法を採ることにした。
ついでに文字化け対策のために utf-8であることも明示する。

本当はlatex2htmlでこれらを追加できたほうがきれいなんだろうけど、中身がわかっていないので断念した。



基本的な路線としては、latex2html でhtmlファイルを生成 →生成されたhtmlファイルのヘッダを書き換えるスクリプトを作成する。
はっきり言って泥臭いけど仕方ない。

やることは以下の二点。
まずmathjaxを使うためにはhtmlのヘッダに以下を追加する。
<script src=\"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML\" type=\"text/javascript\">
</script> 

さらに、エンコードがutf-8であることを示すために、htmlのヘッダに
<meta charset=UTF-8>
を追加する。これを一連の流れとして以下の様にスクリプトを組む。

#! /bin/bash

export FILE=$1  ## 入力ファイルするtexファイル 
export DIR=$(echo $1 |sed s/\\.tex//) ## latex2htmlで作られるディレクトリ 

latex2html -noreuse $FILE ## latex2htmlを実行する
cd $DIR ## htmlがあるディレクトリに移動
for i in *.html;do
mv $i $i.OLD
cat $i.OLD| sed s/\\<\\\\/HEAD\\>/\\<script\\ type=\"text\\/javascript\"\\ \\\\n\\ \\ src=\"http:\\\\/\\\\/cdn.mathjax.org\\/mathjax\\/latest\\/MathJax.js?config=TeX-AMS_HTML\"\\>\\\\n\\<\\\\/script\\>\\\\n\\<\\\\/HEAD\\>/ > $i
rm $i.OLD
## ファイルの</HEAD>の上側をmathjaxを使うために書き換え。


mv $i $i.OLD
cat $i.OLD| sed s/\\<HEAD\\>/\\<HEAD\\>\\\\n\\<meta\\ charset=\"UTF-8\"\\>/ > $i
rm $i.OLD
done

## ファイルの<HEAD>のすぐ下側にutf-8を使うようにmetaタグで宣言する。

cd ../ ##元の場所へ戻る


#END

utf-8じゃない場合は適宜書き換えれば良い。エンコードはnkf --guessで自動で書き込むようにしても良いかも。
後は適当な名前 (例えば LATEX2HTML.sh)とかで保存して、PASSが通っているところに置いて実行させればうまく行くはず。

LATEX2HTML.sh hoge.tex

実際に使用する際は、数式環境をlatex2htmlでhtmlを直接書き出すrawhtml環境内で使用する。(html.styを読み込んでおく必要がある)
行の中に書く場合には \(\)、別行仕立ての場合には\[\]を利用する。具体的には
\begin{rawhtml}
\( \int x^2 dx \)
\end{rawhtml} 
とすると、x二乗の積分を書くことができる。


それにしてもsedのエスケープシーケンスはやっているうちに訳が分からなくなる...。
もっと賢くできるようになりたい。


さて、ハーフマラソンもなんとか完走。今回は結構頑張った(ように思う)。
雨もあまり降らなかったので良かった。お酒の勢いでちょっとナンパっぽいこともしてしまった。
もしかすると人生初かもしれない。

2015-06-24

292びぼーろく; quickrunのインストール[vim]

(2015.6.25に書き換え)

いつもvimさんでtexファイルを編集するけど、コンパイルが面倒。

ま、vim初心者なので割りきっていたけど、素晴らしいプラグインを見つけた。 というか前からあったと思うけど、探していなかった。

ついでにlatexmkも使うことに。統合開発環境っぽくなって相当便利になった。 プラグインの管理はNeobundleを使用。環境はdebian8 (jessie) 。

あまり良くわかっていないので、あちこちを参考にしながら下記のように設定。 (参考にしすぎてどこを見たのかわからなくなった) やり方としては、latexmkのオプションをシェルスクリプトで与えてlatexmを実行という流れ。


・latexmkの設定

latexmkの詳しいオプションは~/.latexmkrc に記入。 lualatexの設定はpdflatexのところに書く。

#!/usr/bin/env perl

$latex            = 'platex';
$latex_silent     = 'platex -interaction=batchmode';
$pdflatex         = 'lualatex';
$pdflatex_silent  = 'lualatex -interaction=batchmode';
$bibtex           = 'pbibtex -kanji=utf8';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';
$max_repeat       = 5;
$pdf_mode         = 3; # generates pdf via dvipdfmx

# Prevent latexmk from removing PDF after typeset.
# This enables Skim to chase the update in PDF automatically.
$pvc_view_file_via_temporary = 0;
# Use Skim as a previewer
$pdf_previewer = "open -ga zathura";


・適当なシェルスクリプトを作成

僕の場合は、以下の様に処理。

コンパイルするtexファイルの先頭にコメントでコンパイルする方法を書いておく
→ファイルの先頭から読み取ってlatexmkにオプションとして渡す

lualatexが指定されている:lualatex
xelatexが指定されている:xelatex
dvipsが指定されている:platex+dvips+ps2pdf
それ以外: platex+dvipdfmx

というわけで以下の様にtex2pdf.shを作成。もっとうまいやり方があると思うけど、とりあえず動くので良しとする。

#!/bin/bash

unset TEXFILE
unset LATEXTYPE
unset DVITYPE
unset COMPILE

export TEXFILE=$1
## tex ファイルの指定

export LATEXTYPE=$(head -1 $1 |grep tex )
## コンパイルの指定(platex,lualatex,xelatex)を読み込む

export DVITYPE=$(head -1 $1 |grep dvi )
## dvipsかdvipdfmxかを指定。この時はplatexを使う。

if test "$(echo $LATEXTYPE|sed s/.xelatex./xelatex/)" = "xelatex" ; then

          echo "use xelatex"
          COMPILE=-xelatex

elif test "$(echo $LATEXTYPE|sed s/.lua./luatex/)" = "luatex" ; then

          echo "use lualatex"
          #lualatex  -interaction=batchmode --shell-escape $TEXFILE 
          COMPILE=-lualatex

elif test "$(echo $DVITYPE|sed s/.dvips./dvips/)" = "dvips" ; then

          echo "use platex + dvips"
          COMPILE=-pdfps

else

          echo "use platex + dvipdfmx"
          COMPILE=-pdfdvi

fi

latexmk --shell-escape $COMPILE $TEXFILE
latexmk -c $TEXFILE

実行権限を与えてパスの通っているところへ保存。これでおそらく(?)うまくいくと思う。 -cは中間ファイルの削除をしてくれるオプション。

試しに tex2pdf.sh ./hoge.tex とでもしてうまく動いていればOKだと思う。

・Neobundleのインストール(gitは予めインストールしておく)

mkdir -p ~/.vim/bundle
git clone https://github.com/Shougo/neobundle.vim \
~/.vim/bundle/neobundle.vim



以前にvim-latexをインストールした場合はvim-addon-managerで削除しておく。


・~/.vimrcに下記を追加 (Start Neobundle Settings.から End Neobundle Settings.まで)

"---------------------------
" Start Neobundle Settings.
"---------------------------
" bundleで管理するディレクトリを指定
set runtimepath+=~/.vim/bundle/neobundle.vim/

" Required:
call neobundle#begin(expand('~/.vim/bundle/'))

NeoBundleFetch 'Shougo/neobundle.vim'

"追加のプラグインは以下へ"

" neobundle.vim を使用しているなら

NeoBundle "thinca/vim-quickrun"
NeoBundle "Shougo/vimproc"
NeoBundle "lervag/vimtex"
NeoBundle "Shougo/vimshell.vim"
NeoBundle "itchyny/lightline.vim"

call neobundle#end()

" Required:
filetype plugin indent on

" 未インストールのプラグインを確認

NeoBundleCheck

"-------------------------
" End Neobundle Settings.
"-------------------------

これで、vimを立ち上げるとプラグインのインストールが始まる。


・quickrunの設定

以下をvimrcに追加する。

" ここから
let g:quickrun_config = {}

let g:quickrun_config={'_': {'split': ''}}
set laststatus=2
set t_Co=256

" runner を vimproc に設定
" 更新時間も設定しておく
let g:quickrun_config = {
\ "_" : {

\       "outputter" : "multi:buffer:quickfix",
\       "outputter/buffer/split" : ":top 8sp",
\       "runner" : "vimproc",
\       "runner/vimproc/updatetime" : 40,

\ }
\}

let g:quickrun_config["tex"] = {

            \   "command" : "tex2pdf.sh",
            \     "cmdopt": " ",
            \   "exec": "%c %o %s"
              \ }
" ここまで

これで、\r を打ち込むとtex2pdf.shが実行される。実際にはlatexmkが動いて、自動で必要回数コンパイルしてくれるので便利。

さて、ついでによく使うので以下もvimrcに追加。 カッコの一文字目を入れると閉じカッコ補完と<++>を追加。 <++>はCTL+nで移動できるようにした。
その他\beginで補完、\fracで補完。

"挿入モードでのキーマップ
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
inoremap <Esc> <Esc>:w<CR>

inoremap [ []<Space><++><Esc>5hi
inoremap ( ()<Space><++><Esc>5hi
inoremap { {}<Space><++><Esc>5hi
inoremap " ""<Space><++><Esc>5hi
inoremap ' ''<Space><++><Esc>5hi
inoremap < <><Space><++><Esc>5hi
inoremap $ $$<Space><++><Esc>5hi

inoremap <C-n> <Esc>/<++><CR>4xi
inoremap \begin \begin{}<CR><++><CR>\end{<++>}<CR><++><Esc>3k$i inoremap \frac \frac{}{<++>}<Space><++><Esc>11hi

"コマンドモード でのキーマップ
nmap <C-n> <Esc>/<++><CR>4xi

さて、ついでに現在のvimrcをさらす。あるサイトによれば「男は黙ってvimをフルスクリーン」だそうだ。渋い。

"vimrc設定

set tabstop=2
set shiftwidth=5
set number
set autoindent
set fileencodings=iso-2022-jp,utf-8,euc-jp,shift-jis,jis,ucs2le,ucs-2,cp932 set history=1000
autocmd BufEnter * silent! lcd %:p:h

let $TODAY = strftime('%Y%m%d')

"行頭から前行末へ移動
set whichwrap=b,s,h,l,<,>,[,]

"挿入モードでのキーマップ
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
inoremap <Esc> <Esc>:w<CR>

inoremap [ []<Space><++><Esc>5hi
inoremap ( ()<Space><++><Esc>5hi
inoremap { {}<Space><++><Esc>5hi
inoremap " ""<Space><++><Esc>5hi
inoremap ' ''<Space><++><Esc>5hi
inoremap < <><Space><++><Esc>5hi
inoremap $ $$<Space><++><Esc>5hi

inoremap <C-n> <Esc>/<++><CR>4xi
inoremap \begin \begin{}<CR><++><CR>\end{<++>}<CR><++><Esc>3k$i inoremap \frac \frac{}{<++>}<Space><++><Esc>11hi

"コマンドモード でのキーマップ
nmap <C-n> <Esc>/<++><CR>4xi

"---------------------------
" Start Neobundle Settings.
"---------------------------
" bundleで管理するディレクトリを指定
set runtimepath+=~/.vim/bundle/neobundle.vim/

" Required:
call neobundle#begin(expand('~/.vim/bundle/'))

NeoBundleFetch 'Shougo/neobundle.vim'

"追加のプラグインは以下へ"

" neobundle.vim を使用しているなら

NeoBundle "thinca/vim-quickrun"
NeoBundle "Shougo/vimproc"
NeoBundle "lervag/vimtex"
NeoBundle "Shougo/vimshell.vim"
NeoBundle "itchyny/lightline.vim"

call neobundle#end()

" Required:
filetype plugin indent on

" 未インストールのプラグインを確認

NeoBundleCheck

"-------------------------
" End Neobundle Settings.
"-------------------------

let g:quickrun_config = {}

let g:quickrun_config={'_': {'split': ''}}
set laststatus=2
set t_Co=256

" runner を vimproc に設定
" 更新時間も設定しておく
let g:quickrun_config = {
\ "_" : {

\       "outputter" : "multi:buffer:quickfix",
\       "outputter/buffer/split" : ":top 8sp",
\       "runner" : "vimproc",
\       "runner/vimproc/updatetime" : 40,

\ }
\}

let g:quickrun_config["tex"] = {

            \   "command" : "tex2pdf.sh",
            \     "cmdopt": " ",
            \   "exec": "%c %o %s"
              \ }

"vimrc設定終わり

2014-08-17

253びぼーろく;vim-latexsuite

vimにも大分慣れてきた(と思う)ので、vim-latexsuiteを使うことにした。

使い方は ここ を参考にインストールした。
ただし、設定ファイル .vimrc に書く内容は以下のように変更が必要。

set filetype plugin indent on
は
filetype plugin indent on
じゃないと動かない模様。ちなみに環境はvim 7.3。

結局、.vimrcに追加した内容は以下。

--------------
"vim-latex
set shellslash

set grepprg=grep\ -nH\ $*
filetype plugin indent on
let g:tex_flavor='latex'
--------------

さらに

vim-addon-manager install latex-suite

で導入する。導入されたかどうかは

vim-addon-manager

で確認できる。


大雑把な機能としては

  • 補完:環境やusepackageの補完(F5)、refの補完(F9)
  • 折りたたみ: プリアンブルや各セクションを折りたたんだ状態で編集できる

あたりだろうか。もっといっぱいあると思うけど、今のところ重宝しているのは上の二つ。

コンパイル等も自動でやってくれるらしいけど、それは既に別の方法で実現したので、使わないことにする。
さすがに100ページぐらいの文章を書いていると可読性が相当落ちるので折りたたみは嬉しい。
詳しくはtexwiki とかに書いてある。

そう言えば、ここでlatex関連の記事を書くとtexwikiにすぐリンクが貼られる。
ちょっと驚き。


さて、本番は無事(?)終了。学会でしゃべるより緊張する。なぜだろうか?
次回はドヴォルザークの弦楽五重奏Op77 に決定。
来年に向けてがんばろう。

2014-08-07

252びぼーろく; texからpdfへ(再)

xelatexが使えるようになったので、自動で xelatex , platex + dvipdfmx , platex + dvips + ps2pdf の3種類を使うように変更することにした。


まず、texファイルの先頭に xelatex,dvips,dvipdfmxが記入されていれば、以下の様に動くようにする。
xelatex : xelatex
dvips: platex+dvips+ps2pdf
dvipdfmx: platex+dvipdfmx


さらにplatex,xelatexは batchmode で動かしていたけど、エラーがどこか分からないので、元に戻すように変更。
ただしエラーが出て止まった時に、自動で終了するよう、xを予め打っておく。

platexの終了ステータスが0の時だけ次の処理(dvips ,dvipdfmx)へ進むように変更。

というわけで以下の様に変えた。適当に名前をつけて保存し、chmod +x で実行権限を与えると動いて動いてくれるはず。

---------------------ここから--------------------

#!/bin/bash
 
   export TEXFILE=$1
   ## tex ファイルの指定
 
   export LATEXTYPE=$(head -1 $1 |grep tex )
   ## xelatexかplatexの指定が含まれているかどうか
 
   export DVITYPE=$(head -1 $1 |grep dvi )
  ## dvipsかdvipdfmxかを指定。この時はplatexを使う。



  if test "$(echo $LATEXTYPE|sed s/.*xelatex.*/xelatex/)" = "xelatex" ; then
          echo "use xelatex"
          #xelatex  -interaction=batchmode --shell-escape $TEXFILE
          echo x |xelatex   --shell-escape $TEXFILE

  elif test "$(echo $DVITYPE|sed s/.*dvips.*/dvips/)" = "dvips" ; then
          echo "use platex + dvips"
          echo x |platex  --shell-escape $TEXFILE
          ## platex にかける
          if test "$?" = "0" ;then
                  dvips $(echo $TEXFILE|sed s/\.tex$/\.dvi/)
                  ps2pdf $(echo $TEXFILE|sed s/\.tex$/\.ps/)
                  ##dvipsが含まれている時、dvips, ps2pdf経由でpdfを生成
          else echo "DVIPS EXIT!!"
          fi

  else    echo "use platex + dvipdfmx"
          echo x |platex  --shell-escape $TEXFILE
          ## platex にかける
          if test "$?" = "0" ;then
                  dvipdfmx $(echo $TEXFILE|sed s/\.tex$/\.dvi/)
                  ##dvipsが含まれていない時、dvipdfmx でpdfを生成
          else echo "DVIPDFMX EXIT!!"
          fi
  fi

---------------------ここまで--------------------


今のところうまく動いている様子。

さて風邪を引いてしまい少ししんどい。今週から休みだし、明日は打ち合わせなので早めに寝よう。

2014-07-22

250びぼーろく;xelatex を使う

後少しで前期も終わり。夏休みの間にPCの中身を入れ替えたい。
マザーボードの載せ替えに挑戦してみようかと思案中。うまくいくだろうか。


さてlatex環境をplatex + dvipdfmx からxelatexへ変更を画策するも難航。
ちょっとずつ調べて何とか実用まで持ってこれそうなので、メモ。
とりあえず必要最低限の内容が出来ればよしとする。環境はdebian wheezy (64bit)。

  • 使い方
    hoge.texのコンパイルは 以下。

    xelatex hoge.tex

    もし外部のプログラムを使う場合は

     xelatex --shell-escape hoge.tex

    とする。
  • フォント
    一番困ったところ。日本語を使いたい場合には フォントを指定する必要がある。
    ただ、指定をうまくやらないとうまくいかない。
    よくわからないので、ここ を参考にmigu フォントをインストールする。

    ダウンロードしたzipファイル達を展開し、中のttfファイルを以下へコピー。

    /usr/share/fonts/truetype/migu/

    ディレクトリmiguは自分で作っておく。

    次にプリアンブルに以下を書く。

    \usepackage[no-math]{fontspec}
    \setmainfont{Migu 1P}
    \setsansfont{Migu 1P}
    \setmonofont{Migu 1M}
    \XeTeXlinebreaklocale "ja"

    no-mathは数式環境のフォントは指定から除外する意味らしい。
  • tikz環境

    xelatexを使う場合には以下のようにする。

    \def\pgfsysdriver{pgfsys-xetex.def}    %XeTeXの場合
    \usepackage{tikz}
  • その他

    minipage screenとかitemboxは使えないので、ovalboxで代用する。
    例えば、

    
    \def\MINIPAGE#1
     {
             \begin{center}
             \Ovalbox{
             \begin{minipage}{0.9\linewidth}
             #1
             \end{minipage}}
             \end{center}
             }


    とかしておくと\MINIPAGE{hoge}が楕円の箱で囲まれる。


今日は打ち合わせ。ちょっと別のことをやることになった。
気合を入れてがんばろう。

2013-06-28

207びぼーろく;tikzでの√

tikzで単純にsqrt(2)とか書くとエラーではねられる。こんな時は、{}でくくる。


($ (4,{sqrt(7)}) $)


だとOK。これまでは1.41421356とか書いてたけど、これからは書く必要がない。便利。

2013-05-05

201びぼーろく; pdfへ変換するのをひとまとめにする(lilypond,latex)

ただいま絶賛原稿執筆中...、のはずだけどなぜか余計なことをしたくなる。
というわけで、息抜きに前々からやりたかったことをやることにした。

1つ目は部屋の片付けと模様替え。こいつはすぐ終了。
2つ目はpdfを作るのに全て同じシェルスクリプトでやってしまいたいというもの。

具体的には、最近は下の3つを扱うことが多くなりvim上でいちいち変えていたコンパイルしていたものの、結構面倒になった。


  • dvipdfmxを使う
  • dvips& ps2pdfを使う
  • lilypond を使う(楽譜作成)


というわけで、ひとまとめにすることにした。

lilypond の拡張子はly、texファイルは texなので、その二つで読み分けることにする。
ちなみにtex2pdf.shは前に書いた もの。

--------- ここから ----------

#!/bin/bash

export FILE=$1
echo $FILE
export NAME=$(echo $FILE |sed s/\.[a-zA-Z0-9]*$//)
echo $NAME
export FILETYPE=$(echo $FILE |sed s/$NAME\.//)
echo $FILETYPE



if [ "$FILETYPE" = "tex"  ]; then
        tex2pdf.sh $FILE
elif [ "$FILETYPE" = "ly" ]; then
        lilypond $FILE
else
        echo "cannot convert to pdf file"
fi


------ここまで-------

いつも思うけど、もっと綺麗で簡潔な書き方があるんだろうな。

あとは適当に名前をつけて実行権限を付加。(手元の環境ではConvert2pdf.shという名前にした)

chmod +x Convert2pdf.sh

あとはパスの通っている場所に置いて使う。

いつもvimを使っているので、vimのコマンドモードとかで

:!Convert2pdf.sh % 

で実行させている。例えば編集ファイルが test.lyならlilypond を、 test.texならtex2pdf.sh、それ以外の場合は終了するはず。

コンパイルが数秒ならいいけど、30秒ぐらいかかる場合はソースファイルを眺めたいので、別の軽いターミナル上でコンパイルしてもらい自分は元のvimの画面を眺める、というようにしている。

:!xterm -e Convert2pdf.sh % &


vimを使っているのでついついescキーを押す癖ができてしまった。

2013-05-03

200びぼーろく;dvips & ps2pdf か dvipdfmx か

いつもlatexを使ってるけど、以下のように2系統でpdfを作っている。

通常のファイル: dvipdfmx でdvi-> pdf  
スライド作成: powerdot なので dvi-> ps -> pdf 

それぞれ処理が違うのでいつも別のスクリプトを作って処理させていた。
けど、いちいち切り替えるのは非常に面倒なので、コンパイルするtexファイルの先頭に手でコメントを追加して、その内容で切り替えることにした。


dvipdfmxを使う場合には先頭行に %% dvipdfmx を入れ、  dvips, ps2pdfを使う場合には  %% dvipsを入れておいて、それで判断させて切り替える。


実際にはこのスクリプトはdvips が先頭行に含まれているかどうかで判定しているので、ps経由でコンパイルする場合だけ、先頭行に%%dvipsを追加すればOK。

さて後々のためにスクリプトを残す。といってもすぐ書ける内容なので残すほどでもないと思うけど...。

platex, dvipdfmx ,dvips ,ps2pdf にパスが通っていることが前提。


--------------ここから-------------------

#!/bin/bash

export TEXFILE=$1  
## tex ファイルの指定

export DVITYPE=$(head -1 $1 |grep dvips )   
## dvipsが含まれているかどうか

platex --shell-escape $TEXFILE && platex --shell-escape $TEXFILE 
## 2回platex にかける


if [ "$DVITYPE" = "" ]; then  
        dvipdfmx $(echo $TEXFILE|sed s/\.tex$/\.dvi/)         
        ##dvipsが含まれていない時、dvipdfmx でpdfを生成
else 
        dvips $(echo $TEXFILE|sed s/\.tex$/\.dvi/) && ps2pdf $(echo $TEXFILE|sed s/\.tex$/\.ps/) 
        ##dvipsが含まれている時、dvips, ps2pdf経由でpdfを生成
fi

export FILENAME=$(echo $TEXFILE|sed s/\.tex$//)
for i in $FILENAME.*
        do(
        if [ "$i" = "$FILENAME.tex" ]; then 
                        echo "TEXFILE"
                elif [ "$i" = "$FILENAME.pdf" ]; then 
                        echo "PDFFILE"
                elif [ "$i" = "$FILENAME.dvi" ]; then 
                        echo "DVIFILE"
                else  
                        rm $i
                fi
        )
        done

## tex, dvi,pdf ファイル以外は全て削除

pdfopen $FILENAME.pdf

##pdfを開く



--------ここまで--------------




さて、とうとう200回も書いてしまったけど、あまり内容は変わってない。
ま、備忘録なので変える必要もないんだけれど。

最近matlabのクローンとしてscilabというものがあることを教えてもらった。
行列の計算に定評があるらしい。
ちょっと勉強してみようかと考え中。

2013-03-31

195びぼーろく;発表用フォントのインストール

さて、ここ でも書いてたけど、powerdotではps2pdfを使ってpdfを作る。
なので、別のフォントをインストールして使う。

以前書いたところと若干変わっているようなので、もう一度メモとして残す。


  1. cidfmapを探す

    ps2pdfで埋めこまれているフォントは cidfmapに記述されているらしい。
    というわけで、まずcidfmapを探す。

    locate cidfmap

    手元の環境では、/var/lib/ghostscript/fonts/cidfmap にあると返事が返ってくる。
  2. 参照しているフォントを探す。

    見つかったcidfmapの記述の中から/Ryumin-Light /GothicBBB-Medium 等が参照しているフォントを探す。僕の場合は

    /usr/share/fonts/truetype/fonts-japanese-mincho.ttf
    /usr/share/fonts/truetype/fonts-japanese-gothic.ttf

    だった(以前と名前が変わってた)。
    これは別のフォントのシンボリックリンクなので、別のフォントのシンボリックリンクにすれば良い。
  3. フォントのダウンロード&展開

    こちらからフォントをダウンロードする。

    wget http://yozvox.web.fc2.com/MoboMoga-001.02.12b.7z
    7z e MoboMoga-001.02.12b.7z

    すると、ttcファイルが展開される。
  4. フォントのコピー

    /usr/share/fonts/truetype/ 以下に専用のフォルダ(mobo)を作成し、全てコピー。

    mkdir /usr/share/fonts/truetype/mobo
    cp *.ttc /usr/share/fonts/truetype/mobo
  5. リンクを変更する

    以前のリンクを退避。

    mv fonts-japanese-gothic.ttf fonts-japanese-gothic.ttf.old
    mv fonts-japanese-mincho.ttf fonts-japanese-mincho.ttf.old

    リンクを張る。

    ln -s /usr/share/fonts/truetype/mobo/mogamb.ttc /usr/share/fonts/truetype/fonts-japanese-mincho.ttf
    ln -s /usr/share/fonts/truetype/mobo/mobogb.ttc /usr/share/fonts/truetype/fonts-japanese-gothic.ttf


    で終わり。

さて学会発表も終わったので論文としてまとめてしまいたい...が時間があるかどうか。
とりあえずできるところから始めよう。

2012-11-28

177びぼーろく;powerdot その2

久しぶりに研究会でしゃべるのでそのスライドづくりにpowerdotを使うことにした。
初めて使うので色々と戸惑う。ので、記録を残す。

まず、powerdotではdvipdfmxが使えないので以下のスクリプトで一気に作ってもらう。
\$1はこのスクリプトの引数で、最後のpdfopenはadobeで再読み込みしてもらうためのコマンド。


-----
#!/bin/bash

export TEXFILE=\$1


platex --shell-escape \$TEXFILE &&platex --shell-escape \$TEXFILE && dvips \$(echo \$TEXFILE|sed s/\.tex\$/\.dvi/)&&ps2pdf \$(echo \$TEXFILE|sed s/\.tex\$/\.ps/)

export FILENAME=\$(echo \$TEXFILE|sed s/\.tex\$//)
for i in $FILENAME.*
        do
                if [ "\$i" = "\$FILENAME.tex" ]; then
                        echo "TEXFILE"
                elif [ "\$i" = "\$FILENAME.pdf" ]; then
                        echo "PDFFILE"
                elif [ "\$i" = "\$FILENAME.dvi" ]; then
                        echo "DVIFILE"
                else
                        rm \$i
                fi
        done

pdfopen \$FILENAME.pdf
-----


上の内容で適当に名前をつけて、実行権限を付与して実行させるとpdfまで作ってくれる(と思う)。
adobeのreaderで開いていれば再読み込みしてくれる(はず)。


さて、後はpowerdotの体裁に関する話。

  • スタイル
    いろいろ試してみたけど、一番気に入ったのがfymaなので、

    \documentclass[style=fyma]{powerdot}

    にした。
  • フッター

    スライドでヘッダーとかフッターに所属とかを書きたかったので、次のように記述。

    \pdsetup{
    lf=ふにゃふにゃ,   % 左側のフッター
    rf=ほげほげ          %右側のフッター
    }
  • ボールド化
    さらに、いちいち\bfとか書くのが面倒なので

    \renewcommand{\kanjifamilydefault}{\gtdefault}  %%文章をボールドに。
    \mathversion{bold}   %%数式環境内をボールドに。

    をプリアンブルに追加。

その他tikzも使える模様。便利。




さて、映画「オーケストラの向こう側(Music from the inside out)」 のDVDを購入。僕もアマチュアだけどオーケストラに所属する人間として、プロの人がどのように考えているのかを見るのは面白かった。

一番印象深かったのは、音楽のジャンルに対してこだわりがないことだった。まぁ、仕事だから好き嫌いなんて関係ないんだろうけど。

どうしても僕みたいな人間はクラッシックの曲に焦点を当ててしまうんだけど、プロの人は裾野が広く、現代曲からジャズや民族音楽までいろいろなところへ興味を持って接している姿が印象的だった。

852びぼーろく; 温泉

 に漬かって少しリフレッシュ。この1週間はすごく疲れたので良かった。 さて、最近考えているこの分野、じつは掘れば掘るほど新しい内容が出てきそうな気がしてきた。(大体気のせい)