\documentclass[a4paper,11pt]{article}
\usepackage[hangul]{kotex}
\setmainfont{Latin Modern Roman}
\setsansfont{Latin Modern Sans}
\setmonofont{Latin Modern Mono}
\defaultfontfeatures+{Script=Hangul}
\directlua{
  fonts.protrusions.setups.goridot = {
    [0x3002] = { 0, 0.5 },
  }
}
\setmainhangulfont{Noto Serif CJK KR}[
  InterLatinCJK=.125em,
%  InterCharStretch=1pt,
  CompressPunctuations,
  Protrusion=goridot,
  Expansion,
]
\setsanshangulfont{Noto Sans CJK KR}[InterLatinCJK=.125em]
\setmonohangulfont{Noto Sans Mono CJK KR}[Scale=.95]
\usepackage{readhanja}
\readhanjahangulfont{Noto Serif CJK KR}[Color=AA440099,Scale=.7]
\usepackage{xcolor,luacolor,hyperref}
\edef\ttfamily{\unexpanded\expandafter{\ttfamily\color[HTML]{191970}}}
\begin{document}

\title{\ttfamily readhanja 패키지 v0.9}
\author{Dohyun Kim\thanks{\texttt{nomos at ktug org}.
  아이디어와 동기를 주신 김강수 선생께 감사드린다.}}
\maketitle

