猛暑! 台風! ゆきだるま☃︎!
いよいよ今日は、皆さんお待ちかねの、#ナントカの日 !#ナントカ pic.twitter.com/BJMxT3oWRh
— 某ZR🤯 (@zr_tex8r) 2019年8月7日
コルーチンのイロイロな定義
某ZR氏の某ツイッタァーをフォローしている方ならご存知だと思いますが、去る5月30日に、某出版社の某『n月刊ラムダノート』の創刊を記念したパーティーが催されました。
- n月刊ラムダノート創刊パーティー@TD社。コルーチンもあるよ(Togetter)
このパーティーにおいてメインのテーマとなったのが、
コルーチンの定義がイロイロありすぎてアレ
ということでした。この話題についての詳細は以下の記事に譲ることにしますが、要するにコルーチンの定義が本質的に問題なわけです。
- 新雑誌「n月刊ラムダノート」の『「コルーチン」とは何だったのか?』の草稿を公開します (まめめも)
- 『「コルーチン」とは何だったのか?』の裏話的な何か、とPythonコルーチン (bonotakeの日記)
コルーチンの素敵な定義
この問題に対して、そのパーティとは全然サッパリ関係のない某ZR氏が、画期的な解決法を提案しています。
やっぱり、従来の「コルーチン」の用法は混乱しか生まないので全部放棄して、これからの時代はもっと本質的(ry#ナントカ https://t.co/sFRZCv4m3M
— 某ZR🤯 (@zr_tex8r) 2019年5月30日
スバラシイ☃︎。
scsnowmanで対称コルーチン(※最新の定義)したい話
せっかくコルーチンの定義が素敵☃︎になったのですから、LaTeXのscsnowmanパッケージを使ってコルーチン(※最新の定義)に関する技術文書を作りたくなりますね。ところが、ここで大きな問題があります。それは、
対称コルーチン(※最新の定義)は対称でないといけない
ということです。
一方で、scsnowmanで出力されるゆきだるま☃︎は、どれも素敵ですが非対称です。
TeX & LaTeX Advent Calendar 23 日目:
— aminophen (@aminophen) 2016年12月23日
「TeX Live で使えるゆきだるま☃のまとめ」 https://t.co/w4mtNEb5uY pic.twitter.com/KF9q8EXl15
かの画期的なscsnowmanパッケージも対称コルーチン(※最新の定義)はサポートできないのでしょうか。いや、決してそんなことはありません。実は、scsnowmanには「ゆきだるま形状をユーザが独自に定義する」ための機能が用意されています。
Any users can define and use custom snowman shape definitions. Here is a description of adding a shape named myfavorite
.
つまり、対称なゆきだるま形状を定義したファイルscsnowman-zrsymmetric.def
を用意すれば、次のようにして対称なゆきだるまが出力できるはずです。
% pdfLaTeX document \documentclass[a4paper]{article} \usepackage{scsnowman}% ゆきだるま! \usescsnowmanlibrary{zrsymmetric}% 対称! \begin{document} % 'shape'キーで形状を指定する \scsnowman[shape=zrsymmetric,‹他オプション›...] \end{document}
scsnowmanで対称コルーチン(※最新の定義)する話
というわけで、作ってみました。
早速、対称コルーチン(※最新の定義)をつくってみましょう。
% upLaTeX文書 \documentclass[uplatex,dvipdfmx]{jsarticle} \usepackage[a6paper,scale=0.75]{geometry} \usepackage{xcolor,scsnowman} \usescsnowmanlibrary{zrsymmetric}% 対称ゆきだるま \begin{document} 非対称コルーチン \scsnowman[hat=green!35!black,arms=green!20!black, buttons=green!35!black,snow,muffler=green!50!black, adjustbaseline,scale=2]% フツー(非対称) も、対称コルーチン \scsnowman[hat=green!35!black,arms=green!20!black, buttons=green!35!black,snow,muffler=green!50!black, adjustbaseline,scale=2,shape=zrsymmetric]% 対称! もどちらも素敵なので、 両者は等価です。 \end{document}
バッチリですね!
イロイロな対称ゆきだるま
形状オプションshape=zrsymmetric
を付けた場合でも、\scsnowman
の他のオプション(hat
、muffler
、などなど)は自由に設定できます。
% pdfLaTeX document \documentclass{article} \usepackage[a6paper,scale=0.75]{geometry} \usepackage[svgnames]{xcolor} \usepackage{scsnowman} \usescsnowmanlibrary{zrsymmetric}% 対称! %% \CompareSnowmen{<オプション>...} % 非対称と対称のゆきだるまを並べて出力する. \newcommand{\CompareSnowmen}[1]{\par \scsnowman[scale=4,#1]% \scsnowman[scale=4,shape=zrsymmetric,#1]% \par\smallskip} \begin{document} % シンプル \CompareSnowmen{hat,arms,snow,muffler} % ミカン付き \CompareSnowmen{mouthshape=tight, mikan=Orange,leaf=Olive,sweat=SkyBlue} % 箒付き \CompareSnowmen{hat=Green,arms=Brown,muffler=Red, buttons=Blue,snow=SkyBlue,broom=DarkGoldenrod} \end{document}
scsnowmanのゆきだるまの多様性がもっともっと増えたわけですね。スバラシイ☃︎。
まとめ
というわけで、非対称コルーチン(※最新の定義)も、対称コルーチン(※最新の定義)も、それ以外のゆきだるま☃︎も、すべて素敵!