%!TEX program = arara
% arara: xelatex: { synctex: yes, options: [-8bit] }
\documentclass{oblivoir}

\usepackage[a4]{fapapersize}

\ifLuaOrXeTeX
\setkomainfont(HANBatang-LVT.ttf)[BoldFont={HANBatangB-LVT.ttf}]
\setkomonofont(D2Coding)[](Noto Sans CJK KR)[Scale=.8]
\fi

\usepackage{xcolor}
\usepackage[private]{srcandtext}
\usepackage{readhannum}

\usepackage{iftex}
\ifPDFTeX
\providecommand\hangulfontspec[1]{}
\fi

\hangsecnum

\begin{document}

\title{큰 수 읽기: \stp{readhannum}}
\author{Nova de Hi}
\date{2025년 6월 13일\qquad version 0.1}
\maketitle

\tableofcontents*

\section{개요}

수는 ``이만체진'' 방법으로 읽는다. 사용되는 단위 수사와 그 값은 다음과 같다.

\begin{center}
\begin{tabular}{lr|lr|lr}
\hline
만(萬) & $10^4$    & 억(億) & $10^8$    & 조(兆) & $10^{12}$ \\
경(京) & $10^{16}$ & 해(垓) & $10^{20}$ & 자(秭) & $10^{24}$ \\
양(穰) & $10^{28}$ & 구(溝) & $10^{32}$ & 간(澗) & $10^{36}$ \\
정(正) & $10^{40}$ & 재(載) & $10^{44}$ & 극(極) & $10^{48}$ \\
항하사(恒河沙) & $10^{52}$ & 아승기(阿僧祇) & $10^{56}$ & 나유타(那由他) & $10^{60}$ \\
불가사의(不可思議) & $10^{64}$ & 무량대수(無量大數) & $10^{68}$ & & \\
\hline
\end{tabular} 
\end{center}

\subsection{패키지 옵션}

\texttt{[hanja]} 옵션이 주어지면 숫자 표기를 한자로 한다. 
디폴트는 |hanja=false|이다.

\subsection{명령과 용례}

다음 명령을 제공한다.

\begin{itemize}
\item |\readbn|
\item |\readbnsimple|
\item |\numwithcomma|
\item |\numwithbar|
\end{itemize}

명령의 사용례를 보인다.
(예시 숫자에 `경'에 해당하는 부분이 $0$이므로 이 마디가 나타나지 않아야 한다.)

\paragraph{\cmd{\readbn}} 인자로 숫자나 매크로가 올 수 있다.
\begin{examplebelow}
\readbn{1234532653000143024045600009496839293921098}

\def\mynum{123453265300014302}
\readbn{\mynum}
\end{examplebelow}

\paragraph{\cmd{\readbnsimple}} 숫자와 ``만 단위 수사''를 섞어써서 표현한다.
\begin{examplebelow}
\readbnsimple{1234532653000143024045600009496839293921098}

\def\mynum{123453265300014302}
\readbnsimple{\mynum}
\end{examplebelow}

\paragraph{\cmd{\marknumunit}}
|\readbn|에서 ``만 단위 수사''를 수식한다. 현재 버전에서는 \cmd{\textsf}와 같은 NFSS 폰트 명령을 쓸 수 없는 한계가 있다. 추후 수정할 사항이다.
|\color|나 |\underline| 등의 명령은 지정할 수 있다.
(유니코드 텍 엔진이라면) 직접 |\fontspec| 관련 명령을 써서 폰트를 바꿀 수 있다.
\begin{examplebelow}
\renewcommand*{\marknumunit}[1]{\textcolor{red}{\hangulfontspec{HANDotumB-LVT.ttf}#1}}
\readbn{1234532453000143024045600009496839293921098}
\end{examplebelow}

\paragraph{\cmd{\numwithcomma}와 \cmd{\numwithbar}}
입력된 숫자를 세 자리씩 점을 찍어 표현하거나 네 자리마다 vertical bar를 그어 구분한다.
\begin{examplebelow}
\numwithcomma{1234532453000143024045600009496839293921098}
\end{examplebelow}

\begin{examplebelow}
\numwithbar{1234532453000143024045600009496839293921098}
\end{examplebelow}

\subsubsection{한자}

문서 중에서 |\hanjaon| 또는 |\hanjaoff|로 한자 선택 기능을 활성화하거나
무력화할 수 있다. 단 한자 폰트는 특히 $10^{24}$에 해당하는 秭가 인쇄될 수 있는 것이어야 한다.
이 단위를 사용할 정도로 큰 수에서 단위 글자가 인쇄되지 않을 수 있다. pdf\TeX 에서도
그러하다.

\begin{examplebelow}
\hanjaon
\readbn{1234532653000143024045600009496839293921098}

\readbnsimple{1234532653000143024045600009496839293921098}
\end{examplebelow}

\section{구현}

\begingroup
\tcbset{minted style=tango,
	sharp corners,
	colback=gray!10,
	colframe=gray!10,
	leftrule=0pt,
	top=1pt,
	bottom=1pt,
	rightrule=0pt,
	minted language=latex,
	minted options={tabsize=4,linenos,firstnumber=last,fontsize={\normalsize}}}
\loadsnttext
\endgroup

\section{표기 관련 코멘트}

`만'과 `일만'의 경우. |\readbnsimple|에서는 `1만'을 그대로 새긴다.
한자 상태에서도 `一萬'으로 된다.
\begin{examplebelow}
\readbn{100010000}\quad \readbnsimple{100010000}\\
\readbn{10000}\quad \readbnsimple{10000}\\
\hanjaon
\readbn{10000}\quad \readbnsimple{10000} \\
\hanjaoff
\readbn{10010}\quad \readbnsimple{10010}
\end{examplebelow}

조사가 붙을 때의 스페이스
\begin{examplebelow}
\readbn{10020}을\\
\readbn{50000}을\\
\readbn{100010000}과\\
\readbnsimple{10020}을\\
\readbnsimple{50000}을\\
\readbnsimple{100010000}과\\
\end{examplebelow}

\end{document}