\begin{quote}
A Lua\LaTeX\ package for semi-automatized typesetting of
Hanja-to-Hangul sound values.\\
한자만 입력하면 한글 독음을 붙여주는 패키지. 루아텍 판.\footnote{
  github 저장소: \url{https://github.com/dohyunkim/readhanja}}
\end{quote}

\section*{Install}

KTUG 사설 저장소로부터 설치한다.\footnote{
  \url{http://wiki.ktug.org/wiki/wiki.php/KtugPrivateRepository}}
또는
\verb|*.lua| 및 \verb|*.sty| 파일을 \TeX\ Directory Structure에 맞게 복사한다.\footnote{
  예컨대 \texttt{\$TEXMFHOME/tex/lualatex/readhanja/} 디렉토리 밑이 적당하다.
  \texttt{\$TEXMFHOME} 변수값은 \texttt{kpsewhich --expand-var \string\$TEXMFHOME}
  명령으로 알아낼 수 있다.
}

\section*{Usage}

\begin{verbatim}
  \usepackage[draft]{readhanja}
\end{verbatim}
draft 옵션을 쓰면 모든 음가를 나열하고 현재 선택된 음가에
밑줄을 긋는다.

\begin{verbatim}
  \readhanjahangulfont{...}[...]
\end{verbatim}
한글 독음의 식자에 쓰일 글꼴을 fontspec 방식대로 지시한다.
readhanja 환경의 시작 전에 선언돼 있어야 효력이 있다.

\begin{verbatim}
  \readhanjaraise{0pt}
\end{verbatim}
한글 독음을 올려 쓰는 정도를 지시한다.
독음 위치 \verb|pre| 또는 \verb|post|에서는 기본값이 0.5ex이고,
\verb|top| 또는 \verb|bottom|에서는 기본값이 0pt이다.

\begin{verbatim}
  \readhanjalocate{post}
\end{verbatim}
독음의 위치. 한자 앞\verb|pre|, 뒤\verb|post|,
위\verb|top|, 아래\verb|bottom| 중에 하나를 지시할 수 있다.
기본값은 앞에 달기.
draft 옵션은 \verb|pre| 또는 \verb|post|만 인식한다.

\begin{verbatim}
  \readhanjaunit{char}
\end{verbatim}
읽기 단위. 독음을 글자\verb|char|마다 달 것인가, 단어\verb|word| 단위로
달 것인가, 를 지시한다. 단어 단위가 기본값.
draft 옵션은 글자 단위를 강제한다.
독음 위치 \verb|top| 또는 \verb|bottom|도 글자 단위를 강제한다.

\begin{verbatim}
  \readhanjareading{樂}{악,낙,락,요}
\end{verbatim}
한글 음가 DB를 수정하거나 항목을 추가한다.\footnote{참고로
  \texttt{hanja2hangul.lua}는
  \href{http://unicode.org/charts/unihan.html}{Unihan}과
  \href{https://github.com/choehwanjin/libhangul}{libhangul}
  프로젝트에서 추출한 약 27,800개 한자의 음가를
  가지고 있다. 음가의 정렬은 Unihan의 \texttt{kHangul}을 앞세웠으나
  다만 \mbox{U+6635} \mbox{U+66B1} \mbox{U+8D05}는 \texttt{kKorean} 값을
  맨 앞에 두었다. 한편, 호환한자의 음가와 같은 음가는 두번째 이하로 돌렸다.}

\begin{verbatim}
  \readhanjadictionary{召史}{조이}
  \readhanjadictionary{召史}{}
\end{verbatim}
한자 읽기 낱말 사전에 항목을 추가하거나 삭제할 수 있다.

\begin{verbatim}
  \begin{readhanja} ... \end{readhanja}
\end{verbatim}
독음 달기는 readhanja 환경 안 또는 \verb|\readhanja| 명령 이후에만 동작한다.

\begin{verbatim}
  \t4樂
  \t`요樂
\end{verbatim}
예컨대 樂 글자의 여러 음가 가운데 네번째 음가를 선택한다(제1행).
또는 한글 음가를 직접 지시할 수도 있다(제2행).\footnote{여기서 \texttt{`요}는 십진수 50836과 같다.
  다시 말해 유니코드 한글 음절 코드포인트에 해당하는 큰 숫자라면 그 숫자가 막바로 음가를 지시한다.}
readhanja 그룹 안에서만 이렇게 동작한다.

\begin{verbatim}
  樂^^^^fe02
\end{verbatim}
\mbox{U+FE00}부터 \mbox{U+FE02}까지의 문자를 입력하면 직전 한자의 음가를
바꿀 수 있다. 따라서 예의 \mbox{U+FE02}는 네 번째 음가를 지칭한다.
이 기능은 호환 한자를 가지는 글자에 대해서만 동작한다.\footnote{
\url{http://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt}}

\section*{Example}

\begingroup\linespread{1.2}
\begin{verbatim}
  \documentclass[12pt, % draft,
    ]{article}
  \usepackage[hangul]{kotex}
  \setmainhangulfont{HCR Batang LVT}
  \usepackage{readhanja}
  \readhanjahangulfont{HCR Batang LVT}[Color=AA0000,Scale=.7]
  \begin{document}
  \section*{大學}
  \begin{readhanja}
    大學之道 在明明德 在\t`신親民 在止於至善。
    知止而后有定 定而后能靜 靜而后能安 安而后能慮 慮而后能得。
    物有本末 事有終始 知所先後 \t2則近道矣。
    古之欲明明德於天下者 先治其國 欲治其國者 先齊其家
    欲齊其家者 先修其身 欲修其身者 先正其心 欲正其心者
    先誠其意 欲誠其意者 先致其知 致知在格物。
    物格而后知至 知至而后意誠 意誠而后心正 心正而后身修
    身修而后家齊 家齊而后國治 國治而后天下平。
    自天子以至於庶人 壹是皆以修身為本。
    其本亂而末治者否矣 其所厚者薄 而其所薄者厚 未之有也。
  \end{readhanja}
  \end{document}
\end{verbatim}
\endgroup

\def\greatlearning{%
  \parindent=1em
  大學之道 在明明德 在\t`신親民 在止於至善。
  知止而后有定 定而后能靜 靜而后能安 安而后能慮 慮而后能得。
  物有本末 事有終始 知所先後 \t2則近道矣。
  古之欲明明德於天下者 先治其國 欲治其國者 先齊其家
  欲齊其家者 先修其身 欲修其身者 先正其心 欲正其心者
  先誠其意 欲誠其意者 先致其知 致知在格物。
  物格而后知至 知至而后意誠 意誠而后心正 心正而后身修
  身修而后家齊 家齊而后國治 國治而后天下平。
  自天子以至於庶人 壹是皆以修身為本。
  其本亂而末治者否矣 其所厚者薄 而其所薄者厚 未之有也。
  \par
}

\def\readndo#1{\par\bigskip #1\texttt{\small\detokenize{#1}}\par\nobreak\medskip}

\section*{大學}

\spaceskip.5em plus.25em minus.25em

\begin{readhanja}
\greatlearning
\readndo{\readhanjaraise{0pt} \readhanjalocate{post}}\greatlearning
\begingroup\linespread{1.67}\selectfont
  \readndo{\readhanjalocate{top}}\greatlearning
  \readndo{\readhanjalocate{bottom}}\greatlearning
\endgroup
\end{readhanja}
\bigskip
\readndo{\readhanjahangulfont{Noto Sans CJK KR}[Color=0055AA, Scale=.8]}
  \vskip-\bigskipamount
  \vskip-\medskipamount
\begin{readhanja}
  \readndo{\directlua{readhanja.draft=true} \readhanjalocate{post}}\greatlearning
  \readndo{\readhanjalocate{pre} \readhanjaraise{.5ex}}\greatlearning
\end{readhanja}

\section*{License}
\spaceskip.333em plus.167em minus.111em

Public Domain,
with an exception of \verb|hanja2hangul.lua| which is in LGPL.

\end{document}
