Skip to content

Instantly share code, notes, and snippets.

@puripuri2100
Created February 9, 2019 08:30
Show Gist options
  • Save puripuri2100/6c6d7441305aea7c4c4b0f058a4083f1 to your computer and use it in GitHub Desktop.
Save puripuri2100/6c6d7441305aea7c4c4b0f058a4083f1 to your computer and use it in GitHub Desktop.
SATySFiでの key-value のような引数についての構想

動作

LaTeXのkey-value方式のオプション引数をイメージ

LaTeXでの例:

\scsnowman
\scsnowmanscsnowman[adjustbaseline,scale=1]

\includegraphics[width=100mm]{hoge.jpg}
  • 何も指定しないと、デフォルト値が適用
  • コマンドごとに値はリセット(他の場所で適用した値は引き継がれない)
  • 順不同で複数個のキーを設定可能
@nekketsuuu
Copy link

コメント遅くなってすいません。

方法1

ちょうど今日レコードの with 構文が入ったので、これを使う方法があります。

gfngfn/SATySFi#111

レコードのオプショナルなフィールドが導入されれば、もっと軽い構文で書けるようになるはずです。

https://twitter.com/bd_gfngfn/status/1058655522415509504

方法2

元々の実装のように (key, value) pair をリストとして渡すのであれば、型コンストラクタを公開するのが簡便そうです。名前空間を汚さないためにモジュールで囲って、ユーザーにはモジュールの local open をしてもらって使うのが良さそうに思います。

gfngfn/SATySFi#80

この際 mutable を使う必要はありません。デフォルトの値たちを初期状態として持っておいて、fold しながら更新していけば良いです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment