%!TEX program = SpiX
%$ xelatex -synctex=1 -8bit $texname
%$ komkindex -k -s kotex $basename
%$ xelatex -synctex=1 -8bit $texname
\documentclass[a4paper,colorlinks]{oblivoir}

\usepackage[dbl4x6]{fapapersize}

\ifLuaOrXeTeX
\setobmainfont[texgyrepagella](-regular.otf)(-bold.otf)(-italic.otf)
\setobsansfont[QTOptimum](.otf)(-Bold.otf)(-Italic.otf)
\setmonofont{jetbrainsmono}[Scale=.91]
\setkomainfont(Noto Serif CJK KR)[Scale=MatchUppercase,WordSpace={1.1,1,.5}]
\setkosansfont(Noto Sans CJK KR)[Scale=MatchUppercase]
\setkomonofont(D2Coding)[Scale=.9][](Noto Sans CJK KR)[Scale=.88]
\fi

\usepackage[parentype=moreparens]{kskorsymb}
\usepackage{kswdash}
\usepackage{ksvqt}

\usepackage{hanjacnt}
\usepackage{readhannum}
\usepackage{tabto}
\usepackage{multido}

\usepackage{fbox}
\usepackage[private,tcolorbox,backcolor=gray!8,framecolor=gray!80]{srcandtext}
\usepackage{kotex-logo}
\def\pdfTeX{\texorpdfstring{\hologo{pdfTeX}}{pdfTeX}\index{pdfTeX@pdf\TeX}}
\usepackage{figureversions}
\IfPackageLoadedTF{luatexko}{}{%
	\usepackage[normalem]{ulem}
}

\usepackage{graphicx}
\usepackage[export]{adjustbox}

\ExplSyntaxOn

