Posts tagged with "tex"

シンプルな修士論文のLaTeXテンプレート

自分が修士論文を書いたときに使ったLaTeXテンプレートです.

特徴は,

  • 文字コードはUTF-8
  • ドキュメントクラスはjsbookで,余白や文字数などの細かい設定はしていない(デフォルトのまま)
  • 章ごとにTeXファイルを分割してる
  • トップディレクトリにあまりファイルを置かないようにした(図とか分割TeXファイルはディレクトリの下に配置)
  • 参考文献にはBibTeXを使用し,登場順に列挙するようにした
  • 定義,補題,証明などの環境を用意した(ntheoremを使用)
  • hyperrefを使ってPDFにしおりをつける

とかです.コンパイルの方法とかはREADMEを見てください.PDFを作成すると以下のようになります.

参考にさせていただいたページ

Tags:

ファイルが更新されたら自動で platex して dvipdfmx する

LaTeXを手動でコンパイルするのめんどくさいですよね.

LaTeXのコンパイルを自動化するためには, OMakeを使う といった方法があります.OMakeは依存ファイルの更新を感知して自動でコンパイルを行ってくれます.

OMakeはBibTeXとかの依存関係を自動で判断してくれるので便利なんですが,簡単なレポートを書いてるときとかは,OMakefileとかOMakerootとか用意するのすらめんどくさいですよね.余分に管理するファイル増えちゃいますし.

そこで,以前作ったplatexpdf にファイルを監視して自動コンパイルするオプションを追加してみました.

使い方は,

$ platexpdf -w -- paper.tex

とすると,paper.texを監視します.他にも監視してほしいファイルがある場合には,

$ platexpdf -w paper1.tex -w paper2.tex paper1.tex

とすると,paper1.texとpaper2.texのどちらかに変更があれば,paper1.texをコンパイルします.

-w オプションには,ファイルもしくはディレクトリを指定できます.ディレクトリを指定した場合は,指定ディレクトリ以下を再帰的に監視します.監視ファイルを省略した場合は,コンパイル対象のファイルが指定されたとみなします.

インストール

Perlが動く環境が必要です. とりあえず,platexpdfをダウンロードしてきてパスの通ってるとこに置きます.

$ curl -O https://raw.github.com/fjyuu/platexpdf/master/platexpdf
$ chmod +x platexpdf
$ mv platexpdf ~/bin

普通に使うにはこれでいいのですが,-w オプションを使うためには, Filesys::Notify::Simple モジュールが必要です.

# cpanmがない場合はインストール(パッケージにcpanmがあればそれをインストール)
$ sudo curl -L http://cpanmin.us | perl - --sudo App::cpanminus

# Filesys::Notify::Simpleをインストール
$ sudo cpanm --sudo Filesys::Notify::Simple

デフォルトでは,Filesys::Notify::Simpleは数秒ごとにfindして更新を監視します.プラットフォームごとに以下のモジュールをインストールしておくことで,さらに効率的に監視することができます.

# Linux
$ sudo cpanm --sudo Linux::Inotify2

# OS X
$ sudo cpanm --sudo Mac::FSEvents
$ sudo cpanm --sudo Filesys::Notify::KQueue

# FreeBSD
$ sudo cpanm --sudo Filesys::Notify::KQueue
Tags: ,

Inkscapeで理系の作図

研究室でのプレゼンや資料作成で使う図はいつも Inkscape を使って描いています.

個人的に研究で使う図は,

  • 四角
  • 矢印
  • 文字
  • 数式

が描ければ,だいたいいけると思っています.Inkscapeのすべての機能を使いこなす必要なんてないですし,ましてやデザイナーさんが使うような高いソフトなんか必要ないです.

導入

Linux

Linuxでは,たいていディストリビューションのリポジトリにパッケージが用意されていると思います.たとえば,

$ sudo yum install inkscape

とか

$ sudo aptitude install inkscape

でインストールできます.

OS X

