マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

scsnowmanでつくる対称コルーチン(※最新の定義)

猛暑! 台風! ゆきだるま☃︎

コルーチンのイロイロな定義

某ZR氏の某ツイッタァーをフォローしている方ならご存知だと思いますが、去る5月30日に、某出版社の某『n月刊ラムダノート』の創刊を記念したパーティーが催されました。

このパーティーにおいてメインのテーマとなったのが、

コルーチンの定義がイロイロありすぎてアレ

ということでした。この話題についての詳細は以下の記事に譲ることにしますが、要するにコルーチンの定義が本質的に問題なわけです。

コルーチンの素敵な定義

この問題に対して、そのパーティとは全然サッパリ関係のない某ZR氏が、画期的な解決法を提案しています。

スバラシイ☃︎

scsnowmanで対称コルーチン(※最新の定義)したい話

せっかくコルーチンの定義が素敵☃︎になったのですから、LaTeXのscsnowmanパッケージを使ってコルーチン(※最新の定義)に関する技術文書を作りたくなりますね。ところが、ここで大きな問題があります。それは、

対称コルーチン(※最新の定義)は対称でないといけない

ということです。

f:id:zrbabbler:20190808163349p:plain
対称コルーチン(※最新の定義)

一方で、scsnowmanで出力されるゆきだるま☃︎は、どれも素敵ですが非対称です。

かの画期的なscsnowmanパッケージも対称コルーチン(※最新の定義)はサポートできないのでしょうか。いや、決してそんなことはありません。実は、scsnowmanには「ゆきだるま形状をユーザが独自に定義する」ための機能が用意されています。

Any users can define and use custom snowman shape definitions. Here is a description of adding a shape named myfavorite.
  1. Prepare a snowman definition file scsnowman-myfavorite.def and put it into $TEXMF tree (e.g. texmf-local/tex/latex/scsnowman/). (後略)
  2. (scsnowman マニュアル; §6 “Adding User-defined Snowman Shapes”)

つまり、対称なゆきだるま形状を定義したファイル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}

f:id:zrbabbler:20190808180932p:plain
コルーチン(※最新の定義)に関する技術文書

バッチリですね!

イロイロな対称ゆきだるま

形状オプションshape=zrsymmetricを付けた場合でも、\scsnowmanの他のオプション(hatmuffler、などなど)は自由に設定できます。

% 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}

f:id:zrbabbler:20190808181012p:plain
イロイロな対称ゆきだるま(非対称もあるよ)

scsnowmanのゆきだるまの多様性がもっともっと増えたわけですね。スバラシイ☃︎

まとめ

というわけで、非対称コルーチン(※最新の定義)も、対称コルーチン(※最新の定義)も、それ以外のゆきだるま☃︎も、すべて素敵!