* [[Asymptote:http://asymptote.sourceforge.net/]] [#dd856e20]

** はじめに [#w5cb2317]
Asymptote は [[MetaPost]] を発展させたベクトルグラフィック記述言語です。
TeX Live に標準で含まれています。

[[Asymptote:http://asymptote.sourceforge.net/]]
は [[MetaPost]] を発展させたベクトルグラフィック記述言語。
----
#contents
----

-[[Asymptote:http://asymptote.sourceforge.net/]]
-[[Asymptote project on SourceForge:http://sourceforge.net/projects/asymptote/]]

***License [#a68c9862]
** 発音 [#te374add]

[[GPLv3:http://sourceforge.net/p/asymptote/code/HEAD/tree/trunk/asymptote/LICENSE]], [[LGPLv3:http://sourceforge.net/p/asymptote/code/HEAD/tree/trunk/asymptote/LICENSE.LESSER]]
最初見たときにどう発音すればいいかよく分からなかったので,
[[Pronunciation of asymptote - how to pronounce asymptote correctly.:http://www.howjsay.com/index.php?word=asymptote]]
(注意:音が出ます)で確認したところ「アスィムトートゥ」みたいな感じで発音するみたいです。
発音記号では[æ'sim(p)tout]。
英単語としての意味は“漸近線”。

//*** ChangeLog [#k13ddf14]
//-[[log:http://asymptote.svn.sourceforge.net/viewvc/asymptote/trunk/asymptote/?view=log]]

***ChangeLog [#qa654d5d]
** インストール [#a2be7136]

-http://sourceforge.net/p/asymptote/code/HEAD/log/
http://jaist.dl.sourceforge.net/project/asymptote/ や https://sourceforge.net/projects/asymptote/files/ に各種バイナリがあります。

** 発音 [#te374add]
また,Asymptote は [[Ghostscript]] に依存しています。

最初見たときにどう発音すればいいかよく分からなかったので,
[[Pronunciation of asymptote - how to pronounce asymptote correctly.:http://www.howjsay.com/index.php?word=asymptote]]
(注意:音が出ます)
で確認したところ「アスィムトートゥ」みたいな感じで発音するみたいです。~
発音記号では[æ'sim(p)tout]。~
英単語としての意味は“漸近線”。~
Asymptote 2.33 以降は,Ghostscript の仕様変更((EPS 出力デバイスについて,gs9.15 では epswrite が廃止され,代わりに gs9.14 で導入された eps2write が標準となっています。))に伴う改変がなされています。Asymptote 2.33 以降を使用する場合は Ghostscript も 9.14 以上にアップデートする必要があります。逆に,Asymptote 2.32 以前を使用する場合は 9.14 以下をインストールする必要があります。

** インストール [#a2be7136]

本家や[[CTAN:graphics/asymptote/]]に各種バイナリがある。
** ビルド [#e0083d41]

ソースからコンパイルするのも簡単。
Mac OS Xでコンパイルする際は,OSのreadlineライブラリが古いので,あらかじめ新しいreadlineライブラリをインストールしておくと,コマンドラインのヒストリー機能などが使えるようになる。
Asymptoteソースを展開したディレクトリに
[[gc-7.1.tar.gz:http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.1.tar.gz]]
ソースからコンパイルするのも簡単です。

[[本家:https://github.com/vectorgraphics/asymptote/releases]] や [[CTAN:graphics/asymptote/]] にソースコードがあります。

macOS でコンパイルする際は,OS の readline ライブラリが古いので,あらかじめ新しい
readline ライブラリをインストールしておくと,コマンドラインのヒストリー機能などが使えるようになります。
Asymptote ソースを展開したディレクトリに
[[gc-8.0.4.tar.gz:https://www.hboehm.info/gc/gc_source/gc-8.0.4.tar.gz]]
を展開せずに置き,

 ./configure
 # 非標準なところにlibreadlineがある場合は次のように指定
 # LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure
 make
 make install

でできる。
でできます。

Mac OS X 10.6 (Snow Leopard) では次のようなエラーになる。
//gc-7.1.tar.gz は OS X 10.6 (Snow Leopard) で次のようなエラーになる。
//
// In file included from mach_dep.c:163:
// /usr/include/ucontext.h:42:2: error: #error ucontext routines are deprecated, and require _XOPEN_SOURCE to be defined
//
//このときは gc-7.1 の中で ucontext.h をインクルードしているファイルが二つ
//あるのを sys/ucontext.h をインクルードするように書き換えてからその(gc-7.1 の)中で
//
// ./configure --disable-shared  --enable-large-config
// make
//
//し,一つ上に上がって make し直せばよい。

 In file included from mach_dep.c:163:
 /usr/include/ucontext.h:42:2: error: #error ucontext routines are deprecated, and require _XOPEN_SOURCE to be defined

このときは gc-7.1 の中で ucontext.h をインクルードしているファイルが二つあるのを sys/ucontext.h をインクルードするように書き換えてからその(gc-7.1 の)中で
** macOS でのプレビュー [#dc357da5]

 ./configure --disable-shared  --enable-large-config
 make

し,一つ上に上がって make し直せばよい。


** Mac OS X でのプレビュー [#dc357da5]

標準ではgv(あるいはGSview)を使ったPostScriptプレビューになる。
これはMacでも(gvをインストールしておけば)可能だが,X11を立ち上げておかないといけない。
標準では gv あるいは GSview を使った PostScript プレビューになります。
これは Mac でも(gv をインストールしておけば)可能ですが,X11
を立ち上げておかなければなりません。
より簡単には asy -f pdf で起動するか,あるいは ~/.asy/config.asy に

 import settings;
 outformat="pdf"; 

と書いておけばPDFプレビューできる。
Leopardのプレビュー機能は,再読み込みにやや難があるが,非アクティブ→アクティブのタイミングでちゃんと再読み込みしてくれる。
と書いておけば PDF プレビューできます。
// Leopard のプレビュー機能は,再読み込みにやや難があるが,
// 非アクティブ→アクティブのタイミングでちゃんと再読み込みしてくれる。


** 使い方 [#mfe06d22]

asy または asy -f pdf で起動する。help と入力すれば詳しいマニュアルが現れる。
asy または asy -f pdf で起動します。help と入力すれば詳しいマニュアルが現れます。

** 日本語対応 [#q20b2da8]

~/.asy/config.asy を次のようにすれば日本語が通るようである(要日本語対応Ghostscript)。
***日本語対応 (macOS) [#q20b2da8]

~/.asy/config.asy を次のようにすれば日本語が通るようです(要日本語対応
[[Ghostscript]])。

-upLaTeX の場合

 import settings;
 tex="latex";
 texcommand="uplatex";

-pLaTeX の場合

 import settings;
 tex="latex";
 texcommand="platex";

platex のデフォルトがUTF-8になっていない場合は "platex-utf8" とする。こういうコマンドがなければエイリアスかバッチファイルで作る。"platex -kanji=utf8" のようにはできないようだ。
platex のデフォルトが UTF-8 になっていない場合は "platex-utf8" とします。
こういうコマンドがなければエイリアスかバッチファイルで作りましょう。
"platex -kanji=utf8" のようにはできないようです。

** 日本語対応(Windows) [#f6f53eb8]

私の簡単なテストでは texdvicommand="platex --kanji=utf8"; のように
オプションを含めることはできませんでした。ただし Windows 用バイナリです。
全体がコマンド名と見なされるようです。しかし shift jis でも問題なく
通るようです。危ない "表" なども大丈夫でした。テストした config.asy は
***日本語対応 (Windows) [#f6f53eb8]

私の簡単なテストでは texdvicommand="platex --kanji=utf8";
のようにオプションを含めることはできませんでした。
ただし Windows 用バイナリです。
全体がコマンド名と見なされるようです。
しかし shift jis でも問題なく通るようです(危ない "表" なども大丈夫でした)。
テストした config.asy は

 import settings;
 tex="latex";
 texpath="c:/w32tex/bin";
 texcommand="platex";
 texdvicommand="platex";
 dvips="dvips";
 dvipsOptions="-Ppdf";
 psviewer="c:/ghostgum/gsview/gsview32.exe";

うまくいったのは、偶然うまくゆく例を使ったためで、一般には Shift_JIS
エンコーディングの場合、0x5c を含む文字はだめです。 W32TeX の
platex は Shift_JIS がデフォルトなので、texcommand="platex"; などと
することはできません。 platex --kanji=utf8 ... と同じ役割をする
コマンド platex-utf8.exe を使って以下のように設定し、
Asymptote で日本語を使うには UTF-8 を使ってください:
うまくいったのは、偶然うまくゆく例を使ったためで,一般には Shift_JIS
エンコーディングの場合,0x5c を含む文字はだめです。
W32TeX [2018/03/26] 以降の platex は UTF-8 がデフォルトですが
W32TeX [2018/03/25] 以前の platex は Shift_JIS がデフォルトなので,texcommand="platex";
などとすることはできません。
platex --kanji=utf8 ... と同じ役割をするコマンド
platex-utf8.exe を使って以下のように設定し,Asymptote で日本語を使うには
UTF-8 を使ってください:
 
 texcommand="platex-utf8";
 texdvicommand="platex-utf8";

おそらく、 EUC でも ok でしょう。 EUC を使う場合は次のようにしておきます:
おそらく EUC でも OK でしょう。
EUC を使う場合は次のようにしておきます:

 texcommand="platex-euc";
 texdvicommand="platex-euc";

最新のものでは、texdvicommand なる変数は無くなっているかも知れません。
その場合は、単に関連する行を削除するだけで ok です。
最新のものでは,texdvicommand なる変数は無くなっているかも知れません。
その場合は,単に関連する行を削除するだけで OK です。

(本文にコメントを書いてすみません。適当に移動してください。 kakuto)
//(本文にコメントを書いてすみません。適当に移動してください。 kakuto)
//(どうもありがとうございます。Windowsでのテストをさぼっていました。すみません -- okumura)

(どうもありがとうございます。Windowsでのテストをさぼっていました。すみません -- okumura)

** 例1 [#x0dd2813]
***日本語を使った例 [#x0dd2813]

日本語を使った例。jsarticle相当の日本語フォントの設定をするために [[minijs.sty:http://oku.edu.mie-u.ac.jp/~okumura/jsclasses/minijs.sty]] を読み込んでいる。
jsarticle 相当の日本語フォントの設定をするために [[minijs.sty:https://github.com/texjporg/jsclasses/blob/master/minijs.sty]]
を読み込んでいます。

 usepackage("minijs");
 import graph;
 real dnorm(real x) { return exp(-x^2/2)/sqrt(2*pi); }
 size(12cm,8cm,IgnoreAspect);
 draw(graph(dnorm,-4,4,operator ..));
 label("標準正規分布の密度関数 $y=\frac{1}{\sqrt{2\pi}}e^{-x^2\!/2}$",(0,0.45),S);
 xaxis("$x$",BottomTop,LeftTicks); 
 yaxis("$y$",LeftRight,RightTicks); 

出力
[[dnorm-asy.pdf:http://oku.edu.mie-u.ac.jp/~okumura/texwiki/image/dnorm-asy.pdf]], 
[[dnorm-asy.png:http://oku.edu.mie-u.ac.jp/~okumura/texwiki/image/dnorm-asy.png]]

**関連リンク [#xbb02c40]
***日本語対応 (Linux/BSD/macOS/Windows共通) [#k4f596cf]
AsymptoteスクリプトをUTF-8で書いてその中でbxcjkjatypeパッケージの利用を指定すれば,config.asyを設けなくても日本語を含むEPSやPDFが生成できるようです。
例:
 texpreamble("\usepackage[whole]{bxcjkjatype}");
 for(int i=0; i<=9; i+=1){
   draw(shift(4.5W+(i-4.5)*N)*(0E--9E));
   draw(shift(4.5S+(i-4.5)*E)*(0N--9N));
 }
 string[] k={"一", "二", "三", "四", "五", "六", "七", "八", "九"};
 for(int i=1; i<=9; i+=1){
   label(format("%d", i), (i-5)*W+5N);
   label(scale(0.8)*k[i-1], 5E+(i-5)*S);
 }
 label("将棋図巧\quad 第一番", 6S);
 void put(pair z, string s, transform t){label(t*s, (z.x-5)*W+(z.y-5)*S);}
 void operator +(pair z, string s){put(z, s, rotate(0));}
 void operator -(pair z, string s){put(z, s, rotate(180));}
 5+1I+"角"; 7+1I+"金"; 7+2I+"と"; 9+2I+"金"; 8+3I+"歩"; 8+6I+"香"; 5+7I+"龍";
 8+8I+"銀"; 7+9I+"桂";
 10+6I+"▲"; 10+7I+"歩"; 10+8I+"銀";
 8+1I-"歩"; 8+2I-"銀"; 9+3I-"歩"; 6+4I-"銀"; 7+4I-"香"; 9+4I-"桂"; 6+5I-"玉";
 1+6I-"角"; 3+6I-"龍"; 9+6I-"桂"; 6+7I-"歩"; 8+7I-"と";
 unitsize(15pt);

** 関連リンク [#xbb02c40]
-[[Asymptote project on GitHub:https://github.com/vectorgraphics/asymptote]]
-[[Asymptote project on SourceForge:https://sourceforge.net/projects/asymptote/]]
-[[Asymptote に関する投稿 - Qiita:http://qiita.com/tags/asymptote]]
-[[Asymptote のつかいかた [Wayback Machine]:http://web.archive.org/web/20170722173253/http://2nd.geocities.jp/asy_zenkin/]] → ひととおりの使い方が説明された数少ない日本語リソース。TeX Live 2014 対応
-[[W32Tex や Asymptote の導入(インストール)に成功するまで経緯(1):http://blogs.yahoo.co.jp/eikei375/38640701.html]]
-[[Sukarabe&#8217;s Easy Living &raquo; Asymptote:http://njet.oops.jp/wordpress/category/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF/asymptote/]]
-[[Asymptoteでハマった…:http://forest.edu.u-toyama.ac.jp/blog/2012/12/asymptote-1.html]]
-[[Asymptote 問題集:http://d.hatena.ne.jp/denpoya/]]
-[[Asymptote - laclefwiki:http://saekiyoshiyasu.org/wiki/Asymptote]]
-[[asymptote メモ:http://www.kabipan.com/computer/asymptote/]]
-[[実験室(Asymptote):http://homepage2.nifty.com/domae/asymptote.html]]
-[[実験室(Asymptote):http://minamo.my.coocan.jp/asymptote.html]]
-[[LaTeXで使えるベクタグラフィック言語AsymptoteをWindowsで試す:http://d.hatena.ne.jp/hyuki/20090216#tex]]
-[[Asymptoteにおける\tate:http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=1077]]
-[[Asymptoteで日本語を表示させられませんでした:http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=765]]
-[[シンプット (A_Symptote)さん:https://twitter.com/A_Symptote]]
-[[Asymptoteを使って図形をきれいに描こう:https://www.juen.ac.jp/math/nakagawa/asymptoteguide.html]]
-[[Asymptoteにおける\tate:https://okumuralab.org/tex/mod/forum/discuss.php?d=1077]]
-[[Asymptoteで日本語を表示させられませんでした:https://okumuralab.org/tex/mod/forum/discuss.php?d=765]]

***License [#a68c9862]
[[GPLv3:https://github.com/vectorgraphics/asymptote/blob/master/LICENSE]], [[LGPLv3:https://github.com/vectorgraphics/asymptote/blob/master/LICENSE.LESSER]]

***ChangeLog [#qa654d5d]
-https://github.com/vectorgraphics/asymptote
--https://github.com/vectorgraphics/asymptote/commits/master