OS XでInkscapeを動かすには,X11が必要です.以下の手順でインストールします.

  1. こちら のページからXQuartをダウンロードして,インストールします.
  2. Inkscapeを こちら からダウンロードしてきて,インストールします.

図形を描く

使う際に気をつけておくことは,Inkscapeは 単純な図形を組み合わせて 目的の図を描くソフト だということです.矢印スタンプとかニコちゃんマークとかそういうのはないのです.

たとえば矢印は,四角と三角を組み合わせて作りますし,

file:///home/fjyuu/Dropbox/blog/arrow.png

吹き出しも,四角と三角でできます.

file:///home/fjyuu/Dropbox/blog/balloon.png

以下のチュートリアルをやれば,十分目的の図形が描けるようになると思います.

他にもInkscapeの使い方をわかりやすく解説したサイト様がたくさんあるので,それらを参考にするといいと思います.

個人的によく使う機能

パスの統合
複数のオブジェクトを組み合わせるときに使います
オブジェクトのグループ化
複数のオブジェクトをひとつのオブジェクトとして扱いたいときに使います
オブジェクトの整列
オブジェクトを揃えるときに使います
フィル/ストロークの設定
線の種類や太さ,色などを変えるときに使います

数式を描く

理系の作図では,図の中に数式を含むこともあると思います.Inkscapeには LaTeXの数式 をオブジェクトとして取り込む機能があります.この機能を使うには,

  • LaTeX環境
  • pstoedit

が必要です.

LaTeX環境の構築

LaTeX環境の構築については,ググるといろいろ情報が出てくるのであまりここでは詳しく述べません.

Linuxでは, TeXLive公式 からTeXLiveをインストールするのがオススメです.また,TeXLiveがディストリビューションのレポジトリにある場合はそれを利用するのもお手軽かと思います.

OS Xでは, MacTeX を入れたりすればいいと思います.

pstoedit

LaTeXの数式をSVG形式にするためにpstoeditが必要です.

Linuxでは,

$ sudo yum install pstoedit

とか

$ sudo aptitude install pstoedit

でインストールできます.

OS Xでは,以下の手順でインストールします.

  1. Homebrew をインストールして使えるようにします.インストール方法については, こちら とかが参考になります.
  2. 以下を実行して,lxmlとpstoeditをインストールします.
    $ sudo easy_install lxml
    $ brew install pstoedit
    

LaTeX数式を使う

LaTeX環境とpstoeditがそろえば,メニューから [エクステンション]→[レンダリング]→[Latex 数式] で以下のように数式をオブジェクトとして取り込めます.英語メニューの場合は, [Extensions]→[Render]→[LaTeX formula] です.

file:///home/fjyuu/Dropbox/blog/inkscape-latex.png

画像のエクスポート

LaTeXで図を使いたいときなど,PDF形式やEPS形式で保存したい場合があると思います.

Inkscapeでは,普通に保存するとSVG形式で保存されます.他の形式にしたい場合は, [ファイル]→[コピーを保存] から,形式を指定して画像を保存することができます.

PNG形式などビットマップ形式で出力したい場合は, [ファイル]→[ビットマップにエクスポート] から,サイズなどを指定して保存します.

パラパラマンガ的な画像を作る

スライド資料などで,パラパラマンガ的に画像を使いたい場合,すべての画像の大きさが揃っているとラクです.

Inkscapeでは,ページサイズを調整して,画像保存のときに エクスポート領域をページにする ことで,出力される画像の大きさを制御できます.

ページサイズの調整は, [ファイル]→[ドキュメントの設定] から可能です.すべてのオブジェクトが入るように,自動でサイズ調整をすることもできます.

また,パラパラマンガ画像のように,似た画像を複数作るときには, レイヤー機能 を使うと便利です.

org-modeで日本語PDFを出力する

platex して dvipdfmx するスクリプトが奥村先生のTeX Wikiからリンクされている…!

昔のコードが恥ずかしくなったので,少し書きなおしてみました.

