[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
39.1 Introduction to alt-display | ||
39.2 Functions and Variables for alt-display |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
alt-displayパッケージは、 Maximaが出力を表示する方法を変える手段を提供します。 2002年に *alt-display1d*と *alt-display2d* Lispフックが Maximaに導入されましたが、 このパッケージの導入まで Maxima REPLから容易にアクセスできませんでした。
パッケージは、代わりの表示関数を定義する汎用の関数と表示関数を設定する別の関数を提供します。 パッケージは、 TeX, Texinfo, XML, Texinfo内の3つの出力フォーマットすべてで出力を生成するカスタマイズされた表示関数も提供します。
以下はサンプルのやり取りです:
(%i1) load("alt-display.mac")$ (%i2) set_alt_display(2,tex_display)$ (%i3) x/(x^2+y^2) = 1; \mbox{\tt\red({\it \%o_3}) \black}$${{x}\over{y^2+x^2}}=1$$ (%i4) set_alt_display(2,mathml_display)$ (%i5) x/(x^2+y^2) = 1; <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>mlabel</mi> <mfenced separators=""><msub><mi>%o</mi> <mn>5</mn></msub> <mo>,</mo><mfrac><mrow><mi>x</mi> </mrow> <mrow><msup><mrow> <mi>y</mi> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup><mrow> <mi>x</mi> </mrow> <mn>2</mn> </msup> </mrow></mfrac> <mo>=</mo> <mn>1</mn> </mfenced> </math> (%i6) set_alt_display(2,multi_display_for_texinfo)$ (%i7) x/(x^2+y^2) = 1; @iftex @tex \mbox{\tt\red({\it \%o_7}) \black}$${{x}\over{y^2+x^2}}=1$$ @end tex @end iftex @ifhtml @html <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>mlabel</mi> <mfenced separators=""><msub><mi>%o</mi> <mn>7</mn></msub> <mo>,</mo><mfrac><mrow><mi>x</mi> </mrow> <mrow><msup><mrow> <mi>y</mi> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup><mrow> <mi>x</mi> </mrow> <mn>2</mn> </msup> </mrow></mfrac> <mo>=</mo> <mn>1</mn> </mfenced> </math> @end html @end ifhtml @ifinfo @example (%o7) x/(y^2+x^2) = 1 @end example @end ifinfo |
もし代わりの表示関数がエラーを起こしたら、エラーが捕捉され、表示関数はデフォルトの表示にリセットされます。
以下の例では、出力を表示するように関数 error
を設定します。
これはエラーをスローし、2d表示をデフォルトにリセットすることでエラーをハンドリングします。
(%i8) set_alt_display(2,?error)$ (%i9) x; Error in *alt-display2d*. Messge: Condition designator ((MLABEL) $%O9 $X) is not of type (OR SYMBOL STRING FUNCTION). *alt-display2d* reset to nil. -- an error. To debug this try: debugmode(true); (%i10) x; (%o10) x |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
この関数は define
に似ています:
引数を評価し、関数定義に展開します。
functionは、入力(input)が1つの関数です。
Lisp変数名に簡単にアクセスできるように便宜上、代入は評価の後に exprに適用されます。
プロンプトそれぞれでタイムスタンプを設定する:
(%i1) load("alt-display.mac")$ (%i2) display2d:false$ (%i3) define_alt_display(time_stamp(x), block([alt_display1d:false,alt_display2d:false], prompt_prefix:printf(false,"~a~%",timedate()), displa(x))); (%o3) time_stamp(x):=block([simp:false], block([?\*alt\-display1d\*:false,?\*alt\-display2d\*:false], ?\*prompt\-prefix\*:printf(false,"~a~%",timedate()), ?displa(x))) (%i4) set_alt_display(1,time_stamp); (%o4) done 2014-01-07 13:41:50-05:00 (%i5) |
入力行 %i3
は、 define_alt_display
を使って time_stamp
を定義しています。
出力行 %o3
は、
displa
が ?displa
(表示関数)に置き換えられるのと同様に
Maxima変数名 alt_display1d
, alt_display2d
, prompt_prefix
がそれらのLisp解釈に置き換わっていることを示しています。
表示変数 alt_display1d
, alt_display2d
は、
displa
内で無限再帰を抑制するために
time_stamp
の本体の中で両方 false
に束縛されます。
Categories: Package alt-display
これはデフォルトの1-d 表示関数のエーリアスです。 代わりの1-dか2-d表示間数として使えます。
(%i1) load("alt-display.mac")$ (%i2) set_alt_display(2,info_display); (%o2) done (%i3) x/y; (%o3) x/y |
Categories: Package alt-display
MathML出力を生成します。
(%i1) load("alt-display.mac")$ (%i2) set_alt_display(2,mathml_display); <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>mlabel</mi> <mfenced separators=""><msub><mi>%o</mi> <mn>2</mn></msub> <mo>,</mo><mi>done</mi> </mfenced> </math> |
Categories: Package alt-display
TeX出力を生成します。
(%i2) set_alt_display(2,tex_display); \mbox{\tt\red({\it \%o_2}) \black}$$\mathbf{done}$$ (%i3) x/(x^2+y^2); \mbox{\tt\red({\it \%o_3}) \black}$${{x}\over{y^2+x^2}}$$ |
Categories: Package alt-display
3つの表示関数すべてを使ってTexinfo出力を生成します。
(%i2) set_alt_display(2,multi_display_for_texinfo)$ (%i3) x/(x^2+y^2); @iftex @tex \mbox{\tt\red({\it \%o_3}) \black}$${{x}\over{y^2+x^2}}$$ @end tex @end iftex @ifhtml @html <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>mlabel</mi> <mfenced separators=""><msub><mi>%o</mi> <mn>3</mn></msub> <mo>,</mo><mfrac><mrow><mi>x</mi> </mrow> <mrow><msup><mrow> <mi>y</mi> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup><mrow> <mi>x</mi> </mrow> <mn>2</mn> </msup> </mrow></mfrac> </mfenced> </math> @end html @end ifhtml @ifinfo @example (%o3) x/(y^2+x^2) @end example @end ifinfo |
Categories: Package alt-display
プロンプトプレフィックスとサフィックスを空の文字列にリセットし、 1-dと2-d表示関数を両方デフォルトに設定します。
Categories: Package alt-display
入力 numは設定される表示です: 1もしくは2です。
2番目の入力 display-functionは使われる表示関数です。
表示関数は Maxima関数か lambda
式のいずれかです。
以下は表示関数が lambda
式の例です;
ただ TeXとして結果を表示します。
(%i1) load("alt-display.mac")$ (%i2) set_alt_display(2, lambda([form], tex(?caddr(form))))$ (%i3) integrate(exp(-t^2),t,0,inf); $${{\sqrt{\pi}}\over{2}}$$ |
ユーザー定義の表示関数は、出力を 印刷するように気をつけなければいけません。 文字列を返す表示関数は何も表示しないように見え、エラーも起こしません。
Categories: Package alt-display
プロンプトプレフィックスかサフィックスを exprに設定します。
入力 fixは、 prefix
, suffix
, general
,
prolog
, epilog
のいずれか1つに評価されなければいけません。
exprは文字列もしくは false
に評価されなければいけません;
もし false
なら、 fixはデフォルト値にリセットされます。
(%i1) load("alt-display.mac")$ (%i2) set_prompt('prefix,printf(false,"It is now: ~a~%",timedate()))$ It is now: 2014-01-07 15:23:23-05:00 (%i3) |
以下の例は、 prolog
を除くそれぞれのオプションの効果を示します。
epilog
プロンプトは Maximaが閉めるように印刷されることに注意してください。
入力行が $
で終了しない限り、general
が入力の終わりと出力の間に印刷されます。
以下はプロンプト文字列が置かれる場所を示す例です。
(%i1) load("alt-display.mac")$ (%i2) set_prompt(prefix,"<<prefix>> ",suffix,"<<suffix>> ",general, printf(false,"<<general>>~%"),epilog,printf(false,"<<epilog>>~%")); (%o2) done <<prefix>> (%i3) <<suffix>> x/y; <<general>> x (%o3) - y <<prefix>> (%i4) <<suffix>> quit(); <<general>> <<epilog>> |
以下は、 Maximaが、端末か、Emacs(8)のような端末エミュレータ内で走っている時、 入力と出力を群生化させる方法を示す例です。
それぞれのプロンプト文字列は ASCIIエスケープ文字 (27) で始まり、開カギ括弧 (91)が続きます; それぞれの文字列は小文字のm (109) で終わります。 ウェブページ http://misc.flogisoft.com/bash/tip_colors_and_formatting と http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html は 端末の色を設定するために制御文字列を使う方法に関して情報を提供します。
Categories: Package alt-display
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.