No Such Blog or Diary

«Prev || 1 | 2 | 3 | 4 | 5 | 6 | 7 || Next»

Metapostで図を描く

機械的な図を描くにはやはり便利.図が繰り返す場合の繰り返し回数とかすぐいじれるし.ただ,TeX で書くラベルの中に動的な値を入れるのが少々面倒なのでどうにかならないかなぁとも思ったり.ファイル生成してやればいいのだけど... TeX ラベルが動的なプログラムから,ファイル生成をするプログラムを生成するスクリプトでも書こうかな?

TeX の Box

なにやら \hbox, \vbox, \vtop があって, \hbox は一行用で \vbox, \vtop が複数行可能.\vbox は一番下の行がベースにきて,\vtop は一番上がベースにくると.んで,\vbox to height とか書いて高さを height に指定するか,\vbox spead dh とか書いて通常の組反した高さに dh だけ足すとかするらしい.

横幅は内部で \hsize{width} で指定と.あとは \setboxNNN=\vbox... (NNN=0~255) とかでこれをレジスタに保存して,\boxNNN でどこでも使える.レジスタに保存してあれば \dh, \ht, \wd で depth, height, width を知ることができる.

んで,これらの情報と \raise, \lower, \moveleft, \moveright を使うと適当な一あわせができると.そこまではいいのだが,内側の文章の横幅ぴったりの \vbox を作るにはどうしたらよいだろうか? 内部の文章が途中で強制改行(\\)したときに横幅が良くわからん.

LaTeX 入り MetaPost から EPS

LaTeX 入りの MetaPost を mpost でコンパイルすると LaTeX 内でしか使えない EPS が出来上がる.これを独立な EPS にするには,その図だけを表示する tex をコンパイルして dvips にかければいい.これを毎回やるのも面倒なのでスクリプトでまとめてやってやろうかとスクリプトを書いてみた.使う機会ないかもしれないけど... それにしても冬なのに雪のかぶってない富士山ってかなりショックかも.寒いんだから積もれよとか思ったり.

TeX Tips?

論文の投稿に必要だったのでメモ.

endfloat.sty: 図や表を本文の後ろに持っていく.

setspace.sty: double-spaced の設定をする.

cite.sty: citation のソートと省略をしつつ,上付きとかに書式変更.ついでに上付きの citation でカッコつきにはこんな感じでかけばいい:

\usepackage[superscript]{cite}
\makeatletter
\def\@citess#1{\mbox{$\m@th^{\hbox{\OverciteFont{(#1)}}}$}}
\renewcommand\@biblabel[1]{\hfill#1.}
\makeatother

もひとつおまけに endfloat で最後に追いやった図とかを独立のページでなくまとめて配置する:

\usepackage[nofiglist,notablist,nomarkers]{endfloat}
\renewcommand{\efloatseparator}{\medskip}

ついでに図とかのリストを消して,図とかの位置を表すマーカーもけしてる.

TeX で書いた式を画像に落とす

TexPoint でやっていることをスクリプトにまとめてみた.tex2img.tex で画像に落としたい式とかを書いて下のスクリプトを実行するれば,tex -> dvi -> ps -> bmp(png) と画像が出来上がるという仕組み.pLaTeX, Ghostscript が必要になる.

#!/bin/bash
 
BASE="tex2img"
TEXFILE="$BASE.tex"
DVIFILE="$BASE.dvi"
PSFILE="$BASE.ps"
BBFILE="$BASE.bb"
RES="1200"
 
#DEVICE="pngmono"
#OUTFILE="$BASE.png"
 
DEVICE="bmpmono"
OUTFILE="$BASE.bmp"
 
TEXCOM="platex $TEXFILE"
PSCOM="dvipsk -D $RES -E -o $PSFILE $DVIFILE"
BBCOM="gswin32c -q -dNOPAUSE -dBATCH -sDEVICE=bbox $PSFILE"
 
echo "Running $TEXCOM"
$TEXCOM
 
echo "Running $PSCOM"
$PSCOM
 
echo "Running $BBCOM"
$BBCOM > $BBFILE 2>&1
BB=`cat $BBFILE | grep '%%BoundingBox:'`
echo "Found bounding box $BB"
 
BX=`echo $BB | awk '//{print $2}'`
BY=`echo $BB | awk '//{print $3}'`
BX2=`echo $BB | awk '//{print $4}'`
BY2=`echo $BB | awk '//{print $5}'`
 
X=`expr $BX2 '-' $BX`
X=`expr $X '*' 300`
X=`expr $X '/' 18`
Y=`expr $BY2 '-' $BY`
Y=`expr $Y '*' 300`
Y=`expr $Y '/' 18`
 
IMGCOM="gswin32c  -q -dNOPAUSE -dBATCH -sDEVICE=$DEVICE -r$RES -sOutputFile=$OUTFILE -g${X}x${Y} -c -$BX -$BY translate  -q $PSFILE"
 
echo "Running $IMGCOM"
$IMGCOM

ファイルにして置いておこう.

カウンタ値で記号を順に表示

TeXで脚注に使われるような記号をカウンタ値に応じて表示させるのを fnsymbol コマンドでできるらしい.たとえば以下のようなコードで記号が順にでる.

\newcounter{samplecounter}
\setcounter{samplecounter}{0}
\fnsymbol{samplecounter}
\stepcounter{samplecounter}
\fnsymbol{samplecounter}
\stepcounter{samplecounter}
...

カウンタの値設定が setcounter で,カウンタのインクリメントが stepcounter で.まあ,こんなことを知っていてなんの役に立つのか良く分からないけど.

«Prev || 1 | 2 | 3 | 4 | 5 | 6 | 7 || Next»
Search
Feeds

Page Top