ついでと言ってはなんですが,今回はこのスクリプトを使って,Emacsのorg-modeでPDFを出力してみます.

org-modeにはPDFを出力する機能がありますが,デフォルトだと日本語を含むファイルを扱うことができません.

そこで,日本語LaTeXに対応させるために,まず,最新のTeX環境であるTeX Liveをインストールします.Linux・Macの方は,こちら のサイトがとても参考になると思います.Macの方は MacTeX でもいいと思います.Windowsはどうやればいいのか知りません.

TeX環境が整えば,先ほどの platexpdf をパスの通ったところにおいて,以下のようなEmacsの設定を追加します.

(when (require 'org-install nil t)
  ;; LaTeX article class
  (setq org-export-latex-classes
        '(("article"
           "\\documentclass[11pt,a4paper]{jsarticle}
\\usepackage{amsmath}
\\usepackage{amsthm}
\\usepackage{bm}
\\usepackage[dvipdfmx,hiresbb]{graphicx}
\\usepackage[dvipdfmx]{color}"
           ("\\section{%s}" . "\\section*{%s}")
           ("\\subsection{%s}" . "\\subsection*{%s}")
           ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
           ("\\paragraph{%s}" . "\\paragraph*{%s}")
           ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))))

  ;; LaTeXからPDFを作成するコマンド
  (when (executable-find "platexpdf")
    (setq org-latex-to-pdf-process '("platexpdf %f" "platexpdf %f")))

  ;; PDFを開くコマンド
  (eval-after-load "org"
    '(progn
       (delete '("\\.pdf\\'" . default) org-file-apps)
       (add-to-list 'org-file-apps '("\\.pdf\\'" . "okular %s")))))

これで,org-modeで日本語PDFが出力できるようになるはずです.

Tags: , ,

A4メモ用紙テンプレートPDF

僕はよくA4のコピー用紙を,メモ用紙(落書き帳?)として使うんですが,真っ白なまま使うのも少し味気ない.そこで,A4横書きメモ用紙テンプレを作ってみました.

穴あけパンチ用マーカーが付いてるのが特徴です.パンチで穴を開けてファイルに保存しておくと,後から見返すことができて意外と便利です.

LaTeXのソースをGistに置いておきます.自分好みに修正してやってください.

A4-memo

追記

枠を入れたA4メモテンプレートも作ってみました

Tags:

platex して dvipdfmx するスクリプト

TeXファイルからPDFを作成するときは,

$ platex hoge.tex
$ dvipdfmx hoge.dvi

のようにplatexコマンドとdvipdfmxコマンドを実行します.これを一度に行うスクリプトをPerlで書いてみました.文字コードを推測してくれたり,フォントマップをオプションで指定できたりします.

platexpdf – github

使い方はREADMEを見てください.環境はTeX Liveがインストールされていることを想定しています.ちなみに,TeX Liveについてはこちらがとてもよくまとまっていて分かりやすいです.

Tags: ,

全角文字が含まれていないかチェックする

原稿を提出するときに,「”Ryumin-Light-Identity-H”が埋め込まれてないですよ」と言われました.

あれ,日本語使ってないはずなんだけど…と思いつつTeXのフォント埋め込み関連を調べていたんですが,全角”(ダブルクオテーション)が含まれていたのが原因でした….全角記号が紛れ込んでいるとなかなか気づかないものですね.

そこで,すべてが半角英数字で書かれているか調べるスクリプトをPerlで書いてみました.

#!/usr/bin/env perl
use strict;
use warnings;

while (<>) {
    unless (/^\p{InBasicLatin}*$/) {
        print "$.: $_";
    }
}

調べたいファイルを引数にして実行すると全角文字を含んでいる行を表示します.(正確には,「半角英数字と半角記号以外の文字」を含んでいる行を表示します.)

ワンライナーでは,

$ perl -nle 'print "$.: $_" unless /^\p{InBasicLatin}*$/' hoge.tex

と書くことができます.hoge.texに調べたいファイルを指定してください.