% +++ % latex = "xelatex" % extra_clean_files = [ % "%B.synctex.gz", "%B.hd", "%B.glo" % ] % +++ \RequirePackage{fontspec} \documentclass{l3doc} % packages \usepackage{bxjaholiday} \usepackage{caption} % fonts \newfontfamily{\fIpaex}{IPAexMincho}[Scale=0.95] \newcommand*{\Ja}[1]{{\fIpaex#1}} % 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 #1 & % second column: variable \cs { g_bxjh_#2_tl } & % third column: Name in Japanese \Ja { \tl_use:c { g_bxjh_#2_tl } } \\ } \cs_new:Npn \__bxjh_doc_week_of_day_line:nn #1#2 { % first column: week of day #1 & % 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 \Ja { \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{\jobname.sty} \title{The {\PkgName} package} \author{Takuto ASAKURA (wtsnjp)} \date{\fileversion \quad [\filedate]} \begin{document} \maketitle \begin{abstract} This package provides a command to convert dates to names of Japanese holidays (\emph{shukujitsu}; \Ja{祝日}). For internal use, I need to implement a function to judge the day of week (\emph{youbi}; \Ja{曜日}), so a command converting dates to \emph{youbi} in the same manner is also available as a free gift. The equivalent functions and further (lower-level) APIs are provided for expl3. %All {\LaTeXe} and expl3 interfaces are (first-)fully expandable, so %those could be used almost anywhere in your documents. \end{abstract} %\tableofcontents \begin{documentation} %\section{Introduction} \section{System requirements} As one of the BX series\footnote{BX series is a collection of {\LaTeX} packages mainly developed by Takayuki YATO (a.k.a.~ZR.) ``BX'' stands for ``\underline{b}abel e\underline{x}tensions'' and packages in this series normally support various {\TeX} engines not only Japanese-specific ones ({\pTeX}, {\upTeX}, and so on.)} packages, {\PkgName} supports all {\TeX} engines which supported by expl3 (\Ie, the {\eTeX} extension is required.) Specifically, following {\TeX} systems are supported: % \begin{itemize} \item {\TeX} format: {\LaTeXe}. \item {\TeX} engine: {\pdfTeX}, {\XeTeX}, {\LuaTeX},\footnote{Note that if you want to print Japanese characters with {\TeX} engines which is not specifically designed for Japanese, you need to setup proper fonts and other things.} {\pTeX}, and {\upTeX}. \end{itemize} \section{Loading the package} The package should be loaded in the usual {\LaTeXe} way. No package option is available. % \begin{code} |\usepackage{bxjaholiday}| \end{code} \section{{\LaTeXe} interfaces} \begin{function}[EXP]{\jaholidayname} \begin{syntax} |\jaholidayname|\marg{year}\marg{month}\marg{day} \end{syntax} % This command is expanded to the name of Japanese holiday corresponding to the specified date, if it is a holiday. For a date which is not a holiday, it will be expanded to nothing (an empty token.) See Table~\tabref{holidays} for all possible results. For \meta{year}, \meta{month}, and \meta{day}, you can explicitly write numbers, or use counters, \Eg, |\year|, |\month|, and |\day|. To be exact, those could be any \meta{integer expression}. \end{function} \begin{function}[EXP]{\jadayofweek} \begin{syntax} |\jadayofweek|\marg{year}\marg{month}\marg{day} \end{syntax} % This command converts from a date to the name of week, \Ie, one of \Ja{月, 火, 水, 木, 金, 土, 日}. You can specify the arguments in exactly the same way as |\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} % The |\IfJaHoliday(TF)| tests are used to check if a date is a Japanese holiday or not. Note that substitute holidays (\Ja{振替休日}) are also judged as a holiday in this test. \end{function} \section{expl3 interfaces} All expl3 interfaces provided by {\PkgName} belong to the \texttt{bxjh} module. \subsection{Functions} \begin{function}[EXP]{\bxjh_holiday_name:nnn} \begin{syntax} |\bxjh_holiday_name:nnn| \marg{year} \marg{month} \marg{day} \end{syntax} % This is expl3 version of |\jaholidayname|. It converts dates into Japanese holiday names. \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| is an expl3 version of |\jadayofweek|. It converts a date into day of week in Japanese. To use that information in expl3, \Eg, for branching, |\bxjh_day_of_week:nnn| is more suitable. It returns an internal \texttt{int} value, so you can compare those results with the constants provided by this package. See Section~\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} % This test is expl3 version of |\IfJaHoliday(TF)|. \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} % These functions get previous/next day of the specified date, and apply it to the specified \meta{function}. The \meta{function} must take three arguments in the order. For example, % \begin{code} |\bxjh_apply_next_day:Nnnn \bxjh_holiday_name:nnn { 2019 } { 12 } { 31 }| \end{code} % produces the result of: % \begin{code} |\bxjh_holiday_name:nnn { 2020 } { 1 } { 1 }| \end{code} \end{function} \subsection{Variables and constants}\seclabel{variables} \paragraph{Names of Japanese holidays} All of them are provided as global \texttt{tl} variables. See Table~\tabref{holidays}. % \begin{table}[p] \centering\small \caption{Japanese holidays} \tablabel{holidays} \begin{tabular}{lll} \hline Holiday & Variable & Name in Japanese \\ \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{Day of week} \enlargethispage{5mm} Internally, {\PkgName} uses integers to represent day of week, and corresponding \texttt{int} constants are defined. In addition to that, Japanese names of those are also provided as global \texttt{tl} variables. See Table~\tabref{dayofweek}. % \begin{table}[p] \centering\small \caption{Day of week} \tablabel{dayofweek} \begin{tabular}{l|lr|ll} \hline Day of week & Constant (\texttt{int}) & & Variable (\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: