1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263
|
% +++
% 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:
|