%% %% This is the documentation of scsnowman package. %% (Last Update: 2023/02/23) %% Maintained on GitHub: %% https://github.com/aminophen/scsnowman %% %% Copyright (c) 2015-2023 Hironobu Yamashita %% Email : h.y.acetaminophen[a t]gmail.com %% GitHub : https://github.com/aminophen %% Blog : http://acetaminophen.hatenablog.com/ %% Twitter : @aminophen %% \documentclass[a4paper]{article} \usepackage{doc} \usepackage[svgnames]{xcolor} \usepackage{scsnowman} \pagenumbering{enumsnowman} \GetFileInfo{scsnowman.sty} \usepackage{array} \usepackage{amsthm} \usepackage{luatexja} \usepackage{luatexja-fontspec} \def\BigSnowman#1{\fontsize{60pt}{60pt}\selectfont\symbol{"#1}} \newjfontfamily\fipam{IPAexMincho} \newjfontfamily\fhrgnm{HiraMinProN-W3} \newjfontfamily\fkozm{KozMinPr6N-Regular} \newjfontfamily\fmsmin{MS-Mincho} \newjfontfamily\fvlgo{VLGothic} \usepackage{hyperref} % documentation \newtheorem{theorem}{Theorem} % misc \def\Lpack#1{\textsf{#1}} \def\Lopt#1{\texttt{#1}} % scsnowman in title \scsnowmandefault{adjustbaseline,scale=2,hat=Green,buttons=RoyalBlue} \def\scsnowmanleft{\scsnowman[arms=Brown,muffler=Red]} \def\scsnowmanright{\scsnowman[snow=SkyBlue]} \title{\scsnowmanleft\ The \Lpack{scsnowman} package \fileversion\ \scsnowmanright} \author{Hironobu Yamashita} \date{\filedate} \begin{document} \maketitle \scsnowmandefault{} The \LaTeX\ package \Lpack{scsnowman} provides a command \verb+\scsnowman+, which can display many variants of snowmen. This package utilizes Ti\emph{k}Z for drawing snowmen. \begin{figure}[htb]\centering \scsnowmandefault{adjustbaseline} \scsnowman[scale=5,hat,snow,arms]\scsnowman[scale=5,hat=RoyalBlue,muffler=Green] \scsnowman[scale=2]\scsnowman[scale=5]\scsnowman[scale=7]\par \scsnowmandefault{scale=6,hat,muffler=Red} \scsnowman[mouthshape=smile] \scsnowman[mouthshape=frown] \scsnowman[mouthshape=tight] \scsnowman[mouthshape=tight,arms,buttons,sweat]\\[2ex] \scsnowmandefault{scale=5} \begin{tabular}{ccc} \texttt{U+2603} & \texttt{U+26C4} & \texttt{U+26C7} \\ \texttt{SNOWMAN} & \texttt{SNOWMAN WITHOUT SNOW} & \texttt{BLACK SNOWMAN} \\ \scsnowman[body=false,snow=true] & \scsnowman[body=false,snow=false] & \scsnowman[body=true,snow=true] \end{tabular} \end{figure} The package is maintained on GitHub: \begin{itemize} \item \url{https://github.com/aminophen/scsnowman} \end{itemize} \begin{figure}[htb]\centering \scsnowmandefault{adjustbaseline,scale=8,buttons=RoyalBlue} \scsnowman[hat=Green,muffler=Red,arms=Brown,buttons=Green,broom=DarkGoldenrod] \scsnowman[hat=Green,body,muffler=Red,arms=Brown,nose=Orange,snow=SkyBlue] \scsnowman[snow=SkyBlue,note=Red] \scsnowman[hat=Green,muffler=RoyalBlue,arms=Brown,buttons=Green,broom=DarkGoldenrod] \end{figure} \clearpage \tableofcontents\clearpage \section{The History of Snowman in Unicode} In October 1991, the first volume of the Unicode standard was published. Since then, there was a code point assigned to a character ``snowman''; \verb:U+2603:. \begin{quote} \verb:U+2603 SNOWMAN:\\ = snowy weather \end{quote} It seems that the shape of its reference glyph in Unicode 1.0.0 was taken from ``Ryumin'', which was developed by Morisawa (a famous font vendor in Japan). \begin{figure} %\includegraphics[width=0.3\textwidth]{} \end{figure} A few years later, the reference glyph has sometimes been changed to another; however, there had been only one ``snowman'' in Unicode until 2009. \begin{figure} %\includegraphics[width=0.3\textwidth]{} \end{figure} In October 2009, Unicode 5.2 was published. In this volume, two ``snowman'' code points were added; \verb:U+26C4: and \verb:U+26C7:. \begin{quote} \verb:U+26C4 SNOWMAN WITHOUT SNOW:\\ = light snow\\ \verb:U+26C7 BLACK SNOWMAN:\\ = heavy snow \end{quote} According to the code chart, the origin of these two characters is ARIB STD-B24 (Data Coding and Transmission Specification for Digital Broadcasting;\footnote{% \url{http://www.arib.or.jp/tyosakenkyu/kikaku_hoso/hoso_std-b024.html}; Abstract in PDF format (both \href{http://www.arib.or.jp/tyosakenkyu/kikaku_sample/sample-std-b24-1-6.3.pdf}{Japanese} and \href{http://www.arib.or.jp/english/html/overview/doc/6-STD-B24v5_2-1p3-E1.pdf}{English}) are available.}), which was established by Association of Radio Industries and Business in Japan. Since then, it can be said that the old code point \verb:U+2603: has been given an implicit meaning of ``\verb:SNOWMAN WITH SNOW:''. The reference glyphs were also changed at that time. \begin{figure} %\includegraphics[width=0.3\textwidth]{} \end{figure} \section{Variation of Snowman among Actual Fonts} Since the shapes of the reference glyphs used in the Unicode code charts are not prescriptive, the actual fonts have a wide variety of glyph designs. However, when it comes to snowmen, the variation between fonts is enormous. This variation is very interesting, however, on the other hand, problematic. Table \ref{table:actualfonts} shows the variety of ``snowman'' in actual fonts. \begin{table}[tbp] \caption{The variety of ``snowman'' in actual fonts}\label{table:actualfonts} \setlength{\extrarowheight}{50pt}% \centering \begin{tabular}{cccc} \hline & \raisebox{2ex}{\Large\texttt{U+2603}} & \raisebox{2ex}{\Large\texttt{U+26C4}} & \raisebox{2ex}{\Large\texttt{U+26C7}} \\ \hline \raisebox{4ex}{\fipam IPAex明朝} & {\fipam \BigSnowman{2603}} & & \\ \raisebox{4ex}{\fmsmin MS 明朝} & {\fmsmin \BigSnowman{2603}} & & \\ \raisebox{4ex}{\fkozm 小塚明朝 Pr6N Regular} & {\fkozm \BigSnowman{2603}} & & \\ \raisebox{4ex}{\fhrgnm ヒラギノ明朝 ProN W3} & {\fhrgnm \BigSnowman{2603}} & & \\ \raisebox{4ex}{\fvlgo VLゴシック} & {\fvlgo \BigSnowman{2603}} & {\fvlgo \BigSnowman{26C4}} & {\fvlgo \BigSnowman{26C7}} \\ \hline \end{tabular} \end{table} The snowman in ``IPA Mincho (IPA明朝)'' from Information-technology Promotion Agency is very similar to the one in ``Ryumin (リュウミン)'' from Morisawa. However, in ``MS Mincho (MS 明朝)'' from Microsoft, the snowman wears a black hat instead of white one. In ``Kozuka Mincho (小塚明朝)'' from Adobe Systems Inc., he/she wears a muffler instead of a hat. Moreover, it doesn't snow in ``Hiragino Mincho (ヒラギノ明朝)'' from SCREEN Graphic and Precision Solutions Co., Ltd. It is natural that some fonts developed before 2009 have a ``snowman without snow'' glyph in the code point \verb:U+2603:, however, it can be a problem when we have to transfer the exact information to others. \section{Introduction to \Lpack{scsnowman} Package} The \LaTeX\ package \Lpack{scsnowman} provides a command \verb+\scsnowman+, which can display many variants of snowmen. This package depends on Ti\emph{k}Z package for drawing snowman images. To use this package, load it in preamble: \begin{quote}\begin{verbatim} \usepackage{scsnowman} \end{verbatim}\end{quote} In the main document, use \verb+\scsnowman+ command to print a snowman: \scsnowman. By default, the snowman is ``plain'' style, without any decoration such as snow, a hat or a muffler. \section{Command Options} You can customize the style of a snowman using the optional argument. The syntax is \begin{quote} \verb+\scsnowman[+\emph{$\langle$key-value list$\rangle$}\verb+]+ \end{quote} \subsection{Scaling and Adjustment Options} The following \emph{key}s are available: \begin{quote} \Lopt{scale}, \Lopt{adjustbaseline} \end{quote} The key \Lopt{scale} takes a scale factor. The origin of scaling is set at the lower left corner of the bounding box. For example, \verb+\scsnowman+, \verb+\scsnowman[scale=3]+ and \verb+\scsnowman[scale=5]+ give: \begin{quote}\begin{minipage}{.9\textwidth} \scsnowman\scsnowman[scale=3]\scsnowman[scale=5]\quad with visualized bounding boxes: \fboxsep0pt\fbox{\scsnowman}\fbox{\scsnowman[scale=3]}\fbox{\scsnowman[scale=5]} \end{minipage}\end{quote} When the key \Lopt{adjustbaseline} is specified (or, \Lopt{adjustbaseline=true}), the base line of the in-line snowman will be adjusted to that of the surrounding texts. This will be helpful when a snowman appears to be ``floating in the air.''\\[1ex] \begin{minipage}{.55\textwidth}\begin{verbatim} Text, \scsnowman[scale=1]% \scsnowman[scale=4]% \scsnowman[scale=7], T.\par Text, \scsnowman[adjustbaseline,scale=1]% \scsnowman[adjustbaseline,scale=4]% \scsnowman[adjustbaseline,scale=7], T. \end{verbatim}\end{minipage} \begin{minipage}{.4\textwidth} Text, \scsnowman[scale=1]% \scsnowman[scale=4]% \scsnowman[scale=7], T.\par Text, \scsnowman[adjustbaseline,scale=1]% \scsnowman[adjustbaseline,scale=4]% \scsnowman[adjustbaseline,scale=7], T. \end{minipage} \subsection{Design Options} Following \emph{key}s take a \emph{value} which specifies color. When the \emph{value} is omitted, it reacts to the surrounding text color: \begin{quote} \Lopt{body}, \Lopt{eyes}, \Lopt{mouth}, \Lopt{nose}, \Lopt{sweat}, \Lopt{arms}, \Lopt{hat}, \Lopt{muffler}, \Lopt{buttons}, \Lopt{snow}, \Lopt{note}, \Lopt{broom} \end{quote} The following \emph{key}s require one specific \emph{value}: \begin{quote} \Lopt{shape}, \Lopt{mouthshape} \end{quote} The key \Lopt{shape} specifies the outline shape of the snowman body. Currently, only \Lopt{shape=normal} is officially available, but you can define and use other shapes using \verb+\usescsnowmanlibrary+ command (described later, section \ref{usescsnowmanlibrary}). The key \Lopt{mouthshape} takes one of the followings: \Lopt{smile}, \Lopt{tight} or \Lopt{frown}. Here are some examples:\\[1ex] \begin{minipage}{.7\textwidth}\begin{verbatim} \scsnowman[scale=2,body,hat=red,muffler=blue] \scsnowman[scale=3,hat,snow,arms,buttons,note] \scsnowman[scale=2,muffler=red,arms,broom=brown] \scsnowman[scale=2,mouthshape=frown,hat=green] \end{verbatim}\end{minipage} \begin{minipage}{.25\textwidth} \scsnowman[scale=2,body,hat=red,muffler=blue] \scsnowman[scale=3,hat,snow,arms,buttons,note] \scsnowman[scale=2,muffler=red,arms,broom=brown] \scsnowman[scale=2,mouthshape=frown,hat=green] \end{minipage}\\[1ex] \begin{minipage}{.7\textwidth}\begin{verbatim} {\color{blue} \scsnowman[scale=2,body,hat=red,muffler=blue] \scsnowman[scale=2,hat,snow,arms,buttons,note] \scsnowman[scale=3,muffler=red,arms,broom=brown] \scsnowman[scale=2,mouthshape=frown,hat=green]} \end{verbatim}\end{minipage} \begin{minipage}{.25\textwidth} {\color{blue} \scsnowman[scale=2,body,hat=red,muffler=blue] \scsnowman[scale=2,hat,snow,arms,buttons,note] \scsnowman[scale=3,muffler=red,arms,broom=brown] \scsnowman[scale=2,mouthshape=frown,hat=green]} \end{minipage} \section{Changing the Default} The package default is the ``plain'' style snowman. This default can be changed by using \verb+\scsnowmandefault+ command. The syntax is \begin{quote} \verb+\scsnowmandefault{+\emph{$\langle$key-value list$\rangle$}\verb+}+ \end{quote} The available \emph{key}s are the same as those in \verb+\scsnowman+. Here are some examples:\\[1ex] \begin{minipage}{.6\textwidth}\begin{verbatim} \scsnowmandefault{scale=5,hat=red} \scsnowman \scsnowman[body,muffler=blue,arms] \scsnowman[hat=green,snow,nose=orange] \end{verbatim}\end{minipage} \begin{minipage}{.35\textwidth} \scsnowmandefault{scale=5,hat=red} \scsnowman \scsnowman[body,muffler=blue,arms] \scsnowman[hat=green,snow,nose=orange] \end{minipage} \section{Adding User-defined Snowman Shapes}\label{usescsnowmanlibrary} Any users can define and use custom snowman shape definitions. Here is a description of adding a shape named \Lopt{myfavorite}. \begin{enumerate} \item Prepare a snowman definition file \texttt{scsnowman-myfavorite.def} and put it into \verb+$TEXMF+ tree (e.g. \verb+texmf-local/tex/latex/scsnowman/+). For the format of snowman definition files, please refer to \texttt{scsnowman-normal.def}. \item Use \verb+\usescsnowmanlibrary+ command (don't forget \emph{sc}!) to load it. \begin{verbatim} \usepackage{scsnowman} \usescsnowmanlibrary{myfavorite} \end{verbatim} \item You can use the shape by \verb+\scsnowman[shape=myfavorite]+ command. \end{enumerate} If you have created a fancy snowman, please contact me, so that I can incorporate it into the official release! \section{Funny Usages} \subsection{Changing Item Labels and QED Symbols} For those who want more snowmen in the documents, currently \Lpack{scsnowman} provides the following additional commands: \begin{quote} \verb+\makeitemsnowman+:\\ \makeitemsnowman Change item labels in \Lopt{itemize} environment to snowmen {\labelitemi\labelitemii\labelitemiii\labelitemiv}. \makeitemother The command \verb+\makeitemother+ restores the default, usually {\labelitemi\labelitemii\labelitemiii\labelitemiv}.\par \verb+\makeqedsnowman+:\\ \makeqedsnowman Change the QED symbol in \Lopt{proof} environment to a snowman {\qedsymbol}. The package \Lpack{amsthm} is required. \makeqedother The command \verb+\makeqedother+ restores the default, usually {\qedsymbol}. \end{quote} These commands can be used wherever you want, and are effective within the current group. Here are some examples:\\[1ex] \begin{minipage}{.5\textwidth}\begin{verbatim} \begin{itemize} \makeitemsnowman \item Foo X. \begin{itemize} \item Bar A. \begin{itemize} \item Baz P. \item Baz Q. \end{itemize} \item Bar B. \item Bar C. \end{itemize} \end{itemize} \end{verbatim}\end{minipage} \begin{minipage}{.45\textwidth} \begin{itemize} \makeitemsnowman \item Foo X. \begin{itemize} \item Bar A. \begin{itemize} \item Baz P. \item Baz Q. \end{itemize} \item Bar B. \item Bar C. \end{itemize} \end{itemize} \end{minipage}\\[1ex] \begin{minipage}{.55\textwidth}\begin{verbatim} \makeqedsnowman \begin{theorem} Given two line segments whose lengths are $a$ and $b$ respectively, there is a real number $r$ such that $b=ra$. \end{theorem} \begin{proof} To prove it by contradiction try and asuume that the statement is false, proceed from there and at some point you will arrive to a contradiction. \end{proof} \end{verbatim}\end{minipage} \begin{minipage}{.45\textwidth} \makeqedsnowman \begin{theorem} Given two line segments whose lengths are $a$ and $b$ respectively, there is a real number $r$ such that $b=ra$. \end{theorem} \begin{proof} To prove it by contradiction try and asuume that the statement is false, proceed from there and at some point you will arrive to a contradiction. \end{proof} \end{minipage}\medskip The names of these commands are, of course, named after the \LaTeX\ \verb+\makeatletter+ and \verb+\makeatother+;-) \subsection{Drawing ``\emph{Kagami-mochi}''} Using \Lpack{scsnowman} package, you can also draw ``\emph{kagami-mochi}'' (mirror rice cake). It is a traditional Japanese New Year decoration, which usually consists of two round ``\emph{mochi}'' (rice cakes), the smaller placed atop the larger, and a ``\emph{daidai}'' (a Japanese bitter orange) with an attached leaf on top. Following \emph{key}s are implemented for this usage:\footnote{Strictly speaking, the orange on top of rice cakes should be ``\emph{daidai}''; however, a ``\emph{mikan}'' is often substituted for the original ``\emph{daidai}''.} \begin{quote} \Lopt{mikan}, \Lopt{leaf} \end{quote} The \emph{key} \Lopt{leaf} is effective only when \Lopt{mikan} is specified. Here is an example:\\[1ex] \begin{minipage}{.85\textwidth}\begin{verbatim} \scsnowmandefault{scale=5.5} \scsnowman[eyes=false,mouth=false,mikan=orange,leaf=green] \end{verbatim}\end{minipage} \begin{minipage}{.1\textwidth} \scsnowmandefault{scale=5.5} \scsnowman[eyes=false,mouth=false,mikan=orange,leaf=green] \end{minipage} \subsection{Replacing All ``8'' with Snowmen} You can replace all ``8'' inside an arabic number expression with snowmen \scsnowman\ by using \verb+\scsnowmannumeral+. Here is an example:\\[1ex] \begin{minipage}{.85\textwidth}\begin{verbatim} \scsnowmandefault{adjustbaseline}\scsnowmannumeral{18882} \scsnowmannumeral[muffler=blue,scale=1.5]{4283859} \end{verbatim}\end{minipage} \begin{minipage}{.1\textwidth} \scsnowmandefault{adjustbaseline}\scsnowmannumeral{18882} \scsnowmannumeral[muffler=blue,scale=1.5]{4283859} \end{minipage}\medskip You can also replace all ``8'' inside the page numbering with snowmen \scsnowman\ by adding \verb+\pagenumbering{enumsnowman}+. This documentation itself is an example! \clearpage \section*{Version History} This is the summary of changes. For more detail, see GitHub repository. \begin{table}[h] \centering \begin{tabular}{lll} Version 0.1 & 2015-12-13 & First public version on GitHub \\ Version 0.8 & 2016-08-08 & Second public version on GitHub: \\ & & new variants \Lopt{buttons}, \Lopt{mouthshape}, \Lopt{sweat} are added \\ Version 1.0 & 2016-12-22 & First CTAN release \\ Version 1.1 & 2017-01-22 & Add a new key \Lopt{adjustbaseline} \\ & & Update documentation \\ Version 1.2 & 2017-08-08 & Default color reacts to surrounding text color \\ & & Support vertical writing on (u)p\TeX\ and Lua\TeX-ja \\ & & Add a new key \Lopt{shape} \\ & & Add a new command \verb+\usescsnowmanlibrary+ \\ Version 1.2a & 2017-11-25 & Fix a bug in scaling with \Lopt{adjustbaseline} \\ Version 1.2b & 2018-01-05 & Add new keys \Lopt{mikan}, \Lopt{leaf} for drawing `kagami-mochi' \\ & & Stopped loading \Lpack{amsthm} by default \\ Version 1.2c & 2018-01-15 & Add a new key \Lopt{broom} \\ Version 1.2d & 2018-06-07 & Add new keys \Lopt{nose}, \Lopt{note} \\ & & Add a new command \verb+\scsnowmannumeral+ \\ Version 1.2e & 2019-08-12 & Fix a bug of possible infinite loop \\ Version 1.3a & 2020-10-10 & Update for new \LaTeX \\ Version 1.3b & 2023-02-14 & Fix a bug of up\TeX\ engine detection \\ Version 1.3c & 2023-02-23 & Another bug fix of engine detection \\ \end{tabular} \end{table} \begin{thebibliography}{9} \bibitem{NAOI1} \href{http://d.hatena.ne.jp/NAOI/20080623/1214211959}{雪だるまの親子関係} \ --- Mac OS Xの文字コード問題に関するメモ \bibitem{NAOI2} \href{http://d.hatena.ne.jp/NAOI/20110707/1310031226}{ヒラギノの雪だるまは、なぜ寂しそうなのか} \ --- Mac OS Xの文字コード問題に関するメモ \bibitem{DORA1} \href{http://doratex.hatenablog.jp/entry/20140327/1395878814}{いろいろなゆきだるま} \ --- TeX Alchemist Online \bibitem{ACE1} \href{http://acetaminophen.hatenablog.com/entry/2014/09/05/090313}{「\TeX{}でゆきだるま」をもっとたくさん} \ --- Acetaminophen's diary \bibitem{ZR1} \href{http://d.hatena.ne.jp/zrbabbler/20140911/1410439004}{Unicodeの例の雪だるまは多分アレ} \ --- マクロツイーター \bibitem{ACE2} \href{http://acetaminophen.hatenablog.com/entry/2015/12/13/080226}{\TeX{}でゆきだるまを“もっともっと”たくさん} \ --- Acetaminophen's diary \bibitem{ACE3} \href{http://acetaminophen.hatenablog.com/entry/2016/08/08/080800}{夏といえば、やっぱり「ゆきだるま」!} \ --- Acetaminophen's diary \bibitem{SX229957} \href{http://tex.stackexchange.com/questions/229957/}{How do I redefine the QED symbol to be a Unicode character?} \ --- \TeX\ -- \LaTeX\ Stack Exchange \end{thebibliography} \end{document}