% +++ % latex = "uplatex" % extra_clean_files = [ % "%B.dvi", "%B.synctex.gz", "%B.hd", "%B.glo" % ] % +++ \documentclass[uplatex,dvipdfmx]{wtpl3doc} % packages \usepackage[verb]{bxghost} \usepackage{bxjaholiday} \usepackage{caption} % logos \usepackage{bxtexlogo} \bxtexlogoimport{*} % syntax \newenvironment{code}{\quote\small}{\endquote} % cross-refs \usepackage{wtref} \newref{tab,sec} % macros \newcommand{\PkgName}{\pkg{bxjaholiday}} \newcommand{\Ie}{i.\,e.} \newcommand{\Eg}{e.\,g.} \ExplSyntaxOn \cs_set_eq:NN \_ \c_underscore_str \cs_new:Npn \__bxjh_doc_holiday_line:nn #1#2 { % first column: holiday \tl_use:c { g_bxjh_#2_tl } & % second column: variable \cs { g_bxjh_#2_tl } \\ } \cs_new:Npn \__bxjh_doc_week_of_day_line:nn #1#2 { % first column: week of day \tl_use:c { g_bxjh_#2_tl } & % second column: int variable \cs { c_bxjh_ \tl_lower_case:n{ #1 } _int } & % third column: int value \int_use:c { c_bxjh_ \tl_lower_case:n{ #1 } _int } & % fourth column: tl variable \cs { g_bxjh_#2_tl } & % fifth column: tl value \tl_use:c { g_bxjh_#2_tl } \\ } \cs_new_eq:NN \HolidayLine \__bxjh_doc_holiday_line:nn \cs_new_eq:NN \WeekofdayLine \__bxjh_doc_week_of_day_line:nn \ExplSyntaxOff % metadata \GetFileInfo{bxjaholiday.sty} \title{{\PkgName}パッケージ} \author{朝倉卓人 (wtsnjp)} \date{\fileversion \quad [\filedate]} \begin{document} \maketitle \begin{abstract} このパッケージは日付から日本の祝日名を得るためのコマンドと,その副産物である 日付から曜日を取得するコマンドを提供する.expl3向けには,これらのコマンドと 同等の機能を有する関数と,追加の低級関数も用意されている. \end{abstract} %\tableofcontents \begin{documentation} %\section{Introduction} \section{動作要件} BXプレフィックス\footnote{BXシリーズは主として八登祟之 (a.k.a.~ZR) 氏によって 開発されている\LaTeX パッケージ群である.``BX'' は ``\underline{b}abel e\underline{x}tensions'' を意味し,BXシリーズに含まれるパッケージは通常,日本語 に特化したもの(\pTeX 系列)に限らず多様な\TeX 処理系をサポートしている.}の示す 通り,本パッケージは様々な\TeX 処理系のサポートを意図しており,expl3がサポート するすべての\TeX 処理系をサポートしている(つまり\eTeX 拡張は必要である). 具体的には以下のシステムがサポートされている: % \begin{itemize} \item \TeX フォーマット:\LaTeXe \item \TeX 処理系:{\pdfTeX}, {\XeTeX}, {\LuaTeX},\footnote{\pTeX 系列以外の 処理系で和文文字を表示するには,別途フォントやその他の設定を行う必要がある.} {\pTeX}, {\upTeX} \end{itemize} \section{パッケージ読み込み} 本パッケージの読み込みは\LaTeXe の標準的な方法で行う.オプションは存在しない. % \begin{code} |\usepackage{bxjaholiday}| \end{code} \section{{\LaTeXe}インターフェース} \begin{function}[EXP]{\jaholidayname} \begin{syntax} |\jaholidayname|\marg{year}\marg{month}\marg{day} \end{syntax} % 与えられた日付が日本の祝日に該当する場合,その祝日の名前に展開される.日付が 祝日でない場合は展開後には何も残らない(空のトークンに展開される). 表\tabref{holidays}に展開結果となり得る祝日名の一覧を示す. 引数の\meta{year}, \meta{month}, \meta{day}には明示的な数値またはカウンタ (例えば|\year|, |\month|, |\day|)を与えることができる.正確には,任意の \meta{integer expression}が許される. \end{function} \begin{function}[EXP]{\jadayofweek} \begin{syntax} |\jadayofweek|\marg{year}\marg{month}\marg{day} \end{syntax} % 日付を曜日名(月・火・水・木・金・土・日のいずれか)に変換する. 引数の仕様は|\jaholidayname|と同一である. \end{function} \begin{function}[EXP]{\IfJaHolidayTF,\IfJaHolidayT,\IfJaHolidayF} \begin{syntax} |\IfJaHolidayTF|\marg{year}\marg{month}\marg{day}\marg{true code}\marg{false code} |\IfJaHolidayT|\marg{year}\marg{month}\marg{day}\marg{true code} |\IfJaHolidayF|\marg{year}\marg{month}\marg{day}\marg{false code} \end{syntax} % 祝日か否かの判定を行う.なお,この条件分岐では振替休日も祝日として扱われる. \end{function} \section{expl3インターフェース} 本パッケージが提供するすべてのインターフェースは\texttt{bxjh}モジュールに属する. \subsection{関数} \begin{function}[EXP]{\bxjh_holiday_name:nnn} \begin{syntax} |\bxjh_holiday_name:nnn| \marg{year} \marg{month} \marg{day} \end{syntax} % |\jaholidayname|のexpl3関数版である.日付を祝日名に変換する. \end{function} \begin{function}[EXP]{\bxjh_day_of_week_name:nnn,\bxjh_day_of_week:nnn} \begin{syntax} |\bxjh_day_of_week_name:nnn| \marg{year} \marg{month} \marg{day} |\bxjh_day_of_week:nnn| \marg{year} \marg{month} \marg{day} \end{syntax} % |\bxjh_day_of_week_name:nnn|は|\jadayofweek|のexpl3関数版で,日付を曜日名に変換 する.曜日の情報をexpl3内で利用したい場合(例えば条件分岐したい場合)には |\bxjh_day_of_week:nnn|を用いるのがより適切である.この関数は内部的な 整数値 (\texttt{int}) を返す.この値は本パッケージが提供する定数と比較することが できる(\secref{variables}節参照). \end{function} \begin{function}[EXP,TF]{\bxjh_if_holiday:nnn} \begin{syntax} |\bxjh_if_holiday:nnnTF| \marg{year} \marg{month} \marg{day} \marg{true code} \marg{false code} \end{syntax} % |\IfJaHoliday(TF)|のexpl3関数版である. \end{function} \begin{function}[EXP]{\bxjh_apply_prev_day:Nnnn,\bxjh_apply_next_day:Nnnn} \begin{syntax} |\bxjh_apply_prev_day:Nnnn| \meta{function} \marg{year} \marg{month} \marg{day} |\bxjh_apply_next_day:Nnnn| \meta{function} \marg{year} \marg{month} \marg{day} \end{syntax} % これらの関数は与えられた日付の前日または翌日の日付に\meta{function}を適用する. \meta{function}は3つの引数を,年月日の順にとる関数である必要がある.例えば % \begin{code} |\bxjh_apply_next_day:Nnnn \bxjh_holiday_name:nnn { 2019 } { 12 } { 31 }| \end{code} % は以下と同じ結果となる: % \begin{code} |\bxjh_holiday_name:nnn { 2020 } { 1 } { 1 }| \end{code} \end{function} \subsection{変数と定数}\seclabel{variables} \paragraph{祝日名} すべてグローバルな\texttt{tl}型変数として提供される(表\tabref{holidays}). % \begin{table}[b] \centering\small \caption{日本の祝日} \tablabel{holidays} \begin{tabular}{ll} \hline 祝日名 & 変数 \\ \hline \HolidayLine{New Year's Day}{ganjitsu} \HolidayLine{Coming of Age Day}{seijin} \HolidayLine{National Foundation Day}{kenkoku} \HolidayLine{The Emperor's Birthday}{tennou} \HolidayLine{Vernal Equinox Day}{shunbun} \HolidayLine{Showa Day}{showa} \HolidayLine{Greenery Day}{midori} \HolidayLine{Constitution Memorial Day}{kenpou} \HolidayLine{National Holiday}{kokumin} \HolidayLine{Children's Day}{kodomo} \HolidayLine{(substitute holiday)}{furikae} \HolidayLine{Marine Day}{umi} \HolidayLine{Mountain Day}{yama} \HolidayLine{Autumnal Equinox Day}{shubun} \HolidayLine{Respect for the Aged Day}{keirou} \HolidayLine{Sports Day}{sports} \HolidayLine{Health and Sports Day}{taiiku} \HolidayLine{Culture Day}{bunka} \HolidayLine{Labor Thanksgiving Day}{kinrou} \HolidayLine{National Mourning of Showa}{showa\_taisou} \HolidayLine{National Wedding of Akihito}{akihito\_kekkon} \HolidayLine{National Wedding of Naruhito}{naruhito\_kekkon} \HolidayLine{Core Enthronement Ceremony}{sokuirei} \HolidayLine{Coronation Day}{sokui} \hline \end{tabular} \end{table} \paragraph{曜日名} 本パッケージは曜日を表す際,内部的には整数値を用いている.これらの内部整数値に 対応する\texttt{int}型の定数が定義されている.また各曜日名を格納するグローバル \texttt{tl}変数も提供されている(表\tabref{dayofweek}). % \begin{table}[b] \centering\small \caption{曜日} \tablabel{dayofweek} \begin{tabular}{c|lr|ll} \hline 曜日 & 定数 (\texttt{int}) & & 変数 (\texttt{tl}) & \\ \hline \WeekofdayLine{Monday}{getsu} \WeekofdayLine{Tuesday}{ka} \WeekofdayLine{Wednesday}{sui} \WeekofdayLine{Thursday}{moku} \WeekofdayLine{Friday}{kin} \WeekofdayLine{Saturday}{do} \WeekofdayLine{Sunday}{nichi} \hline \end{tabular} \end{table} \end{documentation} %\PrintChanges \end{document} % vim: spell: