LoginSignup
2
0

More than 3 years have passed since last update.

SATySFiでブラケット記法を表示するコマンドを作った

Posted at

はじめに

静的型付けによる一貫した構造的記述が可能な組版処理システムSATySFi。関数型プログラミングの知識が必要で少しハードルは高いですが、慣れると確かにTeXより使いやすいです。エラーの場所もわかりやすいし、コマンドのカスタマイズも簡単。

今回は、物理(工)学者、量子コンピュータエンジニアが親の顔よりもよく見るブラケット記法(${|\psi\rangle},\langle \phi|,\langle \phi|A|\psi\rangle$みたいなやつ) をSATySFiで表示するコマンドを紹介します。

動機

方法

コマンド定義

SATySFi文書のローカルのクラスファイルlocal.satyh(その文書でだけ共有されるクラスファイルはたいていこの名前)に以下を追記し、適用したいSATySFi文書にimportしてください。

local.satyh
@require stdjareport
...
let-math \bra =
  math-paren (Math.angle-left 0.5pt) Math.abs-right


let-math \ket =
  math-paren Math.abs-left (Math.angle-right 0.5pt)


let-math \braket lst =
  math-paren-with-middle
    (Math.angle-left 0.5pt) (Math.angle-right 0.5pt)
    (Math.abs-right) lst

let-math数式コマンドの定義宣言で、ここでは\bra\ket\braketコマンドを定義しています。
ブラケット記法内の|は本来Math.bar-middleを使う方が意図がわかりやすいんでしょうが、表示してみたところ字間が広く空いてしまったのでMath.abs-rightを使いました(本当は記号の流用は避けたい)。
ここで使った関数はmath.satyhで定義されているので参考にしていただければと思います。

使い方

例として以下のようにコマンドを使ってみました。

SATySFiファイル

braket-test.satyh
@import: local
@require: itemize

document(|
        title = {ブラケット記法のテスト};
        author = {Massn};
|) '<
         +listing{
         * ブラ:${\bra{\phi}}
         * ケット:${\ket{\psi}}
         * ブラケット:
                 **${\braket![${\psi};${\phi}]}
                 **${\braket![${\psi};${A};${\phi}]}
                 **${\braket![${\psi};${A};${B};${\phi}]}
         }
>

表示結果

$ satysfi braket-test.satyh

braket-test.pdfを生成しました。タイトル以外の主要部分は以下のように表示されます。
braket.png

$\langle\psi|A|B|\phi\rangle$という書き方に意味があるかわかりませんが、まあこういうのも書けますよということで入れておきました。

参考文献

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0