\NewDocumentCommand \showcmd { m }
{
	\par\vspace{\medskipamount}
	\clist_set:Nn \l_tmpa_clist { #1 }
	\dim_zero:N \l_tmpb_dim
	\clist_map_inline:Nn \l_tmpa_clist
	{
		\settowidth{\l_tmpa_dim}{\ttfamily\tl_to_str:n { ##1 } }
		\dim_compare:nT { \l_tmpa_dim > \l_tmpb_dim }
		{
			\dim_set_eq:NN \l_tmpb_dim \l_tmpa_dim
		}
	}
	\dim_add:Nn \l_tmpb_dim {6pt}
	
	\noindent\hspace*{-2em}
	\fparbox[bt,boxrule=1.5pt,linewidth=\l_tmpb_dim]{
		\setstretch{1}
		\int_zero:N \l_tmpa_int
		\clist_map_inline:Nn \l_tmpa_clist
		{
			\int_incr:N \l_tmpa_int
			\cmd{##1}
			\int_compare:nF { \l_tmpa_int == \clist_count:N \l_tmpa_clist }
			{ \newline }
		}
	}
	\nopagebreak\par
	\vspace{\smallskipamount}
	\noindent
	\ignorespaces
}

\makeindex

\ExplSyntaxOff

\makeatletter 
\renewcommand{\cmd}[1]{\cmdprint{#1}%
  \index{\expandafter\@gobble\string#1@\string\cmdprint{\string#1}}\allowbreak}
\patchcmd{\theindex}{\@makeschapterhead{\indexname}}{\section*{\indexname}}{}{}
\patchcmd{\theindex}{\addcontentsline{toc}{chapter}{\indexname}}{ \addcontentsline{toc}{section}{\texorpdfstring{\string\kern1.8em\indexname}{\indexname}}}{}{}
\makeatother 

\AddToHook{env/examplebelow/begin}{\makerqother}
\AddToHook{env/exampleside/begin}{\makerqother}

\makeindex 
\renewcommand*\indexname {명령어 색인}

\def\pkg#1{\textsf{#1}\index{Packages!#1@\textsf{#1}}}
\def\ucp#1{\texttt{[U+#1]}\index{Unicode Characters!#1@\texttt{[U+#1]}}}
\newcommand*\env[1]{{\sffamily\itshape #1}}
\let\beginScope\begingroup
\let\endScope\endgroup
\def\sto#1{\texttt{#1}\index{Options!#1@\texttt{#1}}}
\let\opt\sto
\apptocmd\koTeX{\index{Packages!ko.TeX@\textsf{ko.TeX}}}{}{}
\newcounter{dummy}

\begin{document}

\title{한자 한글 숫자와 카운터, hanjacnt}
\author{Nova de Hi}
\date{\HanjaTodayWithGanji, v2.8.2}

\maketitle

\begin{abstract}
한자와 한글 카운터 수식자를 제공하는 \pkg{hanjacnt}를 완전히 다시 쓰고
기능을 확장하였다. 숫자를 한자와 한글 표기로 표현한다.
\end{abstract}

\tableofcontents*

\section{소개}

원래의 \pkg{hanjacnt} 패키지%
%\footnote{%
%	\url{http://ktug.kldp.net/jsboard/read.php?table=ktugbd&no=4810&page=118}}%
는 1부터 999까지의 한자 및 한글 카운터 수식자를 제공하던 패키지였다.
이를 완전히 새로 설계하였다.

\section{패키지의 로드}

\begin{exampleonly}
\usepackage[<options>]{hanjacnt}
\end{exampleonly}
|<options>| 자리에 줄 수 있는 옵션은 다음과 같다.
\begin{description}\oblivoirlist
\item [\opt{[manspace]}] 한글로 읽을 때에 만 자리마다 띄어쓰게 할 수 있다. \ref{sec:manspace}절에서 설명한다.
\item [\opt{[2]}, \opt{[20]}, \opt{[30]}] 나열형 한자의 수 표현 방법 옵션이다. \ref{sec:twenty}절에서 설명한다.
\item [\opt{[finhanja]}] 갖은자 한자를 쓰도록 한다. \ref{sec:fin}절에서 설명한다.
\end{description}

\section{한자로 읽기}

\subsection{숫자를 한자로 읽기}

\showcmd{\NumHanja}
인자로는 숫자나 (한 번 확장할 수 있는) 매크로가 온다. 숫자를 읽어서 한자로 표현한다.
\begin{exampleside}
\NumHanja{1}, \NumHanja{2}, 
\NumHanja{10}, \NumHanja{96},
\NumHanja{10500}
\end{exampleside}
한 번 확장할 수 있는 매크로가 오는 것을 보인다.
\begin{exampleside}
\def\mynumber{106}
\NumHanja{\mynumber}
\end{exampleside}
이 매크로가 다룰 수 있는 수의 범위는 10억 미만(아홉 자리)의 수이다.
이보다 큰 수에 대해서는 \cmd{\NumHanjaBig} 명령을 쓴다.

내부적으로 다섯 자리까지는 "'정수"'로 보고 취급한다. 그러나 여섯 째자리를 넘어
아홉 자리 수까지는 토큰열(sequence)로 취급한다.

\showcmd{\NumHanjaBig}
사용 방법은 \cmd{\NumHanja}와 같다. 그보다 큰 수가 올 수 있고
입력 시에 세 자리마다 쉼표로 구분할 수 있다"(\cmd{\NumHanja}, \cmd{\NumHanjaDig}은 쉼표로 구분된 숫자를 다루지 않는다).
\begin{examplebelow}
\NumHanjaBig{1205345624967}\\
\NumHanjaBig{2,345,100,124,287}
\end{examplebelow}
\cmd{\NumHanjaBig}으로는 열세 자리(兆) 숫자까지 처리할 수 있다. 
이 패키지는 현재 이보다 큰 숫자에 대해서는 지원하지 않는다.
다만 "(숫자를 읽는 것만이 목적이라면) 별도로 큰 수를 다루기 위하여 제작한 \pkg{readhannum} 패키지를 이용하면
훨씬 큰 수를 한자"(또는 한글)로 읽을 수 있기는 하다"(별도의 패키지이므로 안내 문서도 별도로 마련되어 있다).
\begin{examplebelow}
%\usepackage{readhannum}
\hanjaon
\readbn{10245039405939292026244433322211234500004320000000}
\end{examplebelow}

\subsection{자리 단위로 표현하기}

\showcmd{\NumHanjaDig}
한자 숫자를 사용할 때 예를 들어 45의 경우 \NumHanja{45}와 같이 읽는 것이 일반적이지만
가끔 \NumHanjaDig{45}로 표시하는 것이 좋을 경우가 있다.
\begin{examplebelow}
\NumHanjaDig{1}, \NumHanjaDig{5}, \NumHanjaDig{10},
\NumHanjaDig{25}, \NumHanjaDig{101}, \NumHanjaDig{369},
\NumHanjaDig{1069}, \NumHanjaDig{2025}
\end{examplebelow}

\subsection{스물과 서른}\label{sec:twenty}
\cmd{\NumHanjaDig}에서 20부터 29까지의 숫자는 \NumHanjaDig{20},
\NumHanjaDig{21}과 같이 쓰지 않고 \TwentyHanjaChar[20]\NumHanjaDig{20}, \NumHanjaDig{21}과 같이 표기할 수 있다.

\showcmd{\TwentyHanjaChar}
$20$에 해당하는 한자는 원래 廿(스물 입)이다"(이 글자는 KS X 1001에 포함되지 않기 때문에 많은 한글 폰트에서 이 글자가 결락되어 있다). 그 이체자는 卄이고 이 글자를 포함하고 있는 폰트가 더 많다. 어떤 글자를 쓸 것인가를 다음과 같이 \cmd{\TwentyHanjaChar}의 옵션으로 \opt{[2]}, \opt{[10]}, \opt{[20]}, \opt{[21]}을 주어서 선택할 수 있다. 
\begin{examplebelow}
\TwentyHanjaChar[2]  \NumHanjaDig{10} \NumHanjaDig{20}\\
\TwentyHanjaChar[10] \NumHanjaDig{10} \NumHanjaDig{20}\\
\TwentyHanjaChar[20] \NumHanjaDig{20}\\
\TwentyHanjaChar[21] \NumHanjaDig{20}
\end{examplebelow}

\marginpar{[v2.5]}한편, 30에 해당하는 한자 卅(서른 삽)을 쓰는 경우도 있을 수 있다. 원한다면 이 글자를 선언할 수 있는데 \cmd{\TwentyHanjaChar}에 \opt{[30]}을 지시하면 된다. 이 옵션이 들어오면 20도 스물 입을 사용한다.
마찬가지로 \opt{[31]}을 선언하면 20에 해당하는 글자를 廿으로 만든다. 30에 해당하는 글자에는 변경이 없다.
\begin{examplebelow}
\TwentyHanjaChar[30] \NumHanjaDig{20}, \NumHanjaDig{30}\\
\TwentyHanjaChar[31] \NumHanjaDig{20}, \NumHanjaDig{30}
\end{examplebelow}

\paragraph{패키지 옵션}
패키지 옵션으로는 \opt{[2]}, \opt{[20]}, \opt{[30]}이 있다. 
\opt{[10]}, \opt{[21]}, \opt{[31]}은 패키지 옵션이 아니라 \cmd{\TwentyHanjaChar} 명령으로 활성화한다.

\paragraph{요약}
이상을 요약하면, 각 옵션의 의미는 다음과 같다.\marginpar{[v2.8]}

\begin{itemize}\oblivoirlist
\item[\opt{[2]}] 20, 30의 자리 수를 二와 三으로 적는다. 다만 10의 자리 수는 十으로 한다.
\item[\opt{[10]}] \opt{[2]}와 같으나 10의 자리 수를 一로 적는다.
\item[\opt{[20]}] 10, 20을 각각 十, 卄으로 적는다.
\item[\opt{[21]}] 10, 20을 각각 十, 廿으로 적는다.
\item[\opt{[30]}] 10, 20, 30을 각각 十, 卄, 卅으로 적는다.
\item[\opt{[31]}] 10, 20, 30을 각각 十, 廿, 卅으로 적는다.
\end{itemize}

\paragraph{\<1개역성경> 관주 장절 표기}
\marginpar{[v2.6]}사실 스물 입이나 서른 삽과 같은 글자를 사용하여 숫자를 표시하는 일은 우리 문헌에 극히 드물다.
출판된 서적 가운데는 아마도 대한성서공회의 \bnm{성경전서} \<!개역한글판>(1962)과 \<!간이국한문>(1964)이 유일한 예일 것이다.
이 책의 "'관주"'라 불리는 상호참조 정보에 쓰인 한자 숫자는 본문 장절표시를 위한 한자 숫자 체계와 또 달라서 매우 독특한 
표기를 보여주는데, 다음은 이를 재현해본 것이다. 

\showcmd{\KRVcom,\KRVverse}
이 표기에서 ○은 숫자 영($0$)이 아니고 장과 절 사이의 구분 기호이고 숫자 앞에 붙은 글자들은 성경의 책 이름 약자이다. 이런 것이 실제로 쓰일 일은 거의 없을 것이다.\footnote{%
	이 명령들은 스물 입과 서른 삽 글자가 갖추어진 폰트가 아니라면 제대로 나타나지 않는다.}
\begin{exampleside}
\KRVcom{22},\\
\KRVverse{Gen}{45.22}{25},\\
\KRVverse{1Ki}{13.34}
\end{exampleside}

\subsection{상형문자 Zero}

\cmd{\NumHanjaDig}에서는 $0$을 표기하기 위해 \ucp{3007}(상형문자 zero: \symbolU{3007})를 쓴다.

\showcmd{\HanjaZeroFont,\HanjaZero}
나눔명조와 나눔고딕 같이 이 글자가 빠져 있는 폰트가 있다. 이런 폰트를 주 폰트로 쓰고 있다면 상형문자 zero를 표기할 때 사용할 폰트만 지정해줄 수 있다. \cmd{\HanjaZeroFont}를 쓴다.
\begin{exampleside}
\HanjaZeroFont{HANBatang-LVT.ttf}
\NumHanjaDig{50}
\end{exampleside}

폰트를 바꾸지 않고 상형문자 zero에 해당하는 글자 자체를 바꿀 수 있다. 
다음 예에서 채용된 글자는 \ucp{25CB}(\symbolU{25CB})이다.
\begin{exampleside}
\HanjaZero{○} \NumHanjaDig{50}
\end{exampleside}

\subsection{한자 갖은자}\label{sec:fin}

\marginpar{[v2.3]}한자 숫자 표기에 갖은자를 쓰는 경우가 있다. 주로 돈의 액수를 표시할 때 쓴다.
갖은자 한자 숫자를 식자하게 하려면 \opt{[finhanja]} 패키지 옵션을 준다. "(fin은 financial에서 온 것이다.)

\showcmd{\FinHanjaMode}
문서 중에서 갖은자 식자를 하려면 \cmd{\FinHanjaMode} 명령을 내린다. 패키지 옵션으로
\opt{[finhanja]}를 선언하면 문서 내의 모든 한자 읽기가 갖은자 상태가 된다.
\begin{examplebelow}
\FinHanjaMode
\NumHanja{123456789}
\end{examplebelow}

\paragraph{갖은자 선택}

갖은자 한자를 쓰는 방법이 몇 가지 있으므로
\cmd{\FinHanjaMode}에 인자를 하나 주어서 이를 선택할 수 있다.
인자가 없으면 기본값을 쓰게 되고
\opt{\{full\}}, \opt{\{var\}}, \opt{\{fullvar\}}를 인자로 주어 갖은자 쓰는 방법을 선택할 수 있다.
다음에서 각각의 경우에 어떤 글자가 사용되고 있는지 확인하자.
\begin{examplebelow}
\FinHanjaMode{full}
\NumHanja{987612345} (full)

\FinHanjaMode{var}
\NumHanja{987612345} (var)

\FinHanjaMode{fullvar}
\NumHanja{987612345} (fullvar)

\FinHanjaMode
\NumHanja{987612345} (default)
\end{examplebelow}

\paragraph{갖은자 모드 켜고 끄기}
\cmd{\FinHanjaMode} 명령에 \opt{\{on\}}이나 \opt{\{off\}}를 주어서 갖은자 한자 모드를 켜거나 끌 수 있다.
\begin{examplebelow}
on: \FinHanjaMode{on}
\NumHanja{987612345}

off: \FinHanjaMode{off}
\NumHanja{987612345}
\end{examplebelow}

\subsection{폰트와 숫자 문자}

\paragraph{폰트} 

한자 숫자에 대해서만 별도의 폰트를 써야 할 때가 있다.

\showcmd{\NumHanjaFont}
이 때 \cmd{\NumHanjaFont}를 쓰면 된다. 이것은 \cmdprint{\hanjafontspec} 명령을 이용하기 때문에
\pkg{xetexko}나 \pkg{luatexko}가 아니면 의미가 없다.
\begin{exampleside}
\NumHanjaFont{Noto Sans CJK KR}
\NumHanja{12502}
\end{exampleside}

\paragraph{한자 숫자 문자 교체}
\marginpar{[v2.7]}각 숫자를 나타내는 한자 문자를 사용자가 별도로 정의하여 쓸 수 있다.

\showcmd{\MarkHanja}
이 명령은 두 개의 인자를 받아들이는데 첫 번째 것은 숫자의 이름이다. 이 자리에 올 수 있는 것은,
1부터 9까지의 숫자, |one|, |two|, |three|, |four|, |five|, |six|, |seven|, |eight|, |nine|과
십, 백, 천, 만, 억, 조에 해당하는 |shi|, |bae|, |chu|, |man|, |eok|, |cho|이다. 십, 백, 천은 |ten|, |hundred|, |thousand|를
쓸 수도 있다. 전형적인 용례는 다음과 같다.
\begin{verbatim}
  \MarkHanja{man}{万}
\end{verbatim}
사용자 정의 한자를 식자하는 것은 갖은자 모드가 아닐 때이고 
\cmd{\NumHanja}, \cmd{\NumHanjaBig}뿐 아니라 \cmd{\NumHanjaDig} 및 카운터 수식자 \cmd{\HANJA}와 \cmd{\HANJADIG}에도 효력을 미친다.\footnote{카운터 명령에 대해서는 
	\ref{sec:counterhanja}절에서 설명한다.}

\begin{examplebelow}
\MarkHanja{man}{万}
\MarkHanja{one}{壱}
\MarkHanja{two}{弍}
\NumHanjaBig{12,011}
\end{examplebelow}

단, \cmd{\HANJADIG}와 \cmd{\NumHanjaDig}에 적용할 10의 자릿수는 \texttt{shi}나 \texttt{ten}으로는 바꿀 수 없고 이에 대하여 \texttt{digten}으로 바꾸어야 효력이 있다.
\begin{examplebelow}
\MarkHanja{digten}{拾}
\NumHanjaDig{15}
\end{examplebelow}

모두 기본값으로 되돌리려면 \cs{MarkHanja\{default\}}라고 선언한다. 이 경우 두 번째 인자는 없다.
\begin{examplebelow}
\MarkHanja{default}
\NumHanjaBig{12,011}
\end{examplebelow}


\section{한자 카운터 수식}\label{sec:counterhanja}

\subsection{사용법}

\showcmd{\HANJA,\HANJADIG}
\LaTeX\ 카운터 수식 명령이다. 따라서 인자로 실숫자가 아닌 카운터 변수가 온다.
1.0 버전의 \pkg{hanjacnt}가 이 기능만을 제공하였다.

\begin{examplebelow}
\newcounter{foo}
\stepcounter{foo}     \HANJA{foo},
\addtocounter{foo}{5} \HANJA{foo},
\setcounter{foo}{105} \HANJA{foo}, \HANJADIG{foo}
\end{examplebelow}

카운터로 다룰 수 있는 수의 범위는 다섯 자리(10만 미만) 수이다.

\subsection{페이지 번호 매김}
\cmdprint{\pagenumbering}과도 함께 쓸 수 있다. "(이하는 \cmd{\HANGUL}도
동일하게 적용된다.)
\begin{exampleonly}
\pagenumbering{HANJA}
\end{exampleonly}

다만, 이 방법을 쓰게 되면 매크로 \cmdprint{\thepage}가 재정의되기
때문에 \pkg{hyperref}의 \cmdprint{\hyperpage} 명령의 인자로 왔을 때
오류를 보일 수 있다. 

\makeoddfoot{plain}{}{\HANJA{page}}{}
\pagestyle{plain}
%\newcounter{tmp}\setcounter{tmp}{\value{page}}
%\pagenumbering{HANJA}
%\setcounter{page}{\value{tmp}}

참고로, \pkg{oblivoir}에서는 \cmdprint{\pagenumbering}을 쓰는 것보다
page style을 수정하는 쪽을 권장한다. 다음 예시에서 힌트를 얻을 수 있을 것이다.
\begin{verbatim}
  \makeoddfoot{plain}{}{\HANJA{page}}{}
\end{verbatim}

\subsection{갖은자 한자 카운터 수식}

갖은자 한자 카운터 수식자는 \cmd{\FinHanjaMode}에 의해 활성화된다. 
\cmd{\HANJADIG}으로는 갖은자를 식자할 필요가 없으므로 이와 무관하다.
\begin{examplebelow}
\FinHanjaMode{on}
\HANJA{foo}
\end{examplebelow}

\section{한글로 읽기와 한글 카운터 수식}

\subsection{숫자를 한글로 읽기}

\showcmd{\NumHangul}
인자로는 숫자나 (한 번 확장할 수 있는) 매크로가 온다. 숫자를 읽어서 한자로 표현한다.
\begin{exampleside}
\NumHangul{1}, \NumHangul{2}, 
\NumHangul{10}, \NumHangul{96}
\end{exampleside}

한 번 확장할 수 있는 매크로가 오는 것을 보인다.
\begin{exampleside}
\def\mynumber{106}
\NumHangul{\mynumber}
\end{exampleside}

한자의 경우와 마찬가지로 
이 매크로가 다룰 수 있는 수의 범위는 10억 미만(아홉 자리)의 수이다.
이보다 큰 수에 대해서는 \cmd{\NumHangulBig} 명령을 쓴다.

\showcmd{\NumHangulBig}
사용 방법은 \cmd{\NumHangul}과 같다. 그보다 큰 수가 올 수 있고
입력 시에 세 자리마다 쉼표로 구분할 수 있다.
\begin{examplebelow}
\NumHangulBig{1205345624967}\\
\NumHangulBig{2,345,100,124,287}
\end{examplebelow}
\cmd{\NumHangulBig}으로는 열세 자리(조) 숫자까지 처리할 수 있다. 

\subsection{한글 카운터 수식}

\cmd{\HANGUL}은 본질적으로 \cmd{\HANJA}와 동일하다.
다만 \cmd{\HANJADIG}에
상당하는 한글 명령은 없다.

\showcmd{\HANGUL}
인자로 실숫자가 아닌 카운터 변수가 온다.

\begin{examplebelow}
%\newcounter{foo}
\stepcounter{foo}     \HANGUL{foo},
\addtocounter{foo}{5} \HANGUL{foo},
\setcounter{foo}{105} \HANGUL{foo}
\end{examplebelow}

카운터로 다룰 수 있는 수의 범위는 다섯 자리(10만 미만) 수이다.


\subsection{한글 숫자의 띄어쓰기}\label{sec:manspace}

한글 맞춤법에 ``수를 적을 적에는 만 단위로 띄어쓴다''는 규정이 있다. 이 규정을 살려서 큰 숫자를 만 단위로
띄어쓰게 하려면 패키지 옵션으로 \opt{[manspace]}를 지정한다.

\showcmd{\ManSpaceOn,\ManSpaceOff}
문장 중에서 이 설정을 취소할 수 있다.

\begin{examplebelow}
\ManSpaceOn
\NumHangulBig{2345100024287}

\ManSpaceOff
\NumHangulBig{2345100024287}
\end{examplebelow}

\paragraph{한자 만 단위로 띄어쓰기}
이 패키지는 ""만 단위로 띄어쓰기""를 한글에 대해서만 지원한다. 그러나 다음과 같은 
트릭으로 한자의 경우에도 만 단위로 띄어쓰기가 나타나게 해볼 수는 있을 것이다. 
앞서 소개한 \cmd{\MarkHanja}를 응용하는 것이다.

\begin{examplebelow}
\MarkHanja{eok}{億\space}
\MarkHanja{man}{萬\space}
\NumHanjaBig{123,453,012}
\end{examplebelow}

\section{연도와 날짜}

\subsection{날짜}

날짜를 표시하는 데 한글이나 한자를 써야 하는 경우가 있다.

\showcmd{\HanjaYear}
인자로 주어진 연도를 한자로 표기하는데, 표기는 ""|DIG|"" 형식이다.
만약 일반적인 한자 읽기 방식으로 표기하려면 다음 예를 보라.
\begin{exampleside}
\HanjaYear \\
\NumHanja{\the\year}年
\end{exampleside}

\showcmd{\HanjaMonth,\HanjaDay}
\showcmd{\HangulYear,\HangulMonth,\HangulDay}
\cmd{\HanjaYear}와 이 명령들은 인자가 없으면 금년(이번 달 또는 오늘) 날짜를 인쇄한다.
\begin{examplebelow}
\HanjaYear \HangulYear \\
\HanjaMonth \HangulMonth \\
\HanjaDay \HangulDay
\end{examplebelow}

인자로 숫자를 취할 수 있다.

\begin{examplebelow}
\HanjaYear{2025}, \HangulYear{2025}\\
\HanjaMonth{3}, \HangulMonth{3}\\
\HanjaDay{15}, \HangulDay{15}
\end{examplebelow}

\showcmd{\HanjaToday, \HangulToday}
오늘 날짜를 한자 또는 한글로 출력한다.
\begin{examplebelow}
\HanjaToday \\
\HangulToday
\end{examplebelow}

\showcmd{\HanjaTodayWithGanji,\HangulTodayWithGanji}
금년의 세차(간지)를 붙여서 출력한다.
\begin{examplebelow}
\HanjaTodayWithGanji \\
\HangulTodayWithGanji
\end{examplebelow}

\showcmd{\HangulLunarToday,\HangulLunarTodayWithGanji}
이 명령은 날짜를 마치 음력 날짜 읽기처럼 인쇄한다. 
단, 이 패키지가 양력-음력 변환을 해주지는 않으므로 양력 날짜를 `음력식' 읽기로 보여주는 것뿐이다. \cmd{\HangulLunarTodayWithGanji}는 간지도 함께 식자한다.
한자에는 해당 명령이 없다.
\begin{examplebelow}
\HangulLunarToday, \HangulLunarTodayWithGanji
\end{examplebelow}

\showcmd{\HangulLunarDay}
한자로는 해당 명령이 없으며 한글로 날짜의 "'음력식"' 읽기를 출력한다.
양력 날짜를 음력식으로 읽는 것뿐이므로 "(원래는 없는) 30일과 31일이
추가되어 있고 인자로 |100|을 주어 그 달의 말일을 표현할 수 있다.
\begin{examplebelow}
\HangulLunarDay{15}, \HangulLunarDay{5}, 
\HangulLunarDay{30}, \HangulLunarDay{100}
\end{examplebelow}
인자 없이 쓰면 오늘 날짜를 음력식으로 읽는다.
\begin{exampleside}
\HangulLunarDay
\end{exampleside}


\subsection{연호와 간지}
\paragraph{단군기원}

단기는 서기에 2333을 더한다.

\showcmd{\HanjaDangiYear,\HangulDangiYear}
이 명령은 인자를 반드시 주어야 하고 인자는 서기 연도여야 한다. \cmd{\HanjaDangiYear} 명령도 있다.
\begin{examplebelow}
\HangulDangiYear{\the\year}, \HangulDangiYear{2007},
\HanjaDangiYear{\the\year}
\end{examplebelow}

\paragraph{불멸기원}
불기를 기산하는 방법이 동아시아 나라에 따라 조금씩 다르고 우리나라에서도
1957년 이전까지 기원전 948년을 불멸 기원으로 삼았으나, 현재 조계종에서 
공식적으로 인정하는 544년설에 입각하여 불기를 표현한다.

\showcmd{\HanjaBulgiYear,\HangulBulgiYear}
인자를 반드시 주어야 한다.

\begin{examplebelow}
\HangulBulgiYear{\the\year},
\HanjaBulgiYear{\the\year}
\end{examplebelow}

\paragraph{대한민국 기원}
대한민국 기원은 1919년을 원년으로 한다. 

\showcmd{\HanjaMingukYear,\HangulMingukYear}
인자를 주어야 한다. 이 연호는 |...DIG|형 한자를 쓰지 않고 표기한다.

\begin{examplebelow}
\HangulMingukYear{1919}, \HangulMingukYear{\the\year} \\
\HanjaMingukYear{1919}, \HanjaMingukYear{\the\year} \\
\end{examplebelow}

\subsubsection{간지}

\showcmd{\HanjaGanji,\HangulGanji}
\marginpar{[v2.8]}해(연도)에 대하여 60갑자 간지를 적어줄 수 있다. 이를테면 2025년은 \HanjaGanji{2025}年이다. 인자가 없으면 올해, 연도를 인자로 지정하면
해당 해의 간지를 출력한다.
\begin{examplebelow}
\HangulGanji 년 \\
\HanjaGanji 年 \\
\HangulGanji{1894}년 \\
\HanjaGanji{1894}年
\end{examplebelow}

\section{기타}

\subsection{1.0 버전 호환성}

1.0 버전에 비하여 달라진 점은 다음과 같다.
\begin{itemize}\firmlist
\item 카운터 수식자(counter modifier)뿐 아니라 숫자 자체를 한자로 식자하는 명령을 도입하였다.
\item 한자 숫자 표시 방법을 개선하였다. 다양한 방법으로 표기되는 한자 숫자 표현 방법을 지원한다.
\item 한자 숫자를 식자할 폰트를 지정할 수 있다.
\item 한글 숫자의 만 단위로 띄어쓰기를 할 수 있다.
\item 큰 숫자도 잘 처리한다.
\end{itemize}
그러나 이전에 제공되던 두 개의 카운터 명령 \cs{HANJA}와 \cs{HANGUL}의 결과는 그대로이므로
이전에 작성한 문서에서도 문제를 일으키지 않을 것이다.

\subsection{\pdfTeX{} 호환성}
\pdfTeX 에서 \pkg{kotex-utf}를 쓰는 상황이라면 이 패키지의 몇 가지 기능을 사용할 수 없다. \cmd{\HANJADIG}은
오류를 일으키지 않으나 상형문자 zero가 제대로 나타나지 않는다. 폰트 관련 명령은 \pdfTeX 에서는 의미가 없다.
그러므로 \cmd{\HANJA}, \cmd{\HANGUL}, \cmd{\NumHanja}, \cmd{\NumHangul}을 쓸 수 있다고 생각하면 된다.


\subsection{\texorpdfstring{\<1생활한자>}{<생활한자>}에 관하여}

이 패키지를 처음 만들어서 KTUG에 공개했던 2005년에 Progress께서 이 글 관련된 토론
글타래에서 보여주셨던 문서 \<1生活漢字>를 우리는 보존하고 있다.
읽어보고 싶을 때
\begin{verbatim}
  texdoc rehanja
\end{verbatim}
명령을 내리면 되겠다.
이 |pdf|의 페이지 하단 \<2한양해서>로 찍힌 한자 페이지 번호가 (당시의) \pkg{hanjacnt}와
\pkg{pdfpages}로 처리한 것이었다.

\section{바뀐 점}

\noindent\textbullet\ v2.8.2 (2025/06/14) \textsf{readhannum} 관련 추가, 카운터 명령 개선, 문서 리뉴얼.

\noindent\textbullet\ v2.8 (2020/05/03) 간지 명령 추가 및 버그 수정 등.

\noindent\textbullet\ v2.7.2 (2020/02/06) Expl3의 변경에 따른 수정.

\noindent\textbullet\ v2.7 (2015/06/28) 사용자 한자 숫자 정의 도입. 날짜표기.

\noindent\textbullet\ v2.5 (2015/06/27) 스물 입, 서른 삽의 처리. 스물 입의 이체자. 

\noindent\textbullet\ v2.4 (2015/06/26) 쉼표로 구분된 숫자의 처리.

\noindent\textbullet\ v2.3 (2015/06/26) 한자 갖은자 숫자의 식자 가능. (suggested by nomos)

\noindent\textbullet\ v2.2 (2015/06/26) \cs{expandafter}하던 문제를 해결.

\clearpage

\section{테스트}

한자 숫자 글꼴은 Noto Serif CJK KR이고, ""스물과 서른""은 \opt{[21]} 상태이다.
%\TwentyHanjaChar[21]

\bigskip

\NumHanjaFont{Noto Serif CJK KR}
\NumTabs{4}

\parindent=0pt
\long\def\TestLine{%
	\stepcounter{foo}\thefoo \tab
	\HANGUL{foo} \tab
	\HANJA{foo} \tab
	\HANJADIG{foo} \par
}


\setcounter{foo}{-1}
카운터\tab \cs{HANGUL}\tab \cs{HANJA}\tab \cs{HANJADIG} \\
\multido{\i=1+1}{51}{ \TestLine }

\setcounter{foo}{80}
\multido{\i=1+1}{30}{ \TestLine }

\setcounter{foo}{1000}
\thefoo\tab \HANGUL{foo}\tab \HANJA{foo}\tab \HANJADIG{foo} \par

\setcounter{foo}{\the\year}
\thefoo\tab \HANGUL{foo}\tab \HANJA{foo}\tab \HANJADIG{foo} \par

\flushbottom
\printindex

\end{document}
