fc2ブログ
 

えちえち☆だんせーき!

アニメ大好き社会人のロコリンのブログ。2015年卒(修士)の社会人。学生時代(2010年)から続けてるブログなのでエントリによっては学生ブログと社会人ブログになっています。時系列から察して。
 
 
このブログについて
ブログ内検索
カテゴリ
プロフィール

ロコリン

Author:ロコリン
2018年6月から会社員。2015年3月まで大学院生でした。
趣味:アニメ/Twitter/ゲーム/ニコ動
今(2015年2月更新):プリキュア/プリパラ/アイカツ/ごちうさ/艦これ

外部リンク
Twitter

W32TeX で Shift_JIS 外の文字を利用する 

就活まだ続けてるけど研究にも手を付けないといけないので、両立できるか不安ですが、どうなるかな。今期見てるアニメはごちうさラブライブ2期咲1期だけです。

TeX で厄介なのは Shift_JIS (CP932 とか) にない文字 (補助漢字とか) の入力に手間がかかることです。でも、どうしても入力しなくてはいけない文字が出てきたので、解決策を探しました。なんとか見つけたので、まとめます。

1 OTF (otf.sty) のインストール

otf.sty は普通にやってればインストールしてるでしょう。ここでもパッケージの1つとして取り上げられていますし。

OTF の使い方は、まずプリアンブルに \usepackage{otf} を入れることです。そのあとは本文中で次の2通りの方法で文字を指定します。

  • \UTF - Unicode を16進数で指定。例:\UTF{9ad9}
  • \CID - CID を10進数で指定。例:\CID{8705}

なお、\UTF{9ad9} も \CID{8705} も「髙」(はしごだか)を表します。

基本的にはこれで問題なくコンパイル (platex) まではできます。

2 cid-x.map の設定

しかし、PDF の作成 (dvipdfmx) で「フォントがない」って怒られました(◞‸◟) 具体的にはこんなエラーメッセージです。

** WARNING ** Could not locate a virtual/physical font for TFM "hminr-h".
** WARNING ** >> This font is mapped to a physical font "HiraMinProN-W3.otf".
** WARNING ** >> Please check if kpathsea library can find this font: HiraMinProN-W3.otf
** ERROR ** Cannot proceed without .vf or "physical" font for PDF output...

上記エラーの原因はフォントを適切にマッピングしてないからでしょう。というわけで、次のようにして解決しました。(出典はこちら。)

(TeXをインストールしたディレクトリ)\share\texmf-dist\fonts\map\dvipdfmx\base にある cid-x.map を開きます。(ない場合は作成します。) 次の文字列を追記します。

rml         H               Ryumin-Light
rmlv        V               Ryumin-Light
gbm         H               GothicBBB-Medium
gbmv        V               GothicBBB-Medium
hminr-h     H               Ryumin-Light
hminr-v     V               Ryumin-Light
otf-ujmr-h  UniJIS-UTF16-H  Ryumin-Light
otf-ujmr-v  UniJIS-UTF16-V  Ryumin-Light
otf-cjmr-h  Adobe-Japan1-6  Ryumin-Light
otf-cjmr-v  Identity-V      Ryumin-Light
hgothr-h    H               GothicBBB-Medium
hgothr-v    V               GothicBBB-Medium
otf-ujgr-h  UniJIS-UTF16-H  GothicBBB-Medium
otf-ujgr-v  UniJIS-UTF16-V  GothicBBB-Medium
otf-cjgr-h  Adobe-Japan1-6  GothicBBB-Medium
otf-cjgr-v  Identity-V      GothicBBB-Medium

以上です。結構簡単。(でも解決策を見つけるまでに多少時間がかかりました。これが TeX の難点なんですよね。)

他のフォントを使いたい時は適宜一番右のフォントを変更すればいいんじゃないですか。IPA フォントを使いたいなら Ryumin-Light の部分を ipam.ttf に、GothicBBB-Medium の部分を ipag.ttf に変えるといいです。もちろんこれは dvipdfmx の -f オプションで別途 *.map ファイルを指定することもできます。

3 感想

漢字の入力については不自由はなくなったっぽいです。「髙島屋」も「\UTF{9ad9}島屋」って書けば正しく描画されます。

でも、それ以外の絵文字とかは入力できないっぽいですね。Twitter のキチガイ顔文字とか(☝ ՞ਊ ՞)=☞)՞ਊ ՞) でもこんなの論文で記入することもないですし、いいんじゃないですか(棒読み)

参考文献

  1. 【LaTeX】で、要するにどうやる訳?【OTF】 - Linear Independent(リニヤインデペンデント)
  2. TeXで「はしご高」を表示する方法 - さわっても熱くない花火

LaTeX で BibTeX (参考文献) と MakeIndex (索引) を目次に追加する方法 

BibTeX の使い方と MakeIndex の使い方については様々なサイトで紹介されているのでここでは紹介しません。しかし,これらを同時に使った時に正しく組版する方法については他サイトで言及がないのでここで紹介します。

まず次のような TeX ファイルがあるとします。目次,参考文献,索引を使っています。

test_0.tex

\documentclass[11pt,dvipdfmx]{jreport}
\usepackage{makeidx}	% 索引を作るのに使う
\makeindex	% 索引を作る

\makeatletter	% ↓定義・再定義開始↓

% \bibliography (BibTeX) による参考文献を目次に追加
% http://www.nsknet.or.jp/~tony/TeX/faq/macro.htm#bibliography
\renewenvironment{thebibliography}[1]{%
	\chapter*{\bibname\@mkboth{\bibname}{\bibname}}%
	\addcontentsline{toc}{chapter}{\bibname}% この行追加
		\list{\@biblabel{\@arabic\c@enumiv}}%
			{\settowidth\labelwidth{\@biblabel{#1}}%
			\leftmargin\labelwidth
			\advance\leftmargin\labelsep
			\@openbib@code
			\usecounter{enumiv}%
			\let\p@enumiv\@empty
			\renewcommand\theenumiv{\@arabic\c@enumiv}}%
	\sloppy
	\clubpenalty4000
	\@clubpenalty\clubpenalty
	\widowpenalty4000%
	\sfcode`\.\@m
}{
	\def\@noitemerr
	{\@latex@warning{Empty `thebibliography' environment}}%
	\endlist
}

\renewcommand{\bibname}{参考文献}

\newcommand\myprintindex{	% 索引を目次に追加
	\clearpage
	%\phantomsection	% ← hyperref を使う時は入れる。使わないなら不要。
	\addcontentsline{toc}{chapter}{\indexname}
	\printindex
}

\makeatother	% ↑定義・再定義終了↑

\begin{document}

\tableofcontents	% 目次

\chapter{真夏の夜の淫夢}

真夏の夜の淫夢\cite{inmu2000}はコートコーポレーションが2000年に発売したアレなビデオ。
ニコニコ動画や Twitter などで流行している(2013年現在)。
そのため,随所でこの作品の名言を見ることになる。
たまげたなぁ。

\section{野獣先輩}

4章,野獣先輩の名言を示す。

「こ↑こ↓\index{ここ@こ↑こ↓}」

「帰って,どうぞ!†悔い改めて†\index{くいあらためて@†悔い改めて†}」

「まずうちさぁ,屋上あんだけど……焼いて行かない?」

「大丈夫でしょ。ま,多少はね。」

サッー!(迫真)\index{さっーはくしん@サッー!(迫真)}

「すっげえ白くなってる。はっきりわかんだね\index{はっきりわかんだね}。」

% 参考文献
\bibliographystyle{junsrt}	% 参考文献のスタイル
\bibliography{bibs}	% ←どの参考文献データベースを読み込むかを指定する。(ここでは ./bibs.bib を読み込む)

\myprintindex	% 索引

\end{document}
参考文献は次の bib ファイルに入っているものとします。

bibs.bib

@misc{inmu2000,
	title={{Babylon Stage34 真夏の夜の淫夢 ~the IMP~}},
	howpublished={コートコーポレーション},
	year=2000
}

これらから PDF を作成するには次の順にコマンドを実行します。

  1. TeX コンパイル (platex)
  2. 参考文献 BibTeX 作成 (pbibtex)
  3. TeX コンパイル (platex)
  4. 索引 MakeIndex 作成 (mendex)
  5. TeX コンパイル (platex)
  6. TeX コンパイル (platex)
  7. PDF 作成 (dvipdfmx)

例えば,上記の test_0.tex と bibs.bib から組版するには次のようにします。

platex test_0.tex
pbibtex test_0
platex test_0.tex
mendex -c -g -p any test_0.idx
platex test_0.tex
platex test_0.tex
dvipdfmx test_0.dvi

当然,毎回これを手動で実行するのは大変なので自動化するべきです。Windows の人はバッチファイル (bat) を,Linux の人はシェルスクリプト (sh) を,Mac OS X の人はシェルスクリプト (command) を作ればいいと思いますよ。

私が作ったものを例として示します。

tes2pdf.bat

:: tex2pdf
:: *.texファイルをpdfとして出力します。
@echo off
setlocal
echo tex2pdf

:: 引数1 (*.tex ファイル) が入力されていれば filedrop へ移動
if exist %1 goto filedrop

:: エラー表示
echo 入力エラー
echo このバッチファイルに *.tex ファイルをドロップしてください。
pause
goto end


:filedrop

:: カレントディレクトリを引数1 (*.tex ファイル) のある場所へ移動
%~d1
cd "%~d1%~p1"

:: TeX コンパイル処理
platex "%~n1%~x1"
:: BibTeX 処理
pbibtex "%~n1"
platex "%~n1%~x1"
:: MakeIndex 処理
if exist "%~n1.idx" (
	if exist dot.ist (
		mendex -c -g -s dot.ist -p any "%~n1.idx"
	) else (
		mendex -c -g -p any "%~n1.idx"
	)
	platex "%~n1%~x1"
)
:: BibTeX および MakeIndex の反映処理
platex "%~n1%~x1"
:: PDF 作成処理
if exist ipa.map (
	dvipdfmx -f ipa.map "%~n1.dvi"
) else (
	dvipdfmx "%~n1.dvi"
)


:: 終了
:end
endlocal

tex2pdf.sh

#!/bin/bash

# コマンドライン引数の数をチェック。
if [ $# -ne 1 ] ; then
	echo "引数の数は1個な。"
	exit 1
fi

# 入力されたファイルの拡張子をチェック。
case $1 in
	*.tex)
		;;
	*)
		echo "*.tex ファイルを入れてくれ。"
		exit 1
		;;
esac

# TeX コンパイル処理
platex $1
# BibTeX 処理
pbibtex ${1/.tex}.bbl
platex $1
# MakeIndex 処理
if [ -e ${1/.tex}.idx ] ; then
	if [ -e dot.ist ] ; then
		mendex -c -g -s dot.ist -p any ${1/.tex}.idx
	else
		mendex -c -g  -p any ${1/.tex}.idx
	fi
	platex $1
fi
# BibTeX および MakeIndex の反映処理
platex $1
# PDF 生成処理
dvipdfmx ${1/.tex}.dvi

[LaTeX] 図表数式番号を通し番号にする・章ごとに分ける 

卒論は大体完成して,プレゼンのスライドも大体できていて,暇なので LaTeX tips を書きます.

ドキュメントクラスを report や jreport, book, jbook などにしている場合,\chapter コマンドによって章を作ることができます.図や表,数式などの番号は「章番号.章内の通し番号」になります.

ですが,なんか知らないんですけど,私の学校の卒論では図表数式番号を論文全体の通し番号にしないといけないみたいです.簡単に直せるだろう,そう思っていた時期が私にもありました (AA 略).あんまり簡単にはいかないみたいですね.

そこで,解決策を一生懸命調べました.これで解決です.

1 通し番号にする

1.1 remreset.sty のダウンロード

CTAN から remreset.sty をダウンロードする必要があります.

remreset.sty は CTAN の「Carlisle – David Carlisle's small pack­ages」の中にありますので,下記より zip アーカイブをダウンロードすればいいと思います.

ダウンロードした carlisle.zip を以下のディレクトリに展開してください.

(TeX ディレクトリ)/share/texmf/tex/latex

1.2 TeX ファイルの編集

通し番号にしたい TeX ファイルのプリアンブルに下記を追記してください.(スタイルファイルに書く場合は \makeatletter と \makeatother は消しておkです.)

\usepackage{remreset}	% removefromreset に使う

\makeatletter
	\@removefromreset{figure}{chapter}
	\def\thefigure{\arabic{figure}}

	\@removefromreset{table}{chapter}
	\def\thetable{\arabic{table}}

	\@removefromreset{equation}{chapter}
	\def\theequation{\arabic{equation}}

	%\@removefromreset{subfigure}{chapter}
	%\def\thesubfigure{(\alph{subfigure})}
	%\def\p@subfigure{\arabic{figure}}
	%\@removefromreset{subtable}{chapter}
	%\def\thesubtable{(\alph{subtable})}
	%\def\p@subtable{\arabic{table}}
	%最新の TeX では \subfigure, \subtable は廃止されている。(代替コマンド: \subcaption)
\makeatother

これでおkです.図,表,数式だけでなく,subfigure や subtable にも対応させました.( ・´ー・`)どやぁ.

(2013年7月17日追記.) 最新の TeX では subfigure パッケージは廃止されています。したがって,上記の subfigure, subtable 向けの設定は削除してください。(今はコメントアウトしてあるのでそのままコピペでも大丈夫です。) 現在,subfigure や subtable などの代替コマンドとして subcaption があります。

2 節ごとに分ける

article や jarticle, jsarticle などでは,デフォルトで通し番号になっていると思います.で,逆にこれらのドキュメントクラスで節ごとに図表数式番号を分けたいときもあるかと思いますので,ついでに載せときます.

プリアンブルに次のように書くだけでおkです.(スタイルファイルに書く場合は \makeatletter と \makeatother は消しておkです.)

\makeatletter
	\renewcommand{\theequation}{% 式番号の付け方
	\thesection.\arabic{equation}}
	\@addtoreset{equation}{section}

	\renewcommand{\thefigure}{% 図番号の付け方
	\thesection.\arabic{figure}}
	\@addtoreset{figure}{section}

	\renewcommand{\thetable}{% 表番号の付け方
	\thesection.\arabic{table}}
	\@addtoreset{table}{section}
\makeatother

subfigure.sty パッケージを使う場合は,上記宣言の前ではなく,後に \usepackage{subfigure} を入力してください.

3 補足

listings を使う場合

文書中にソースコードを埋め込める listings.sty を使う人向けに補足します.(使わない人には関係ありません.)

lstlisting 環境のリスト番号を「節.リスト」→「通し番号」にするには次のようにします.

\usepackage{remreset}	% removefromreset に使う

\makeatletter
	\AtBeginDocument{
	\@removefromreset{lstlisting}{chapter}
	\def\thelstlisting{\arabic{lstlisting}}}
\makeatother

lstlisting 環境のリスト番号を「通し番号」→「章.リスト」にするには次のようにします.

\makeatletter
	\AtBeginDocument{% リスト番号の付け方
	\renewcommand*{\thelstlisting}{\arabic{section}.\arabic{lstlisting}}%
	\@addtoreset{lstlisting}{section}}
\makeatother

図や表との違いは \AtBeginDocument{ 〜 } で囲まないといけないことですね.

参考文献

  1. [Tex] 図を通し番号で表示する【OKWave】
  2. http://svn.amachos.com/i4papers/deliverables/d16/packages.sty

PSTricks で図を作成 

ここ 2 年くらいの間、LaTeX に貼り付ける図は Inkscape で描いていました。Inkscape はドローソフトなので、柔軟に描くことができます。反面、陰関数や媒介変数によるプロットのエクステンションがない、複雑な数式を含んだ文字列を描きづらいなど、限界を感じてはいました。

どうやら、数学的な図は PSTricks で作成するといいみたいです。PSTricks は LaTeX のパッケージです。PSTricks は LaTeX と抱き合わせで入っており、LaTeX ユーザはすぐに使えます。(たぶん。) 詳しいことは Wikipedia でも見てください。図の具体例などが見られますので、こういう図を描きたいなぁって思ったら PSTricks に挑戦するといいと思います。

1 とりあえず PSTricks で図を出力

もうすでに LaTeX はインストールしてあるという前提です。それ以外は特に準備しなくていいです。PSTricks のパッケージは元々 LaTeX と抱き合わせで入っていますので、新たに CTAN からダウンロードしてくる必要はありません。

1.1 eps の出力

とりあえず PSTricks で図を作れることを確かめましょう。『PSTricks パッケージ』からテスト用のソースコード (fig.tex) をダウンロードしてください。

fig.tex に対して以下のコマンドを実行すると fig.eps が得られます。

platex fig.tex
dvips -E -Ppdf fig.dvi -o fig.eps

1.2 eps の読み込み

先ほど生成した fig.eps を実際に使ってみましょう。test.tex をダウンロードしてください。

test.tex を fig.eps と同じディレクトリに置き、以下のコマンドを実行してください。

platex test.tex
dvipdfmx test.dvi

すると、test.pdf ができていると思います。一応生成された test.pdf をうpしておきます。

参考文献

【LaTeX】箇条書き関連マクロ 

学部 3 年生の情報工学実験IIでは毎回レポートを書いているのですが、私は全 7 レポートを LaTeX で作りました。その中で見つけた小技などを少しずつ紹介できたらいいなと思っています。なお、その際様々なサイトを参考にしましたので、可能な限り出展も示したいです。

今回は箇条書き関連の小技を紹介します。

続き →
最新記事
最新コメント
FC2カウンター
欲しい
最近買ったもの
Amazon 検索