summaryrefslogtreecommitdiff
path: root/language
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-01-22 03:02:40 +0000
committerNorbert Preining <norbert@preining.info>2020-01-22 03:02:40 +0000
commitbe88ab29c165e6b16091443c3e8f36c4febf8a27 (patch)
tree04ba1ae29e519f3ed027cd13b3444c841a0b8544 /language
parentb3f7f9ce3596843d5cf8e97c1855d9a15c0e4f47 (diff)
CTAN sync 202001220302
Diffstat (limited to 'language')
-rw-r--r--language/japanese/zxjatype/LICENSE2
-rw-r--r--language/japanese/zxjatype/README-ja.md108
-rw-r--r--language/japanese/zxjatype/README.md1
-rw-r--r--language/japanese/zxjatype/zxjatype.sty99
-rw-r--r--language/korean/pmhanguljamo/README.md22
-rw-r--r--language/korean/pmhanguljamo/doc/ABOUT_FONTS_TO_COMPILE.md16
-rw-r--r--language/korean/pmhanguljamo/doc/munjangganghwa.jpgbin0 -> 143726 bytes
-rw-r--r--language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdfbin0 -> 115873 bytes
-rw-r--r--language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex453
-rw-r--r--language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdfbin0 -> 508007 bytes
-rw-r--r--language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex793
-rw-r--r--language/korean/pmhanguljamo/pmhanguljamo.sty630
12 files changed, 2097 insertions, 27 deletions
diff --git a/language/japanese/zxjatype/LICENSE b/language/japanese/zxjatype/LICENSE
index fbe40a0146..0c208cdd77 100644
--- a/language/japanese/zxjatype/LICENSE
+++ b/language/japanese/zxjatype/LICENSE
@@ -1,6 +1,6 @@
The MIT License
-Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+Copyright (c) 2009-2020 Takayuki YATO (aka. "ZR")
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/language/japanese/zxjatype/README-ja.md b/language/japanese/zxjatype/README-ja.md
index 9574b7b40c..e65f816d6d 100644
--- a/language/japanese/zxjatype/README-ja.md
+++ b/language/japanese/zxjatype/README-ja.md
@@ -23,22 +23,122 @@ LaTeX: XeLaTeX と xeCJK パッケージを利用した日本語組版の支援
zxjatype パッケージ ― 本体
---------------------------
-まだ解説が書けておりません…。基本的な機能の説明については以下の Web
-ページで行っていますのでそちらを参照してください。
+基本的な機能の説明については以下の Web ページでも行っているのでそちらも
+参照してほしい。
* [ZXjatype パッケージ]
(http://zrbabbler.sp.land.to/zxjatype.html)
+### パッケージ読込
+
+xeCJK と一緒に読み込む場合:
+
+ \usepackage[<オプション>...,<xeCJKのオプション>...]{zxjatype}
+
+xeCJK と別個に読み込む場合:
+
+ \usepackage[<xeCJKのオプション>...]{xeCJK}
+ \usepackage[<オプション>...]{zxjatype}
+
+有効なオプションは以下の通り:
+
+ * `default`:(既定)パッケージ読込直後に日本語用の設定への切替を行う。 (`\zxjapanesestyle` を実行する。)
+ * `nodefault`: `default` の否定。 xeCJK の初期設定が保持される。
+ * `CJKchecksingle`:(既定)xeCJK の文字ウィドウ抑制機能を有効にする。
+ (`CheckSingle=true` を設定する。)
+ * `noCJKchecksingle`: `CJKchecksingle` の否定。xeCJK の初期設定の通り
+ で文字ウィドウ抑制機能が無効になる。
+ * `adjustcharclass`:(既定)日本語の組版規則に合わせて xeCJK の文字
+ クラス設定を変更する。
+ * `noadjustcharclass`: `adjustcharclass` の否定。 xeCJK の文字クラス
+ 設定を変更しない。
+ * `kanakinsoku`: 小書き仮名を行頭禁則の対象にする。具体的には、これら
+ の文字の文字クラスを「閉じ括弧類」に変更する。
+ ※この扱いには副作用があって、直後に約物がある場合の空きが不正になる
+ (約物が並んでいると解釈されるため)。
+ * `nokanakinsoku`:(既定)小書き仮名を行頭禁則の対象にしない。具体的
+ にはこれらの文字の文字クラスを「通常 CJK 文字」に変更する。
+ ※`kanakinsoku`・`nokanakinsoku` の何れの場合も xeCJK の設定に変更を
+ 加えることに注意。変更したくない場合は `noadjustcharclass` にする。
+ * `useinhibitglue`: pTeX と互換の `\inhibitglue` 命令を定義する。
+ ※ただし現状の実装は不完全で問題があることが判っている。
+ * `nouseinhibitglue`:(既定) `useinhibitglue` の否定。`\inhibitglue`
+ は定義されない。
+ * `prefercjk`: 一部の記号類の文字クラスを「非 CJK 文字」(欧文扱い)
+ から「通常 CJK 文字」(和文扱い)に変更する。
+ ※和文扱いの範囲が LuaTeX-ja の初期状態とほぼ同じになる。
+ * `noprefercjk`:(既定)`prefercjk` の否定。
+
+### 機能
+
+xeCJK の CJK フォントファミリ設定において、`\setjafontscale` で設定された
+和文スケール値が `Scale` の値として設定される。以下の命令が対象となる。
+
+ - `\setCJKmainfont`
+ - `\setCJKsansfont`
+ - `\setCJKmonofont`
+ - `\setCJKfamilyfont`
+
+zxjatype の独自の命令。
+
+ * `\setjafontscale{<実数>}`: 和文スケール値を設定する。
+ ※空の引数も可能で、この場合は和文スケール値設定が抑止される。
+ * `\>`: 明示的に和欧文間空白を出力する。
+ ※数式モード中では LaTeX カーネルの定義が維持される。
+ ※他のパッケージで再定義が行われている場合は定義されない。
+ * `\inhibitglue`: その箇所で和文文字間に自動的に入る空白を抑制する。
+ ※`useinhibitglue` オプション指定時にのみ定義される。
+ * `\<`: `\inhibitglue` と同義。
+ ※他のパッケージで再定義が行われている場合は定義されない。
+ * `\textrawen{<テキスト>}`: 和文処理を無効化し、引数のテキストを欧文
+ フォントで出力する。
+ * `rawentext` 環境: `\textrawen` の環境版。
+ * `\textrawja{<テキスト>}`: 和文処理を無効化し、引数のテキストを和文
+ フォントで出力する。
+ * `rawjatext` 環境: `\textrawja` の環境版。
+ * `\zxjapanesestyle`: 日本語用の設定に切り替える。
+ ※この命令はユーザによる再定義が可能。
+ * `\zxusejapaneseparameter`: 和欧文間空白と和文間空白を日本語組版に
+ 適した値にする。
+ * `\zxuseoriginalparameter`: 和欧文間空白と和文間空白を xeCJK の初期
+ 設定に戻す。
+
+なお、`\zxjapanesestyle` の初期値は以下のとおりである:
+
+ \xeCJKsetup{
+ AllowBreakBetweenPuncts = true,
+ PunctStyle = fullwidth,
+ }%
+ \zxusejapaneseparameters
+
+### 旧版との互換のための命令
+
+ * `\setjamainfont`: xeCJK の `\setCJKmainfont` と同義。
+ * `\setjasansfont`: xeCJK の `\setCJKsansfont` と同義。
+ * `\setjamonofont`: xeCJK の `\setCJKmonofont` と同義。
+ * `\setjafamilyfont`: xeCJK の `\setCJKfamilyfont` と同義。
+ * `\jafamily`: xeCJK の `\CJKfamily` と同義。
+
+### 参考:0.6 版で廃止された機能
+
+ * `\(no)jafamilyinverbatim` 命令
+
更新履歴
--------
+ * Version 0.7 ‹2020/01/22›
+ - xeCJK 2.x 版の使用を非推奨(将来廃止予定)とする。
+ - `(no)prefercjk` オプションを新設。
+ - 和文スケール値を `\zxjatypeJaScale` に格納する。
+ - バグ修正。
+
* Version 0.6c ‹2018/05/03›
- バグ修正。
* Version 0.6b ‹2017/08/03›
- - (試験的) `(no)useinhibitglue` オプション。
- - (試験的) `(no)kanakinsoku` オプション。
+ - `(no)useinhibitglue` オプション。
+ - `(no)kanakinsoku` オプション。
* Version 0.6a ‹2017/08/02›
- バグ修正。
diff --git a/language/japanese/zxjatype/README.md b/language/japanese/zxjatype/README.md
index 2c5dda651d..de9a5cc620 100644
--- a/language/japanese/zxjatype/README.md
+++ b/language/japanese/zxjatype/README.md
@@ -44,6 +44,7 @@ All other options are passed to xeCJK.
Revision History
----------------
+ * Version 0.7 ‹2020/01/22›
* Version 0.6c ‹2018/05/03›
* Version 0.6b ‹2017/08/03›
* Version 0.6a ‹2017/08/02›
diff --git a/language/japanese/zxjatype/zxjatype.sty b/language/japanese/zxjatype/zxjatype.sty
index dba68ee443..d507d99a77 100644
--- a/language/japanese/zxjatype/zxjatype.sty
+++ b/language/japanese/zxjatype/zxjatype.sty
@@ -1,7 +1,7 @@
%%
%% This is file 'zxjatype.sty'.
%%
-%% Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2009-2020 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,11 +10,12 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{zxjatype}[2018/05/03 v0.6c ZX Japanese typeset]
+\ProvidesPackage{zxjatype}[2020/01/22 v0.7 ZX Japanese typeset]
\RequirePackage{ifxetex}\RequireXeTeX
%% code guards
\edef\zxjt@restore@codes{%
+ \catcode33=\the\catcode33%
\catcode34=\the\catcode34%
\catcode39=\the\catcode39%
\catcode43=\the\catcode43%
@@ -24,11 +25,13 @@
\catcode58=\the\catcode58%
\catcode60=\the\catcode60%
\catcode62=\the\catcode62%
- \catcode63=\the\catcode63%
\catcode94=\the\catcode94%
\catcode96=\the\catcode96%
+ \catcode124=\the\catcode124%
+ \catcode126=\the\catcode126%
\endlinechar=\the\endlinechar%
\relax}
+\catcode33=12 % <!>
\catcode34=12 % <">
\catcode39=12 % <'>
\catcode43=12 % <+>
@@ -38,9 +41,10 @@
\catcode58=12 % <:>
\catcode60=12 % <<>
\catcode62=12 % <>>
-\catcode63=12 % <?>
\catcode94=7 % <^>
\catcode96=12 % <`>
+\catcode124=12 % <|>
+\catcode126=13 % <~>
\AtEndOfPackage{%
\zxjt@restore@codes
\let\zxjt@restore@codes\@undefined
@@ -49,7 +53,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% BOOTSTRAP CODE
-%
+%
%% definitions
\def\zxjt@pkgname{zxjatype}
@@ -58,7 +62,8 @@
\newif\ifzxjt@adjustcharclass
\newif\ifzxjt@kanakinsoku
\newif\ifzxjt@useinhibitglue
-\providecommand*\bxDebug{\@gobble}
+\newif\ifzxjt@prefercjk
+\providecommand\bxDebug[1]{}
%% process options
\DeclareOption{default}{\zxjt@defaulttrue}
@@ -76,6 +81,8 @@
\DeclareOption{nokanakinsoku}{\zxjt@kanakinsokufalse}
\DeclareOption{useinhibitglue}{\zxjt@useinhibitgluetrue}
\DeclareOption{nouseinhibitglue}{\zxjt@useinhibitgluefalse}
+\DeclareOption{prefercjk}{\zxjt@prefercjktrue}
+\DeclareOption{noprefercjk}{\zxjt@prefercjkfalse}
%
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{xeCJK}}
\ExecuteOptions{default,CJKchecksingle,adjustcharclass}
@@ -90,6 +97,10 @@
\let\zxjt@go@to@main\@empty
}{%
\bxDebug{xeCJK v2.x found.}%
+ \PackageWarningNoLine\zxjt@pkgname
+ {!!!!!!!! IMPORTANT !!!!!!!!\MessageBreak
+ Support for xeCJK v2.x will be *dropped*\MessageBreak
+ in the near future}
\long\def\zxjt@go@to@main#1\zxjt@begin@old@code{}%
}
@@ -130,6 +141,11 @@
\ifzxjt@useinhibitglue
\bool_set_true:N \l__zxjt_useinhibitglue_bool
\fi
+%% \l__zxjt_prefercjk_bool
+\bool_new:N \l__zxjt_prefercjk_bool
+\ifzxjt@prefercjk
+ \bool_set_true:N \l__zxjt_prefercjk_bool
+\fi
%%-------------------------------------- error messages
@@ -150,8 +166,8 @@
}
\__zxjt_msg_new:nn { jafamilyinverbatim-disabled }
{
- \token_to_str:N \(no)jafamilyinverbatim \c_space_tl
- ~is~disabled~in~this~version.
+ \token_to_str:N \( no)jafamilyinverbatim~
+ is~disabled~in~this~version.
}
\__zxjt_msg_new:nn { CJKfam-failed }
{
@@ -181,9 +197,9 @@
% (A mere \scan_stop: suffices?)
\cs_new:Nn \__zxjt_boundary:
{
- \ifhmode
+ \if_mode_horizontal:
\hbox:n {}
- \fi
+ \fi:
}
%% \__zxjt_leavevmode:
@@ -259,7 +275,7 @@
\AtBeginDocument
{
\cs_set_eq:NN \__zxjt_after_decl_CJKfam:n \__zxjt_after_decl_CJKfam_db:n
- \seq_remove_duplicates:N \g__zxjt_CJKfam_seq
+ \seq_gremove_duplicates:N \g__zxjt_CJKfam_seq
\seq_map_function:NN \g__zxjt_CJKfam_seq \__zxjt_after_decl_CJKfam:n
\seq_gclear:N \g__zxjt_CJKfam_seq
}
@@ -332,7 +348,7 @@
\bxDebug { family( #1 )~<=~ \g__zxjt_onefam_info_tl }
\tl_if_empty:NF \g__zxjt_onefam_info_tl
{
- \prop_put:NnV \g__zxjt_CJKfam_prop { #1 } \g__zxjt_onefam_info_tl
+ \prop_gput:NnV \g__zxjt_CJKfam_prop { #1 } \g__zxjt_onefam_info_tl
}
}
@@ -360,6 +376,8 @@
% The encoding used for CJK-families.
\tl_new:N \g__zxjt_encoding_tl
\tl_gset:Nn \g__zxjt_encoding_tl { EU1 }
+\cs_if_exist:NT \g_fontspec_encoding_tl
+ { \tl_set_eq:NN \g__zxjt_encoding_tl \g_fontspec_encoding_tl }
%% \__zxjt_use_CJKfam:
% Switches the NFSS family to the family corresponding to the current CJK-
@@ -501,6 +519,7 @@
"30E7, "30EE, "30F5, "30F6, "30FC, "31F0, "31F1, "31F2, "31F3, "31F4,
"31F5, "31F6, "31F7, "31F8, "31F9, "31FA, "31FB, "31FC, "31FD, "31FE,
"31FF, "309D, "309E, "30FD, "30FE,
+ "1B150, "1B151, "1B152, "1B164, "1B165, "1B166, "1B167,
}
\xeCJKDeclareCharClass { FullRight }
{
@@ -518,6 +537,36 @@
\xeCJKsetup { LongPunct+ = { ^^^^2015 } }
}
+\bool_if:NT \l__zxjt_prefercjk_bool
+ {
+ \clist_map_inline:nn
+ {
+ "2002, "2010, "2011, "2016, "201A, "201E, "2020, "2021,
+ "2022, "2030, "2032, "2033, "2039, "203A, "203B, "203C,
+ "203E, "203F, "2042, "2044, "2047, "2048, "2049, "2051
+ }
+ { \XeTeXcharclass #1 = \c__zxjt_CJK_class_int }
+ \clist_map_inline:nn
+ {
+ { "2070, "243F },
+ { "2460, "27BF },
+ { "2900, "29FF },
+ { "2B00, "2BFF },
+ { "FE50, "FE6F },
+ { "1F100, "1F1DF }
+ }
+ {
+ \clist_set:Nn \l_tmpa_clist {#1}
+ \int_step_inline:nnn
+ { \clist_item:Nn \l_tmpa_clist { 1 } }
+ { \clist_item:Nn \l_tmpa_clist { 2 } }
+ {
+ \int_compare:nNnF { \XeTeXcharclass ##1 } = { \c__zxjt_CJK_class_int }
+ { \XeTeXcharclass ##1 = \c__zxjt_CJK_class_int }
+ }
+ }
+ }
+
%%-------------------------------------- public commands
%%<*> \setjamainfont / \setjasansfont / \setjamonofont
@@ -571,23 +620,29 @@
}
}
-%% \__zxjt_scale_tl
+%% \l__zxjt_scale_tl
% The scale value to be applied to CJK fonts.
-\tl_new:N \__zxjt_scale_tl
+\tl_new:N \l__zxjt_scale_tl
%% \l__zxjt_scale_spec_tl
\tl_new:N \l__zxjt_scale_spec_tl
+%%<+> \zxjatypeJaScale
+% The scale value to be applied to CJK fonts.
+% (Same as \l__zxjt_scale_tl, but developer-level public.)
+
%%<*> \setjafontscale{<real>}
-%% Sets the value of \__zxjt_scale_tl, which defaults to 1.
+%% Sets the value of \l__zxjt_scale_tl, which defaults to 1.
\NewDocumentCommand \setjafontscale { m }
{
% NB: the argument is not expanded
- \tl_set:Nn \__zxjt_scale_tl { #1 }
- \tl_if_blank:VTF \__zxjt_scale_tl
+ \tl_set:Nn \l__zxjt_scale_tl { #1 }
+ \tl_set_eq:NN \zxjatypeJaScale \l__zxjt_scale_tl
+ \tl_set_eq:cN { __zxjt_scale_tl } \l__zxjt_scale_tl
+ \tl_if_blank:VTF \l__zxjt_scale_tl
{ \tl_clear:N \l__zxjt_scale_spec_tl }
- {
+ {
\tl_set:Nn \l__zxjt_scale_spec_tl
- { Scale = \__zxjt_scale_tl , }
+ { Scale = \l__zxjt_scale_tl , }
}
}
@@ -616,11 +671,11 @@
{
\cs_set:Npn \>
{
- \ifmmode
+ \if_mode_math:
\mskip \medmuskip
- \else
+ \else:
\CJKecglue \scan_stop:
- \fi
+ \fi:
}
}
}
diff --git a/language/korean/pmhanguljamo/README.md b/language/korean/pmhanguljamo/README.md
new file mode 100644
index 0000000000..061bcbcf04
--- /dev/null
+++ b/language/korean/pmhanguljamo/README.md
@@ -0,0 +1,22 @@
+# pmhanguljamo
+
+## About
+
+This LaTeX package provides Hangul *transliteration* input method, which enables to typeset Korean Letters (Hangul) with the help of proper fonts. The name is from “Poor- man’s Hangul Jamo Input Method.”
+
+It is mainly for the people who have a system without Korean IM, but want to typeset Hangul in their document. Not only modern Hangul, but so-colled “Old Hangul” characters that uses the lost letters such as ‘Arae-A’, ‘Yet Ieung’ or ‘Pan-Sios’ etc. can also be typeset.
+
+XeLaTeX recommended. And the legacy pdfTeX is not supported.
+
+## Copyright and License
+
+(C) 2020 Kangsoo Kim <modviv2k15 at gmail.com>
+
+This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Kangsoo Kim. \ No newline at end of file
diff --git a/language/korean/pmhanguljamo/doc/ABOUT_FONTS_TO_COMPILE.md b/language/korean/pmhanguljamo/doc/ABOUT_FONTS_TO_COMPILE.md
new file mode 100644
index 0000000000..836bdf7dbc
--- /dev/null
+++ b/language/korean/pmhanguljamo/doc/ABOUT_FONTS_TO_COMPILE.md
@@ -0,0 +1,16 @@
+# Many fonts
+
+To compile this document successfully, the following fonts must be installed:
+
+ * Noto Serif CJK (kr), Noto Sans CJK (kr) and Noto Sans Mono CJK (kr)
+ * HCR LVT
+ * Nanum Myeongjo Yet Hangeul, and Nanum Barun Gothic Yet Hangeul
+ * KoPubWorld Batang and KoPubWorld Gothic
+ * Malgun Gothic
+ * Jeonju Wanpanbon Che
+ * Jeju Fonts
+ * Adobe Myungjo Std Medium
+
+# XeLaTeX
+
+run `xelatex` on the source file. \ No newline at end of file
diff --git a/language/korean/pmhanguljamo/doc/munjangganghwa.jpg b/language/korean/pmhanguljamo/doc/munjangganghwa.jpg
new file mode 100644
index 0000000000..cbd1362a6e
--- /dev/null
+++ b/language/korean/pmhanguljamo/doc/munjangganghwa.jpg
Binary files differ
diff --git a/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf b/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf
new file mode 100644
index 0000000000..b306c193e4
--- /dev/null
+++ b/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf
Binary files differ
diff --git a/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex b/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex
new file mode 100644
index 0000000000..83063ab4b3
--- /dev/null
+++ b/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex
@@ -0,0 +1,453 @@
+%!TEX program = xelatex
+%
+% pmhanguljamo-doc.tex
+%. written by Kangsoo Kim, 2020.
+%
+\documentclass[a4paper]{article}
+\usepackage{fontspec}
+%\setmainfont{Noto Serif}
+%\setsansfont{Noto Sans}
+%\setmonofont{Noto Sans Mono}
+\setmainfont{XITS}
+
+\usepackage{hologo}
+\newcommand*\XeTeX{\hologo{XeTeX}}
+\newcommand*\XeLaTeX{\hologo{XeLaTeX}}
+\newcommand*\LuaTeX{\hologo{LuaTeX}}
+\newcommand*\LuaLaTeX{\hologo{LuaLaTeX}}
+
+\usepackage{pmhanguljamo}
+\usepackage[colorlinks]{hyperref}
+
+\usepackage{polyglossia}
+\setotherlanguage{korean}
+\newfontfamily\hangulfont{UnBatang.ttf}[Script=Hangul]
+%\newcommand*\jamo[1]{\begingroup\hangulfont\jamoword{#1}}
+\newcommand*\jamo[1]{\textkorean{\jamoword{#1}}}
+
+
+
+\newcommand*\pkg[1]{\textsf{#1}\index{#1}\index{Package!#1}}
+\newcommand*\thispkg{\pkg{pmhanguljamo}}
+%\maxsecnumdepth{section}
+
+\begin{document}
+
+\title{Poorman's Hangul Jamo Input Method \\ \Large \texttt{pmhanguljamo.sty} }
+\author{Kangsoo Kim}
+\date{20 Jan 2020\quad version 0.2.1}
+
+\maketitle
+
+\tableofcontents
+
+\section{Introduction}
+This \LaTeX\ package provides Hangul\footnote{%
+ \emph{Hangul} is the Korean alphabet
+ to write the Korean language. In both South and North Korea,
+ the standard writing system uses Hangul.}
+\emph{transliteration} input method, which
+enables to typeset Korean Letters (Hangul) with the help of proper fonts.
+The name is from ``Poorman's Hangul Jamo Input Method.'' It is mainly for
+the people who have a system without Korean IM, but want to typeset
+Hangul in their document.
+Not only modern Hangul, but so-colled ``Old Hangul'' characters
+that uses the lost letters such as `Arae-A', `Yet Ieung' or `Pan-Sios' etc.\ can also be typeset.
+
+\XeLaTeX\ or \LuaLaTeX\ is required (\XeLaTeX\ recommended). The legacy pdf\TeX\ is not supported.
+The Korean Language supporting packages such as \pkg{xetexko} or \pkg{luatexko} (in the ko.\TeX\ bundle)
+or \pkg{polyglossia} under \XeLaTeX\
+are recommended, but without them typesetting Hangul is of no problem
+with this package \thispkg.
+
+\section{Usage}
+
+\subsection{Loading the package}
+
+Put the following line in your preamble:
+\begin{verbatim}
+\usepackage{pmhanguljamo}
+\end{verbatim}
+
+\subsection{Commands and Environment Provided}
+
+The main command to typeset Hangul is \verb|\jamoword|.
+
+\begin{quote}
+Input:
+\verb|\jamoword{myec dan/e/ga or su iss/svb/ni/da/.}|\\
+Result: \textkorean{\jamoword{myec dan/e/ga or su iss/svb/ni/da/.}}
+\end{quote}
+
+The argument of the command consists of roman alphabets
+and a few marks that represent the transliteration of Hangul Jamo.
+The transliteration rule will be explained in the section~\ref{sec:rule} (page~\pageref{sec:rule}).
+
+And an environment named \emph{jamotext} is provided.
+In the environment, multiple paragraphs can be located. So, it is
+suitable to typeset longer text stuffs. For example,
+\begin{verbatim}
+\begin{jamotext}
+jug/nvn nar/gga/ji ha/nvr/vr u/re/re \\
+han jem bu/ggv/rem ebs/gi/rvr
+
+ip/sai/ei i/nvn ba/ram/ei/do \\
+na/nvn goi/ro/oa/haiss/da/.
+\end{jamotext}
+\end{verbatim}
+The result will be like this:
+\begin{quote}
+\begin{korean}
+\begin{jamotext}
+jug/nvn nar/gga/ji ha/nvr/vr u/re/re \\
+han jem bu/ggv/rem ebs/gi/rvr
+
+ip/sai/ei i/nvn ba/ram/ei/do \\
+na/nvn goi/ro/oa/haiss/da/.
+\end{jamotext}
+\end{korean}
+\end{quote}
+
+
+\subsection{Preamble of Document}
+
+Without any other packages, you can type Hangul. Note that
+proper fonts should be declared for Hangul, using \pkg{fontspec}.
+
+\begin{verbatim}
+\documentclass{article}
+\usepackage{fontspec}
+\usepackage{pmhanguljamo}
+
+\begin{document}
+\fontspec[Script=Hangul]{UnBatang.ttf}
+\jamoword{an/nyex/ha/sei/yo}
+\end{document}
+\end{verbatim}
+
+\texttt{UnBatang.ttf} is a font shipped in \pkg{unfonts-core} package of \TeX\,Live.
+Not all Korean fonts can be available to typeset so-called `Old Hangul',
+because they happen to lack
+the feature of composing Korean Syllables from conjoining Jamo codes. Fortunately,
+we have a few more fonts besides \texttt{UnBatang} that are \emph{proper}
+and freely available, which are listed in the section~\ref{sec:font}.
+In \TeX\,Live distribution, \texttt{UnBatang} is the only \emph{proper} one.
+
+The \pkg{polyglossia} package provides Korean language support. This package \thispkg\
+can be used with it. The following is an example.
+
+\begin{verbatim}
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{english}
+\setotherlanguage{korean}
+\newfontfamily\hangulfont{UnBatang.ttf}[Script=Hangul]
+\usepackage{pmhanguljamo}
+
+\begin{document}
+\begin{korean}
+\jamoword{han/gvr/vr si/hem/hab/ni/da/.}
+\end{korean}
+\end{document}
+\end{verbatim}
+
+Or the ko.\TeX\ package bundle can be used together.
+
+\begin{verbatim}
+\documentclass{article}
+\usepackage{kotex}
+\usepackage{pmhanguljamo}
+\setmainhangulfont{UnBatang.ttf}[Script=Hangul]
+
+\begin{document}
+\jamoword{na/ras/mar/ss@/mi}
+\end{document}
+\end{verbatim}
+
+In any case, the option \verb|[Script=Hangul]| should be given
+to the font settings for Hangul. For more information, see section~\ref{sec:font}.
+
+The Korean writing system does not have hyphenation rule.
+The line breaking can arise at the end of mostly every character. Therefore,
+without Korean language supporting packages the line breaking and
+justification of paragraphs will not be acceptable.
+But when just single or a few Hangul characters are needed, for example in the case of typesetting
+the author's name in Hangul, this package provides a casual way to print them out.
+
+
+\section{Transliteration Rule}\label{sec:rule}
+
+\subsection{Tone Marks and Syllable Serapator}
+
+This package assumes that every Hangul syllable has Tone Mark which
+must be explicitly put at the end of it. Table~\ref{tab:tonemark}
+shows the input scheme of them.
+
+\begin{table}[h]
+\centering
+\caption{Tone Marks} \label{tab:tonemark}
+\begin{tabular}{c|l}
+\hline
+input & description \\ \hline
+\texttt{/} & for \emph{PyeongSeong}, no dot \\ \hline
+\texttt{;} & for \emph{GeoSeong}, single dot on the left of a character, [U+302E] \\ \hline
+\texttt{:} & for \emph{SangSeong}, double dots on the left of a character, [U+302F] \\ \hline
+\end{tabular}
+\end{table}
+
+The tone marks were used in the 15th century, but in the modern Korean they are
+out of use. Nevertheless the \verb|/| mark in this package is also used in order to depict
+the completion of composing a syllable --- i.e., syllable separator. So DO NOT miss it.
+
+However, it is possible to omit `\verb|/|' mark at the end of a word, i.e., just before \texttt{<space>}, or at the end of the argument of \verb|\jamoword|.
+Note that before the puctuation mark --- period , comma, etc., omitting \verb|/| is not permitted.
+
+\subsection{Consonants}
+
+Table~\ref{tab:cons} shows the transliteration rule for the consonants which are
+used in the leading and trailing position of a syllable.
+
+\begin{table}[h]
+\centering
+\caption{Consonants} \label{tab:cons}
+\fontspec{UnDotum.ttf}
+\begin{tabular}{ll|ll|ll|ll}
+\hline
+ㄱ & g & ㄴ & n & ㄷ & d & ㄹ & r \\
+ㅁ & m & ㅂ & b & ㅅ & s & ㅇ & \textbf{x} \\
+ㅈ & j & ㅊ & c & ㅋ & k & ㅌ & t \\
+ㅍ & p & ㅎ & h & \char"3181 & \textbf{q} & \char"317F & \textbf{z} \\
+\char"3186 & \textbf{f} & & w & & & & \\
+\hline
+\end{tabular}
+\end{table}
+
+\begin{enumerate}
+\item The corresponding letters ``g, n, d, m, b, s, j, k, t, p, h'' are
+the same as Korean Romanization Method (RRK).\footnote{The \emph{Revised Romanization of Korean} 1995:2000 is the official Korean language romanization system in South Korea.}
+\item The letter for `\textkorean{\jmcc{R}}' is allocated to \texttt{r} not \texttt{l}.
+\item The letter `c' is for `\textkorean{\jmcc{C}}'. In the RRK, it is `\texttt{ch}' there.
+\item Note that the letter for `\textkorean{\jmcc{X}}' is \texttt{x}, which is a bit strange, but commonly accepted `\texttt{ng}' was not to be chosen. It should be reserved for `\textkorean{\jamoword{@ng/}}'
+\item And the letters `q, z, f' are more freely selected. These letters are the lost ones in Modern Korean.
+\item The letter `w' is chosen to present \emph{Choseong Filler}.
+\item The letters `l' and `lr' are for very rare case. In the 15th century Korean, `\textkorean{\jamoword{sla}}' and
+`\textkorean{\jamoword{slra}}' were distinguishable. `sl' is chosen for the SIOS with left branch being longer, and `slr' means right branch longer. The same is the case `ssl', `sslr', `jl', `jlr' etc.
+\item The `light labial consonants', \textkorean{\jmcc{BX}, \jmcc{PX}} in the Old Hangul can be input as `bx, px, bbx, mx'.
+\item In the Modern Korean, only `gg, dd, bb, ss, jj' are additionally permitted in the leading consonant position,
+But in the Old Hangul this limitation was not applied. So \emph{Choseong} can have multiple consonants, e.g., `bsg', `bsd', `ss', `sd' etc.
+\item The leading `zero consonant' can be omitted. So if a syllable begins with vowel, then the leading `\textkorean{\jmcc{X}}' will appear. You can write the leading `x' of a syllable or not.
+For example, `\verb|\jamoword{xax}|' and `\verb|\jamoword{ax}|' will generate the same result `\jamo{xax}'.
+\end{enumerate}
+
+\subsection{Vowels}
+
+Table~\ref{tab:vow} shows the transliteration rule for vowels.
+
+\begin{table}[h]
+\centering
+\caption{Vowels}\label{tab:vow}
+\ttfamily\fontspec{UnDotum.ttf}
+\begin{tabular}{ll|ll|ll|ll|ll}
+\hline
+ㅏ & a & ㅓ & e & ㅗ & o & ㅜ & u & ㅡ & \textbf{v} \\
+ㅣ & i & \jmcc{@} & \textbf{@} & & & & & & \\ \hline
+ㅑ & ya & ㅕ & ye & ㅛ & yo & ㅠ & yu & \kern-.3em\jmcc{@}\kern-.6em\jmcc{@} & @@ \\ \hline
+ㅐ & ay, ai & ㅔ & ey, ei & ㅚ & oy, oi & ㅟ & uy, ui & ㅢ & vy, vi \\
+ㅒ & yay, yai & ㅖ & yey, yei & \jmcc{YOI} & yoi & \jmcc{YUI} & yui & \jmcc{@I} & @i \\ \hline
+ㅘ & oa & ㅙ & oay, oai & ㅝ & ue & ㅞ & uey, uei & & \\ \hline
+\end{tabular}
+\end{table}
+
+\begin{enumerate}
+\item The rule for vowels may look unfamiliar. But it is simple and easily rememberable.
+
+\item The letter `v' is never considered to be a vowel. But this package
+determined it to stand for the vowel `\textkorean{\jmcc{V}}'. In fact,
+the roman alphabets fall short of the vowels. This allocation is arbitrary.
+
+\item The lost `Arae-A' is allocated to `@', and the rare `Double Arae-A' to `@@', which are forgotten vowels in Modern Korean.
+\end{enumerate}
+
+\subsection{Compatibility Jamos}
+
+The compatibility Jamo block in Unicode contains several Hangul Jamo characters,
+which cannot be used to compose Hangul syllables, and are considered
+independent Jamo characters respectively.
+
+To input the compatibility Jamos in the arguments of \verb|\jamoword| or \verb|jamotext|,
+you are to type them in their capital letters (upper cases). And every compatibility Jamo has to be
+separated with syllable separator --- \verb|/|.
+Because the \verb|@| character has no upper case, write \verb|W| instead of \verb|@| to display compatibility `Arae-A'.
+
+Here is an example:
+\begin{quote}
+\begin{verbatim}
+\jamoword{W/nvn a/rai/a/ra/go bu/rv/go A/oa bi/svs/ha/gei irg/nvn/da}
+\end{verbatim}
+\textkorean{\jamoword{W/nvn a/rai/a/ra/go bu/rv/go A/oa bi/svs/ha/gei irg/nvn/da}}
+\end{quote}
+
+
+\section{Proper Fonts}\label{sec:font}
+
+In order to typeset Hangul characters successfully with the input method
+of this package, the help of the \emph{proper} font is crucial.
+What we call \emph{proper} font is the font that has the Opentype feature of `Script Hangul', that is, the feature of conjoining jamo characters.
+A Truetype font may have this Opentype feature.
+Otherwise, it is regarded as an \emph{improper} font.
+
+Not so many fonts are \emph{proper}.
+The fonts or font families listed in the following lines are
+what we know \emph{proper}.
+They can be downloaded from the url and used freely. And note that
+\texttt{UnBatang} is already installed in your \TeX\,Live installation.
+
+\begin{description}
+\item[Hamchorom LVT] Hamchorom fonts by Hancom Inc., and their variants with GSUB tables by KTS (the Korean \TeX\ Society). \url{https://github.com/dohyunkim/hcr-lvt}
+\item[KoPub World] free fonts by Korea Publisher Society. \url{http://www.kopus.org/biz/electronic/font.aspx}
+\item[Malgun Gothic] One of Windows 10 system font.
+\item[Nanum Yet Hangul] Two font families from Naver. Nanum Myeongjo Yet Hangeul and Nanum Barun Gothic Yet Hangeul. \url{https://hangeul.naver.com/2014/archaicword}
+\item[Noto CJK] Google's Noto CJK fonts. Or Adobe's Source Han fonts. \url{https://www.google.com/get/noto/help/cjk/}
+\item[Un Batang] \verb|UnBatang.ttf|. on CTAN. \url{https://ctan.org/pkg/unfonts-core}
+\end{description}
+
+To use one of these fonts, do not forget to provide
+the \texttt{[Script=Hangul]} option. For example, you can specify
+Hamchorom Batang LVT font as:
+\begin{verbatim}
+\newfontfamily\pmjamofont{HCR Batang LVT}[Script=Hangul]
+\end{verbatim}
+and then issue \verb|\pmjamofont| command in the scope of Hangul to be typeset.
+It is recommended that the \emph{proper} font should be used consistently.
+
+\medskip
+
+In case the font you take is not \emph{proper}, you are to meet the warning
+message at the console and log file,
+\begin{verbatim}
+ Package fontspec Warning: (fontspec)
+ Font "batang" does not contain requested Script "Hangul".
+\end{verbatim}
+However, when \XeLaTeX\ is concerned, it is known that the \emph{Modern} Korean Characters (\emph{Hangul Precomposed Syllables} in the Unicode block [U+AC00] -- [U+D7A3]) can be rendered with this kind of font, in spite of the warning message.
+
+
+\section{Examples}
+
+Now, we will show a few practical examples, where
+the \emph{korean} environment of \pkg{polyglossia} package is used.
+The preamble is like this:
+
+\begin{verbatim}
+\usepackage{pmhanguljamo}
+\usepackage{polyglossia}
+\setotherlanguage{korean}
+\newfontfamily\hangulfont{UnBatang.ttf}[Script=Hangul]
+\end{verbatim}
+
+\subsection{Modern Hangul}
+
+\begin{verbatim}
+\begin{korean}
+\begin{jamotext}
+e/rin/i/nvn na/ra/oa gye/rey/vi ap/nar/vr i/e/na/gar
+sai/sa/ram/i/mv/ro gv/dvr/vi mom/goa ma/vm/vr gui/hi
+ye/gye orh/go a/rvm/dab/go ssig/ssig/ha/gey ja/ra/do/rog
+him/sse/ya han/da/.
+\end{jamotext}
+\end{korean}
+
+\begin{enumerate}
+\item \textkorean{\jamoword{e/rin/i/nvn in/gan/v/ro/se
+jon/jux/ha/ye/ya ha/mye sa/hoi/vi han sa/ram/v/ro/se
+or/ba/rv/gey ki/ue/ya han/da/.}}
+\end{enumerate}
+\end{verbatim}
+
+\begin{quotation}
+\begin{korean}
+\begin{jamotext}
+e/rin/i/nvn na/ra/oa gye/rey/vi ap/nar/vr i/e/na/gar
+sai/sa/ram/i/mv/ro gv/dvr/vi mom/goa ma/vm/vr gui/hi
+ye/gye orh/go a/rvm/dab/go ssig/ssig/ha/gey ja/ra/do/rog
+him/sse/ya han/da/.
+\end{jamotext}
+\end{korean}
+
+\begin{enumerate}
+\item \textkorean{\jamoword{e/rin/i/nvn in/gan/v/ro/se
+jon/jux/ha/ye/ya ha/mye sa/hoi/vi han sa/ram/v/ro/se
+or/ba/rv/gey ki/ue/ya han/da/.}}
+\end{enumerate}
+\end{quotation}
+
+\subsection{pre-1933 Hangul}
+
+A 15th century text with tone marks (\emph{BangJeom}).
+
+\begin{verbatim}
+\begin{korean}
+\begin{jamotext}
+na/ras;mar:ss@/mi; dyuq/guig;ei; dar/a;
+mun/jj@x;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i;
+i;ren jyen/c@;ro; e/rin; b@ig;syeq;i;
+ni/rv/go;jye; horf; bai;
+i/sye;do; m@/c@m;nai: jey bdv;dvr; si/re; pye/di;
+mod:h@rf no;mi; ha/ni;ra;.
+\end{jamotext}
+\end{korean}
+\end{verbatim}
+
+\begin{quote}
+\begin{korean}
+\begin{jamotext}
+na/ras;mar:ss@/mi; dyuq/guig;ei; dar/a;
+mun/jj@x;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i;
+i;ren jyen/c@;ro; e/rin; b@ig;syeq;i; ni/rv/go;jye; horf; bai;
+i/sye;do; m@/c@m;nai: jey bdv;dvr; si/re; pye/di;
+mod:h@rf no;mi; ha/ni;ra;.
+\end{jamotext}
+\end{korean}
+\end{quote}
+
+And another example of 17th century, from \jamo{du/si/en/hai}, \emph{Selected Translations of
+Du Fu's Poems}, without tone marks.
+
+\begin{verbatim}
+\begin{verse}
+\begin{korean}
+\begin{jamotext}
+g@/r@/mi p@/r@/ni sai de/ug h@i/o/,\\
+moy/hi pe/re/h@/ni gos/ bi/ci bvr bvd/n@n d@s/do/da/.\\
+ors bo/mi bon/d@in sdo di/na/ga/n@/ni \\
+e/nv na/ri i do/ra/gar h@i/o/.
+\end{jamotext}
+\end{korean}
+\end{verse}
+\end{verbatim}
+
+\begin{verse}
+\begin{korean}
+\begin{jamotext}
+g@/r@/mi p@/r@/ni sai de/ug h@i/o/,\\
+moy/hi pe/re/h@/ni gos/ bi/ci bvr bvd/n@n d@s/do/da/.\\
+ors bo/mi bon/d@in sdo di/na/ga/n@/ni \\
+e/nv na/ri i do/ra/gar h@i/o/.
+\end{jamotext}
+\end{korean}
+\end{verse}
+
+For more examples and information about this package,
+please read the documentation \texttt{pmhanguljamo-kdoc.pdf}
+(in Korean).
+
+\section{Acknowledgement}
+
+Thanks go to yihoze at the KTUG board, there he commented,
+``The IMs I've tried such as Korean Windows Old Hangul IM or Saenaru IM
+were all somewhat inconvenient. \ldots.
+In my opinion, for the foreign scholar who
+studies Korean language, especially Middle Age Korean language,
+this kind of transliteration method may be much more convenient and
+confident way of typesetting Korean than the IM solutions.''\footnote{\url{http://www.ktug.org/xe/index.php?mid=KTUG_open_board&document_srl=240134}}
+
+\end{document}
diff --git a/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf b/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf
new file mode 100644
index 0000000000..23c3829a8a
--- /dev/null
+++ b/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf
Binary files differ
diff --git a/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex b/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex
new file mode 100644
index 0000000000..8646c4d814
--- /dev/null
+++ b/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex
@@ -0,0 +1,793 @@
+%
+% Poorman's Hangul Jamo Input Method
+% pmhanguljamo.sty 사용설명서
+%
+% (C) 2020 Nova de Hi.
+% part of pmhanguljamo package.
+%
+\documentclass[a4paper]{oblivoir}
+
+\hypersetup{colorlinks}
+
+\usepackage{fapapersize}
+\usefapapersize{*,*,1in,*,1in,*}
+
+\usepackage{kotex-logo}
+\usepackage{amssymb}
+\usepackage{pmhanguljamo}
+\usepackage{boxedminipage}
+
+\ifXeTeX
+\def\fontfeatureoption{Script=Hangul}
+\else\ifLuaTeX
+\def\fontfeatureoption{Script=Hangul,RawFeature={mode=harf}}
+\fi\fi
+
+%%% [Script=Hangul] is needed to typeset YETHANGUL
+\setmainfont{Noto Serif}
+\setsansfont{Noto Sans}
+\setmonofont{Noto Sans Mono}
+\setsansfont{Noto Sans CJK KR}[\fontfeatureoption]
+\setkomainfont(Noto Serif CJK KR)(* Bold)(Noto Sans CJK KR Light)[\fontfeatureoption]
+\setkosansfont(Noto Sans CJK KR)(* Bold)[\fontfeatureoption]
+\setkomonofont(Noto Sans Mono CJK KR)
+
+\usepackage{tcolorbox}
+\tcbuselibrary{listings,breakable}
+\tcbset{listing engine=listings,colframe=gray,colback=white,size=normal}
+\NewDocumentEnvironment {exampleside} {}
+ { \tcblisting{listing side text,righthand width=.38\textwidth} }
+ { \endtcblisting }
+
+\newcommand\pkg[1]{%
+ \textsf{#1}\index{#1}\index{패키지!#1}%
+}
+
+\newcommand\env[1]{%
+ \textit{<#1>}\index{환경!#1}\index{#1}%
+}
+
+\let\cmda\cmd
+
+%\makeindex
+\parindent=0pt
+
+\begin{document}
+
+\title{Poorman's Hangul Jamo Input Method \\ \large pmhanguljamo.sty}
+\author{Nova de Hi}
+%\date{2020/07/17\quad v0.1}
+%\date{2020/07/18\quad v0.1.1}
+%\date{2020/07/19\quad v0.2.0}
+\date{2020/01/20\quad v0.2.1}
+
+\maketitle
+
+\begin{exampleside}
+\begin{jamotext}
+g@/r@/mi p@/r@/ni sai de/ug h@i/o/,\\
+moy/hi pe/re/h@/ni gos/ bi/ci bvr bvd/n@n d@s/do/da/.\\
+ors bo/mi bon/d@in sdo di/na/ga/n@/ni \\
+e/nv na/ri i do/ra/gar h@i/o/.
+\end{jamotext}
+\end{exampleside}
+
+\tableofcontents*
+
+\section{목적}
+
+\pkg{pmhanguljamo.sty}는 ``Poorman's Hangul Jamo Input Method''에서 따온 이름이다.
+알파벳과 몇 개의 기호문자만으로 한글 자모 (첫가끝) 입력을 대신할 수 있게 만든 것이다.
+자모 조합 한글을 잘 처리할 수 있는 폰트의 도움을 받아 (\ref{sec:font}절을 보라) `모든' 한글 수백만자를 표현할 수 있다.
+한글 패키지 \koTeX 과 함께 쓸 수 있고, 단독으로 사용해도 한글 표현이 가능하다.
+외국어를 본문으로 하고 한두 글자의 한글만을 표현할 필요가 있을 때, 별도의 입력기가 없는
+상황에서 `옛한글'을 포함하는 문자와 문장을 출력하여야 할 때 쓸 수 있다.
+
+\hologo{XeLaTeX}, \hologo{LuaLaTeX}에서 사용할 수 있고
+\hologo{pdfLaTeX}은 지원하지 않는다.
+
+\section{사용법}
+
+\subsection{패키지 사용 선언}
+
+\begin{boxedverbatim}
+\usepackage{pmhanguljamo}
+\end{boxedverbatim}
+
+preamble에 위의 문장을 둔다. 패키지의 옵션은 따로 없다.
+
+\subsection{명령과 환경}
+
+\subsubsection{\texttt{\bs jamoword} 명령}
+
+\begin{boxedverbatim}
+\jamoword{<several words>}
+\end{boxedverbatim}
+
+한글 자모를 알파벳으로 입력하여 출력한다.
+하나 또는 둘 이상의 단어가 올 수 있다. (단 하나의 단어만을 처리하는 \cmda{\jamotextcmd}라는 명령이
+있기는 하나 내부적으로 사용되는 것이다.)
+
+\medskip
+
+\begin{exampleside}
+\jamoword{na/ras;mar:ss@/mi; dyuq/guig;ei dar/a;}
+\end{exampleside}
+
+\subsubsection{\env{jamotext} 환경}
+
+\begin{boxedverbatim}
+\begin{jamotext}
+<text>
+\end{jamotext}
+\end{boxedverbatim}
+
+\env{jamotext} 환경은 여러 문단을 포함하는 긴 문장을 식자할 수 있다.
+
+\medskip
+\begin{exampleside}
+\begin{jamotext}
+na/ras;mar:ss@/mi; dyuq/guyg;ey; dar/a;
+
+mun/jj@x;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i;
+\end{jamotext}
+\end{exampleside}
+
+\subsubsection{\texttt{\bs jmcc} 명령}
+
+\begin{boxedverbatim}
+\jmcc{<single jamo>}
+\end{boxedverbatim}
+
+음절이 아니라 한 개의 자모만을 표시할 목적으로 \href{https://en.wikipedia.org/wiki/Hangul_Compatibility_Jamo}{한글 호환 자모}를 식자하려 할 때 사용하는 명령이다.
+호환 자모를 \cmda{\jamoword} 명령의 인자 안에서 쓰는 방법은 \ref{sec:compjamo}절을 보라. 이 명령은 본문
+중에서 독립적으로 쓰기 위해 마련되었다.
+인자로 단 하나의 자모만이 와야 한다.
+
+\medskip
+\begin{exampleside}
+\jmcc{BSG} \jmcc{@} \jmcc{UEY}
+\end{exampleside}
+
+\subsection{성조표지와 음절}
+
+입력에는 로마자 알파벳과 \verb|@| 부호, 그리고 세 개의 성조표지(방점) 기호 \verb|/|, \verb|;|, \verb|:|를 사용한다.
+
+\emph{성조표지가 와야 음절이 완성된 것으로 본다}. 모든 한글 음절은 반드시 성조표지로 끝난다.
+평성이 아닌 성조표지는 (적절한 폰트에서) 한글 음절의 왼편에 찍힌다.
+
+\begin{table}[htpb]
+\centering
+\caption{성조 표지} \label{tab:tonemarker}
+\begin{tabular}{l|l|l}
+\hline
+\texttt{/} & 평성 & 점 없음 \\ \hline
+\texttt{;} & 거성 & 점 하나 (\jamoword{m@s;no/p@n; so/ri;}) \\ \hline
+\texttt{:} & 상성 & 점 둘 \\ \hline
+\end{tabular}
+\end{table}
+
+성조 표기를 하지 않는 경우에도 음절의 완성을 나타내는 \verb|/|를 두어야 한다.
+다만 이 경우에 입력 편의를 위한 예외로서
+그 뒤에 스페이스가 와서 단어 입력이 종료되는 위치(또는 입력 문자열의 마지막)에서는 \verb|/|를 생략할 수 있다. 다음 예를 보아라.
+
+\medskip
+\begin{exampleside}
+\jamoword{naix:jyuq/ G/ so/ri;n@n;}\\
+\jamoword{naix:jyuq G so/ri;n@n;}
+\end{exampleside}
+
+스페이스 앞에서 \verb|/|를 생략할 수 있음과 관련하여 스페이스가 아니라면 생략할 수 없음에 주의하라. 예컨대 마침표와 같은 문장부호가 올 때는 그 문장부호 앞에서 \verb|/|를 생략할 수 없다.
+
+\medskip
+\begin{exampleside}
+\jamoword{jas ans bo/m@i pvr/oa na/mo/sbun gi/peys/do/da/.}
+\end{exampleside}
+
+\subsection{알파벳 대응 문자}
+
+알파벳 소문자를 이용하여 한글 자모 영역의 문자를 입력한다. 자음과 모음의 대응 규칙은 다음과 같다.
+
+\subsubsection{자음}
+
+\begin{table}[h]
+\centering
+\caption{알파벳-자모 대응 규칙: 자음}\label{tab:cons}
+\ttfamily
+\begin{tabular}{ll|ll|ll|ll}
+\hline
+ㄱ & g & ㄴ & n & ㄷ & d & ㄹ & r \\
+ㅁ & m & ㅂ & b & ㅅ & s & ㅇ & \textbf{x} \\
+ㅈ & j & ㅊ & c & ㅋ & k & ㅌ & t \\
+ㅍ & p & ㅎ & h & \char"3181 & \textbf{q} & \char"317F & \textbf{z} \\
+\char"3186 & \textbf{f} & & & & & & \\
+\hline
+\end{tabular}
+\end{table}
+
+\begin{enumerate}[1)] \firmlist
+\item \texttt{g}, \texttt{n}, \texttt{d}, \texttt{r}, \texttt{m}, \texttt{b}, \texttt{s}, \texttt{j}, \texttt{c}, \texttt{k}, \texttt{t}, \texttt{p}, \texttt{h}는 연상이 가능할 것이므로 따로 설명하지 않는다. \jmcc{R}에 대하여
+\verb|r|만을 사용하고 \verb|l|을 쓰지 않는다.
+\item `\jmcc{X}'(이응)에 대하여 \verb|x|를 채택하였다. 원래 이것은 오래 전 \pkg{frktex}이라는 패키지에서
+첫소리 이응에 대하여 \verb|x|를 썼던 적이 있으므로 그 유래가 아주 없다고 할 수는 없겠다. 다만 이 패키지는
+종성 이응 받침도 \verb|x|를 쓴다.
+\item `\jmcc{Q}'(옛이응)을 \verb|q|로 한 것은 역시 \pkg{frktex}에서 온 것인데 ``꼭지 달린 이응''이라는 글자 모양이 \verb|q|를 연상시킨다''는 이유였다고 한다. 그럴 법도 하다.
+\item `\jmcc{Z}'(반시옷)을 \verb|z|로 한 것은 납득할 수 있다고 본다. z가 s의 유성음에 대응하기 때문에.
+\item 가장 곤란했던 것은 \jmcc{F}(여린히읗)이었다. 사용되지 않은 자판 가운데서 선택할 수밖에 없는데 \texttt{l}, \texttt{v}, \texttt{w}, \texttt{f} 정도가 선택 가능한 범위였다. 알파벳이 아닌 부호문자 중에서 선택하는 것도 생각해보았으나 역시 자판의 윗줄로 올라가는 것은 꺼려져서 \verb|f|로 선택하였다. 순전히 편의에 의한 대응이다.
+\item `\jamotextcmd{sl@}'나 `\jamotextcmd{slr@}'와 같은 특별한 글자, `\jamotextcmd{ssla/sslra/jla/jlra/jjla/jjlra/cla/clra}'의 초성 글자들, 즉 훈민정음 언해의 ``\jamoword{dyuq/guyg;so/ri;yeys; ni;sso/ri;}'' 표기에서 쓰이는 齒頭\cntrdot 正齒音을 구분하기 위한 글자들은 \texttt{s}, \texttt{j}, \texttt{c}에 \texttt{l}, \texttt{lr}을 붙여서 표기한다. \verb|l|이 왼쪽(치두음), \verb|lr|이 오른쪽(정치음)이 더 길어지는 글자가 된다.
+\item `\jmcc{BX}', `\jmcc{BBX}', `\jmcc{MX}', `\jmcc{PX}'와 같은 ``\jamoword{ib/si/ur;ga/b@i;ya/bx@n; so/ri;}'' 표기는 \verb|x|를 이어써서 표기한다. 각각, \texttt{bx}, \texttt{bbx}, \texttt{mx}, \texttt{px}.
+\item 겹자음\cntrdot 복자음은 이어쓴다. \texttt{gg} \jmcc{GG}, \texttt{bsg} \jmcc{BSG}, \texttt{bsd} \jmcc{BSD}, \texttt{rf} \jmcc{RF}.
+\item `제로자음'인 초성 이응은 생략할 수 있다. 모음으로 시작하면 초성 이응을 식자해준다. \verb|\jamoword{an}| \jamoword{an}. 만약 정말로 초성을 비우기를 원한다면(즉 초성 필러를 쓰려 한다면) \verb|w|를 그 위치에 쓰도록 하라. 이것은 종성에는 적용되지 않는다. \verb|\jamoword{wan}| \jamoword{wan}.
+\end{enumerate}
+
+\subsubsection{모음}
+
+\begin{table}[h]
+\centering
+\caption{알파벳-자모 대응 규칙: 모음} \label{tab:vow}
+\ttfamily
+\begin{tabular}{ll|ll|ll|ll|ll}
+\hline
+ㅏ & a & ㅓ & e & ㅗ & o & ㅜ & u & ㅡ & \textbf{v} \\
+ㅣ & i & \jmcc{@} & \textbf{@} & & & & & & \\ \hline
+ㅑ & ya & ㅕ & ye & ㅛ & yo & ㅠ & yu & \kern-.3em\jmcc{@}\kern-.6em\jmcc{@} & @@ \\ \hline
+ㅐ & ay & ㅔ & ey & ㅚ & oy & ㅟ & uy & ㅢ & vy \\
+ㅒ & yay & ㅖ & yey & \jmcc{YOI} & yoi & \jmcc{YUI} & yui & \jmcc{@I} & @i \\ \hline
+ㅘ & oa & ㅙ & oay & ㅝ & ue & ㅞ & uey & & \\ \hline
+\end{tabular}
+\end{table}
+
+\begin{enumerate}[1)]
+\item 기본 모음 ㅏ, ㅓ, ㅗ, ㅜ, ㅡ, ㅣ, \jmcc{@}(\texttt{@})는 한 글자로만 표기한다. ㅑ, ㅕ, ㅛ, ㅠ는 \verb|y|를 앞에 붙인다.
+\item `ㅡ'를 영문자의 자음에 해당하는 \verb|v|에 대응시킨 것은 이상하게 보일 수 있다. 그러나 윗 항을 충실하게 지키려다 보니 부득이했다. 실로 이 홀소리 글자의 로마자 표기는 혼란스럽다고 생각하고 있는데, 표준인 \texttt{eu}만이 아니라 \texttt{y}, \texttt{u} 등이 있었고, 다른 어떤 제안에서는 \verb|w|도 있었던 것으로 기억한다. 어차피 마땅한 방법이 없다면 이렇게 약속하고 쓰는 것이 한 방법이라 생각한다. \verb|v|자를 죽 늘리면 `ㅡ'가 되는 것처럼 보이는 연상에서 비롯되었는지 모른다.
+\item \texttt{e}를 보통 `에'라고 읽기 때문에 `ㅓ'를 \verb|e|에 할당한 것이 익숙지 않을 수 있다. 이것은 Yale 표기법에 그 기원이 있다.
+\item `ㅐ, ㅔ'는 단모음으로 간주되기 때문에 \texttt{ay}, \texttt{ey}라고 쓰도록 하였다. 비슷한 이유에서 \texttt{oy}, \texttt{uy}라고 되었다.
+그러나 이런 음성학적 지식이 표기에 반드시 필요하다면 그것도 불편하다. 그래서 `\texttt{ai}, \texttt{ei}, \texttt{oi}, \texttt{ui}'라고 입력하는 것도 허용하였다. `ㅢ'의 경우에도
+\texttt{vy}와 \texttt{vi} 둘 다 가능하다.
+
+\verb|\jamoword{sai/say}| \jamoword{sai/say}.\quad \verb|\jamoword{sei/sey}| \jamoword{sei/sey}. \\
+\verb|\jamoword{soi/soy}| \jamoword{soi/soy}.\quad \verb|\jamoword{sui/suy}| \jamoword{sui/suy}. \\
+\verb|\jamoword{gvi/gvy}| \jamoword{gvi/gvy}.
+
+그러나 \jmcc{@I}는 단모음으로 인식될 가능성이 없다고 보아 \verb|@i|만을 취하였다.
+
+\verb|\jamoword{g@i}| \jamoword{g@i}.
+
+\item `쌍아래아'는 현대의 제주어 표기에서 이따금 필요하다. 모양대로 \verb|@@|로 적으며 \verb|y@|를 취하지 않았다. 현대 국어에서 이 글자의 소리는 잊혀진 것이라서 소리로 연상할 수 없기 때문이다.\\
+\verb|\jamoword{@@/nam/vn}| \jamoword{@@/nam/vn}.
+\item 표준 로마자 표기법에서 \texttt{wa}, \texttt{wo}, \texttt{we}, \texttt{wi}로 표기할 때 나타나는 반자음 \verb|w|은 채택하지 않았다. `ㅘ, ㅝ, ㅟ'는 생긴 대로 \texttt{oa}, \texttt{ue}, \texttt{ui}로 적는다.
+\item 이 패키지는 Unicode 4.0의 한글 자모 보충 A, B를 지원한다. 그러므로 한글 자모 영역([U+11XX])에는 없는 `\jamoword{wuye}'와 같은 모음을 표기할 수 있다. \verb|\jamoword{sa/guye}| \jamoword{sa/guye/}. 물론 폰트가 이를 지원해야 한다.
+\end{enumerate}
+
+\subsubsection{호환자모 음절} \label{sec:compjamo}
+
+\cmda{\jamoword}나 \env{jamotext} 범위 안에서 호환 자모를 식자하려면 해당하는 자모를 대문자로, 하나의 음절로 입력한다.
+별도로 \cmda{\jmcc}를 쓰지 않는다. 그러나 반드시 하나의 자모가 한 음절이어야 한다.\\
+\verb|\jamoword{B/n@n; ib/si/ur;sso/ri;ni;}|
+\jamoword{B/n@n; ib/si/ur;sso/ri;ni;}
+
+\verb|\jamoword{孟m@ix/子j@/I/ g@r/@/sya/d@i}|
+\jamoword{孟m@ix/子j@/I g@r/@/sya/d@i}
+
+\medskip
+
+호환 자모 아래아 `\jmcc{@}'를 \cmda{\jamoword} 인자 안에서 식자하려 할 때는 자모 아래아 `\jamoword{w@}'와
+구별하기 위해 대문자 \texttt{W}로 표기해야 한다. \verb|W|와 \verb|WI|만이 지원된다.
+
+\verb|\jamoword{W/n@n; 呑t@n/D/字/jj@x; ga/on;d@is;so/ri; g@;t@;ni/ra;.}| \\
+\jamoword{W/n@n; 呑t@n/D/字/jj@x; ga/on;d@is;so/ri; g@;t@;ni/ra;.}
+
+\subsubsection{한자와 음절 한글}
+
+\cmda{\jamoword} 명령과 \env{jamotext} 환경 안에 오는 인자는 다음과 같은 문자에 대하여 예약이 되어 있다.
+\begin{itemize}\firmlist
+\item 알파벳 문자 --- 한글 자모 문자에 대응한다.
+\item \texttt{;}, \texttt{:}, \texttt{/} --- 이 세 개의 부호는 성조표지, 음절완성을 표시하기 위하여 예약되어 있다.
+\item \texttt{|} --- 이 한 개의 부호문자는 내부적으로 사용하도록 예약되어 있다.
+\end{itemize}
+이를 제외한 문자는 입력한 대로 찍힌다. 즉 한글 완성형 음절 문자나 한자 및 숫자와 문장부호가 모두 그대로 출력된다.
+콜론, 세미콜론, 슬래시는 각각 \cmda{\ColonMark}, \cmda{\SemiColonMark}, \cmda{\SlashMark} 명령을 사용할 수 있게 해두었다.
+
+\medskip
+\begin{exampleside}
+\jamoword{15 세기 표기\ColonMark{} 國之語音, 우리나라의 말이 $\Rightarrow$ na/ras/mar/ss@/mi}
+\end{exampleside}
+
+단일 매크로 자체는 그대로 출력된다. 그러나 인자를 취하는 매크로의 인자로 로마자 알파벳이 들어가는 경우에는
+이 로마자를 자모 한글로 처리하려 하기 때문에 오류가 발생한다. 알파벳 포함 인자를 취하는 매크로는 이 범위 안에
+넣지 않는 것이 좋다.
+
+\medskip
+
+음절문자뿐 아니라 자모 한글의 입력도 그대로 출력된다. 어디선가 옛한글%
+\footnote{1933년 이전 표기법의 한글을 가리킨다.
+유니코드의 한글 음절 문자 영역에서 표현되지 않는 한글을 통칭하는 것이나
+현대 한국어 중에서 제주어를 기록할 때도 쓰이고, 워드 프로세서 \jamoword{h@n/gvr}의
+이름을 적을 때도 쓰이기 때문에 그리 `옛' 것은 아니다.
+이 글에서는 관행을 따라 옛한글이라고 부르기로 한다.}
+텍스트를 복사해와서 넣을 때 유용할지도.
+다음 예에서 이 패키지의 입력 방식과 첫가끝 입력 방식이 혼용되어 있는 것을 볼 수 있다.
+
+\medskip
+\begin{exampleside}
+\jamoword{(/du/si/en/hai dvx/go/)
+ᄇᆞᄅᆞ미 ᄲᆞᄅᆞ며 하ᄂᆞᆯ히 놉고 나ᄇᆡ 됫ᄑᆞ라미 슬프니}
+\end{exampleside}
+
+\section{폰트}
+
+\subsection{사용가능한 글꼴}\label{sec:font}
+
+자모 조합 한글을 출력하려면 이를 해낼 수 있는 글꼴이 필요하다. 소위 `옛한글' 글꼴이라지만 PUA 옛한글
+5000여자의 사용자 영역 글자만을 가지고 있는 글꼴로는 이 패키지에서 말하는 옛한글을 식자할 수 없다. 새바탕\cntrdot 새굴림과 같은 한양 옛한글
+폰트, 전주완판본체, 제주폰트 등이 모두 옛한글에 사용할 수 없는 폰트에 해당한다.
+
+자모 조합 한글을 구현할 수 있는 몇몇 글꼴을 테스트해보겠다.
+
+\begin{boxedverbatim}
+sa:r@m/ma:da; h@i:xxye; su:bxi; ni/gye;
+\end{boxedverbatim}
+
+\newcommand\teststr{\jamoword{sa:r@m/ma:da; h@i:xxye; su:bxi; ni/gye;
+}}
+
+\newcommand\testfont[1]{%
+ \begingroup
+ \begin{adjustwidth}{2em}{2em}
+ \adhochangulfont[\fontfeatureoption]{#1}\teststr
+ \end{adjustwidth}
+ \endgroup
+}
+
+함초롬 바탕 \testfont{HCR Batang LVT}
+
+은 바탕 \testfont{UnBatang}
+
+본명조 또는 Noto Serif CJK \testfont{Noto Serif CJK KR}
+
+나눔명조옛한글 \testfont{NanumMyeongjo-YetHangul.ttf}
+
+KoPubWorld 바탕 \testfont{KoPubWorldBatangMedium}
+
+함초롬 돋움 \testfont{HCR Dotum LVT}
+
+본고딕 또는 Noto Sans CJK \testfont{Noto Sans CJK KR}
+
+나눔바른고딕옛한글 \testfont{NanumBarunGothic-YetHangul.ttf}
+
+맑은 고딕 \testfont{Malgun Gothic}
+
+KoPubWorld 돋움 \testfont{KoPubWorldDotumMedium}
+
+\medskip
+
+옛한글을 무리없이 표현하는 것은 현재 이 정도인 것 같다.
+각 폰트는 특정한 문자에 대해서 약간의 차이를 보이기도 한다. 참고로 이 문서에서는
+본문과 옛한글에 Noto Serif CJK KR을 사용하였다.
+
+\hologo{LuaTeX}으로 컴파일하는 경우에는 위에 든 폰트들, 즉 \texttt{Script Hangul} 속성을
+가진 폰트만 사용 가능하다. \hologo{LuaTeX}과 이 패키지의 관계에 대해서
+\pageref{sec:luatex}페이지를 참고하라.
+
+\ifXeTeX
+
+\bigskip
+
+한글 자모 영역의 글리프를 가지고 있는 글꼴이 있다. 성조표지를 잘 처리하지 못하는 경우가 있고 옛한글
+글자꼴이 반듯하지 않지만 어쨌든 글자가 나오기는 할 것이다. 이것은 \texttt{Script Hangul} 속성을 갖고
+있는 것은 아니며 단지 한글 자모 영역 글리프를 영리하게 배열한 것이다. 방점 없이 테스트해보겠다.
+
+\medskip
+
+\renewcommand\teststr{\jamoword{sa/r@m/ma/da h@i/xxye su/bxi ni/gye
+}}
+
+은 자모바탕 \testfont{UnJamoBatang}
+
+은 돋움 \testfont{UnDotum}
+
+\medskip
+그러나 자모 영역 자면이 있다 하더라도 글리프가 잘 조성되어 있지 않은 글꼴에서는
+다음과 같이 모아쓰기가 되지 않는 형태로 출력된다. 이런 글꼴은 옛한글에 사용할 수 없다.
+
+\medskip
+전주완판본 순L \testfont{TSTJJWanSunL}
+
+\medskip
+
+\textbf{현대 한글 음절문자}는 적어도 \hologo{XeLaTeX}에서는 모두 제대로 표현될 것이다.
+자모 코드로부터 한글 음절을 (유니코드 표준을 따라) 구성하는 일을 폰트가 아니라 \hologo{XeTeX}이 하고 있음을 짐작할 수 있다.\footnote{이 패키지의 입력 방법으로 \hologo{XeLaTeX} 컴파일하여 만들어진 현대 한글 음절 영역 문자를 pdf로부터
+복사하여 편집기에 붙여넣기하면 자모 코드가 아니라 음절 코드로 들어가는 것을 확인할 수 있다.}
+현대 한글만을 표기하려 한다면 폰트의 제약이 줄어든다고 하겠다.
+
+\begin{boxedverbatim}
+o/dvx/vn ja/ey a jo/sen/vi dog/rib/gug/im/goa
+\end{boxedverbatim}
+
+\renewcommand\teststr{\jamoword{o/dvx/vn ja/ey a jo/sen/vi dog/rib/gug/im/goa}}
+
+백묵 바탕 \testfont{batang.ttf}
+
+Adobe 명조 \testfont{AdobeMyungjoStd-Medium.otf}
+
+전주완판본 순L \testfont{TSTJJWanSunL}
+
+제주한라산 \testfont{JejuHallasan.ttf}
+
+\fi
+
+\subsection{폰트의 지정}
+
+특정 언어 패키지나 입력기의 제약 없이 한글 글꼴을 지정하는 것만으로
+현대 한글과 옛한글을 모두 표현할 수 있다는 것이 \pkg{pmhanguljamo}의 장점이다.
+다만 \koTeX\ 없이는 글자 사이의 행나눔이나 양끝맞추기 등 한글 문장 식자에 꼭 필요한 몇 가지 기능이 구현되지
+않을 것이므로 이런 점은 감안하여야 한다. 대체로 몇 자 정도의 한글을 넣어야 하는 때에 유용하리라 본다.
+
+\koTeX\ 패키지와 함께 쓸 때와 그렇지 않을 때를 나누어서 간단히 사용법을 보이겠다.
+
+\subsubsection{\koTeX\ 문서}
+만약 \koTeX\ (\pkg{xetexko} 또는 \pkg{luatexko})과 함께 사용하는 경우라면 본문 한글 글꼴을
+다음과 같이 지정한다.
+
+\texttt{[Script=Hangul]} \emph{옵션을 반드시 주어야 한다}는 점을 기억하자.\footnote{이것은
+폰트가 가지고 있는 오픈타입 속성을 활성화하여 자모 한글을 제대로 출력하도록 지정하는 역할을 한다. 자모 한글을
+처리하는 기능을 가지고 있지 않은 글꼴에서는 아무 역할도 하지 않고 컴파일 시 콘솔에 경고 메시지를 보일 것이다.}%
+\textsuperscript{, }\footnote{\hologo{LuaTeX}에서는 약간의
+추가 옵션이 더 필요할 수 있다. 이 문서의 이후 \texttt{[Script=Hangul]}을 주라고 하는 때에
+모두 동일하다. \pageref{sec:luatex}페이지의 부록 B를 보라.\label{fn:fontoption}}
+
+\begin{boxedverbatim}
+\setmainhangulfont{Noto Serif CJK KR}[Script=Hangul]
+\end{boxedverbatim}
+
+본문과 폰트를 달리 쓰려 한다면 \cmda{\jamoword} 또는 \env{jamotext} 범위에 다음과 같이 임시로 한글 글꼴을 적용한다.
+
+\begin{boxedverbatim}
+\hangulfontspec[Script=Hangul]{HCR Batang LVT}
+\end{boxedverbatim}
+
+\cmda{\adhochangulfont} 명령은 이와 동일한 명령이다. 이 폰트의 적용 범위를 설정하거나 하는 것은 문서작성자에게 맡겨져 있다.
+
+\subsubsection{\koTeX 이 아닐 때}
+
+\koTeX\ 문서가 아닐 때는 \pkg{fontspec} 패키지를 이용한다. main font를 위의 글꼴 중의 하나로 하거나(이 때에도 \texttt{[Script=Hangul]} 옵션을 반드시 지정하여야 한다.),
+\cmda{\newfontfamily}로 글꼴 명령을 만들어 쓰거나,
+아니면 한글이 필요한 부분에만 \cmda{\fontspec}으로 글꼴을 지정해주는 것으로 될 것이다.
+\fref{fig:sample}\는 \pkg{article} 문서의 한 예이다.\footnote{폰트에 부여하는
+옵션에 관하여 각주~\ref{fn:fontoption}\을 볼 것.}
+
+\bigskip
+
+\pkg{polyglossia}와 함께 사용하는 것도 잘 된다.\footnote{\pkg{polyglossia}는 \XeLaTeX 에서만 사용 가능하다.}
+다음은 이 경우의 한 설정 방법이다.
+(이 보기에서는 한국어를 other language로 설정하고 있는데 만약 main language로 설정한다면
+\env{korean} 환경 안이 아니라도 한글 폰트가 적용된다.)
+\pkg{polyglossia}를 사용하여 \env{korean} 환경에서
+쓰게 되면 한국어 조판에 필요한 상당한 지원이 이루어진다.
+
+\begin{boxedverbatim}
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{english}
+\setotherlanguage{korean}
+\newfontfamily\hangulfont{UnBatang}[Script=Hangul]
+\usepackage{pmhanguljamo}
+
+\begin{document}
+\begin{korean}
+\jamoword{han/gug/e/rvr han/gvr/ro}
+\end{korean}
+\end{document}
+\end{boxedverbatim}
+
+만약에 \env{korean} 환경이 시작되면 그 안에서는 (무조건) pmjamo 입력 모드가 되도록 하려면
+다음 코드를 preamble에 두면 된다.
+
+\begin{boxedverbatim}
+\usepackage{etoolbox}
+\apptocmd\korean{\begin{jamotext}}{}{}
+\pretocmd\endkorean{\end{jamotext}}{}{}
+\end{boxedverbatim}
+
+이제 다음과 같이 간단히 입력할 수 있다.
+
+\begin{verbatim}
+\begin{korean}
+na/ras/mar/ss@/mi
+\end{korean}
+\end{verbatim}
+
+그러나 위의 처방은 이 환경 안의 모든 로마자가 한글이라는 확신이 있을 때만 적용해야 할 것이다.
+\env{korean} 환경 안에서 로마자를 입력해야 할 일이 있을지 모르기 때문이다.
+
+\begin{figure}
+\centering
+\begin{boxedminipage}{\dimexpr\textwidth-2.5cm\relax}
+\begin{verbatim}
+\documentclass{article}
+\usepackage{fontspec}
+\newfontfamily\hngljmfont{HCR Batang LVT}[Script=Hangul]
+\usepackage{pmhanguljamo}
+\newcommand*\jmhangul[1]{%
+ \begingroup
+ \hngljmfont\jamoword{#1}%
+ \endgroup
+}
+
+\begin{document}
+Say `Hello' in Korean,
+\jmhangul{an/nyex/ha/sey/yo}.
+\end{document}
+\end{verbatim}
+\end{boxedminipage}
+\caption{article에서 pmhanguljamo을 쓰는 예}\label{fig:sample}
+\end{figure}
+
+\section{贅辭}
+
+이 패키지를 만들게 된 사연이 이러하다.
+Kubuntu 리눅스에서 옛한글이 사용되는 문서를 작성할 일이 있었다. \texttt{fcitx} 입력기가 기본으로 설치되어 있었는데
+옛한글 입력이 되는 입력기를 설정하는 문제로 골머리를 썩이는 경험을 하게 된 것이다.
+세벌식 자판 배열은 이미 잊은 지 오래. \texttt{nabi}는 크롬이나
+QT에서 뭔가 이상하게 동작하거나 아예 한글 입력이 안 되거나\ldots\ldots.
+\LaTeX\ 문서인데 굳이 입력기가 필요한가 생각이 들어 간단히 로마자 대응 입력(transliteration)으로 한글과 옛한글을
+입력하도록 하면 이 문제로 시간낭비하지 않아도 되지 않을까 싶어 시작하게 된 일이었다.
+(그리고 입력기 설치보다 더 많은 시간과 \jamoword{ke/xpi/}--\footnote{이 표기를
+이태준 (1940), \ccnm{文章講話} (경성 종로, 文章社), p.~23에서 보았다. `\jamotextcmd{pxi}'가
+아니라 `\jamotextcmd{xpi}'이다. 부록의 \fref{fig:mun} 참조.
+인쇄 상태로 미루어보면 `\jamotextcmd{xpi}'자 활자가 있었던 것 같지는 않고 `피'를 식자한 후에 왼편에
+조그마한 고리를 달아 인쇄한 것으로 보인다.}%
+를 소비하였다.)
+
+옛한글 입력과 관련하여, Mac OS에서는 구름 입력기가 있더라. 한글 Windows 10은 시스템 자체에
+옛한글 입력기가 있는 것 같고 여전히 새나루나 날개셋도 있다.
+그러나 어떤 것이든 시스템 설정을 바꾸거나 새로운 앱을 설치하거나 해야 하는 것으로 귀찮음을 감수할 수밖에 없다.
+
+만들어놓고 보니 아예 한글 입력 자체가 불가능한 상황,
+즉 시스템 설정을 건드릴 수도 없고 새로운 프로그램을 설치할 수도 없거나
+한글 입력기 자체가 없거나,
+서버에 접속하여 문서를 작성하는 상황이라도 한글과 옛한글을 포함한 문서를 작성할 수 있게 되었다.
+\emph{실용적으로 쓸 일이 있을까} 싶기는 하지만 버리기도 아까워서 기능을 보완하고 정리해두기로 하였다.
+
+이 ``한글 대응 입력'' 방식이라는 것은 나름 그 유래가 있다. \href{https://www.yudit.org/}{Yudit}이라는 편집기의
+옛한글 입력 방식이 그러하고 \pkg{frktex}에서도 역시 이런 식으로 한글을 입력했다.
+한글 로마자 입력기(워드 프로세서에 내장된 것도 있고 시스템 입력기의 입력 방식 중의 하나인 경우도 있다)들은
+특히 \texttt{eu}, \texttt{eo} 모음 때문에 너무나 많은 키를 눌러야 해서 내가 그리 좋아하지 않았지만.
+
+그리고 옛한글 입력기가 있다 하더라도 두벌식 옛한글 입력이 필연적으로 겪게 되는 음절 경계의 문제는 피할 수 없다.
+모음과 모음 사이에 최대 6개의 자음이 올 수 있는 조건에서 음절 경계의 판별을 완전히 자동화하는 것은
+불가능하다고 생각한다. 이 패키지에서도 그런 문제를 고려하여 처음부터 음절 경계를 입력하도록
+하였다. 약간의 번거로움은 피할 수 없지만 그 때문에 구현이 아주 간단해졌고 예외 처리를 위한
+고민을 해소할 수 있었다.
+이와 관련하여 종성을 대문자로 입력하는 방안(Yudit 방식)을 유력하게 고려하였지만 쉬프트 누르기를 싫어하는
+나는 이를 채택하지 않았다. ``쉬프트를 누르느니 슬래시를 한 번 치고 말겠다.''
+
+\bigskip
+
+이 패키지를 만들다보니 참 세상 편해졌다는 생각을 안 할 수가 없었다.
+Expl3는 내가 원하는 일을 너무나 간단하게 구현할 수 있게 해주었다. \hologo{XeTeX}, \hologo{LuaTeX} 엔진의 유니코드 처리 기능은 한글 사용자에게 참 많은 혜택을 주었다고 생각한다.
+십수 년 전에 옛한글 폰트와 구현을 만들려고 했던 여러 시도를 기억하는 입장에서는 당시 고민했던 문제가 말끔하게
+해결되어 있는 현재 상황이 믿어지지 않을 정도이다.
+모든 한글을 잘 표현하는 좋은 폰트를 가지게 된 것은 무엇보다 반가운 일이다. 그런 폰트가 더 많아지기를 바란다.
+
+
+
+\section{변경 이력}
+
+\textbullet\ v0.1 (2020/01/17): 첫 릴리스.
+
+\textbullet\ v0.1.1 (2020/01/18): 호환자모 `\jmcc{@}' 입력 버그 수정.
+
+\textbullet\ v0.1.2 (2020/01/18): \hologo{LuaTeX} 컴파일 관련 수정. 문서 갱신.
+
+\textbullet\ v0.2.0 (2020/01/19): \texttt{pmhanguljamo}로 명칭 변경.
+
+\textbullet\ v0.2.1 (2020/01/20): \verb|\ColonMark| bug fix. thanks to yihoze.
+
+%%% APPENDICES
+\ExplSyntaxOn
+\int_new:N \l_appsec_int
+\newcounter{tmpa}
+\NewDocumentCommand \appsec {}
+{
+ \int_gincr:N \l_appsec_int
+ \int_to_Alph:n { \l_appsec_int }
+}
+
+\ExplSyntaxOff
+
+
+\newpage
+
+\section*{부록 \appsec. 이 문서 컴파일에 필요한 폰트}
+\addcontentsline{toc}{section}{\string\qquad 부록}
+
+이 문서의 한글과 한자 부분에 다음과 같은 폰트를 사용하였다.
+모두 설치되어 있어야 컴파일할 수 있다.
+
+\begin{description} \firmlist
+\item[Noto CJK] Noto Serif CJK, Noto Sans CJK, Noto Sans Mono CJK 폰트. \href{https://www.google.com/get/noto/help/cjk/}{Google Noto CJK}.
+Adobe사의 \href{https://source.typekit.com/source-han-serif/kr/}{본명조(Source Han Serif)}\cntrdot \href{https://github.com/adobe-fonts/source-han-sans/tree/release/}{본고딕(Source Han Sans)}과 거의 같다.
+\item[함초롬 LVT] 함초롬 바탕 LVT, 함초롬 돋움 LVT. 한글과컴퓨터 \& 한국텍학회. \href{http://wiki.ktug.org/wiki/wiki.php/%ED%95%A8%EC%B4%88%EB%A1%AC%EC%B2%B4LVT}{KTUG:함초롬체 LVT}.
+\item[나눔 옛한글] 나눔명조 옛한글, 나눔바른고딕 옛한글. \href{https://hangeul.naver.com/2014/archaicword}{네이버 한글한글아름답게}.
+\item[KoPubWorld] KoPubWorld 바탕, KoPubWorld 돋움. \href{http://www.kopus.org/biz/electronic/font.aspx}{한국출판인회의}.
+\item[맑은 고딕] Windows 8 이후 한글 Windows 폰트. 마이크로소프트.
+\item[은 글꼴] 은 바탕 \TeX\,Live 배포 서체.
+\end{description}
+
+\ifXeTeX
+\hologo{XeTeX}으로 컴파일하는 상황에서는 다음 폰트들이 더 사용되었다.
+
+\begin{description} \firmlist
+\item[은 글꼴] 은 자모바탕, 은 돋움.
+\item[백묵 글꼴] 백묵 바탕. \TeX\,Live 배포 서체.
+\item[전주완판본체] 전주완판본 순L. \href{http://www.jeonju.go.kr/index.9is?contentUid=9be517a75cfc1850015d0becebbf4672}{전주시청}.
+\item[제주서체] 제주한라산. \href{https://www.jeju.go.kr/jeju/symbol/font/hallasan.htm}{제주특별자치도}.
+\item[Adobe 명조] Adobe Reader 배포 서체.
+\end{description}
+\fi
+
+\section*{부록 \appsec. \hologo{LuaLaTeX} 컴파일을 위한 주석}\label{sec:luatex}
+
+\hologo{LuaLaTeX}으로 컴파일하는 경우를 위한 메모.
+
+우선 LuaHB\TeX 의 \LaTeX\ 포맷을 이용하는 것이 좋다.
+\pkg{harfbuzz} 라이브러리를 활용하므로 더 바람직한 결과를 얻을 수 있을 것으로 기대한다.
+이 패키지는 LuaHB\TeX\ 1.11.2를 기준으로 테스트하였다. \TeX\,Live 2019에 있는 1.10에서의
+올바른 동작은 보장하지 않는다. 이 때에는 \hologo{XeTeX}을 쓰도록 하라.
+
+폰트 설정 시에 옵션으로 다음을 부여한다. 아래 \texttt{RawFeature} 부분은 LuaHB\TeX 이
+아니면 에러를 토할 것이다.
+\begin{verbatim}
+[Script=Hangul,RawFeature={mode=harf}]
+\end{verbatim}
+이 설정은 \pkg{luatexko}와 함께 쓰는 경우든 아니든 필요하다.
+
+\hologo{LuaTeX}에서 이 패키지와 함께 사용할 수 있는 폰트는 \texttt{Script Hangul} 속성을 가진 폰트로
+제한된다. 이 속성을 가지지 않은 일반적인 폰트로는 자모 입력으로부터 한글 음절 문자를 얻어낼 수 없는
+것으로 보인다. \ref{sec:font}절에서 어떤 폰트가 사용가능한지 확인할 수 있다.
+
+\section*{부록 \appsec. 예제}
+
+훈민정음 어제 서문을 입력한 예를 보여두겠다.
+
+\begin{boxedverbatim}
+\begin{jamotext}
+世syeyx;宗joq/御ex;製jyeyx;訓hun;民min/正jyeq;音fvm/
+
+na/ras;mar:ss@/mi; 中dyuq/國guig;ei; dar/a;
+文mun/字jj@x;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i;
+i;ren jyen/c@;ro; e/rin; 百b@ig;姓syeq;i; ni/rv/go;jye; horf; bai;
+i/sye;do; m@/c@m;nai: jey bdv;dvr; si/re; pye/di;
+mod:h@rf no;mi; ha/ni;ra;.
+
+nai; i;r@r; 爲uix;h@;ya; e:yes/bi; ne/gye;
+sai;ro; sv;mvr; ye/dvrb; 字jj@x;r@r; m@iq/g@;no/ni;
+sa:r@m/ma:da; h@i:xxye; su:bxi; ni/gye;
+nar;ro; bsu;mey;
+便bbyen/安fan/kvi; h@/go;jye; h@rf sd@/r@/mi;ni/ra;.
+\end{jamotext}
+\end{boxedverbatim}
+
+\begin{quote}
+\begin{jamotext}
+世syeyx;宗joq/御ex;製jyeyx;訓hun;民min/正jyeq;音fvm/
+
+na/ras;mar:ss@/mi; 中dyuq/國guig;ei; dar/a;
+文mun/字jj@x;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i;
+i;ren jyen/c@;ro; e/rin; 百b@ig;姓syeq;i; ni/rv/go;jye; horf; bai; i/sye;do;
+m@/c@m;nai: jey bdv;dvr; si/re; pye/di; mod:h@rf no;mi; ha/ni;ra;.
+
+nai; i;r@r; 爲uix;h@;ya; e:yes/bi; ne/gye;
+sai;ro; sv;mvr; ye/dvrb; 字jj@x;r@r; m@iq/g@;no/ni;
+sa:r@m/ma:da; h@i:xxye; su:bxi; ni/gye;
+nar;ro; bsu;mey;
+便bbyen/安fan/kvi; h@/go;jye; h@rf sd@/r@/mi;ni/ra;.
+\end{jamotext}
+\end{quote}
+
+\section*{부록 \appsec. 유니코드의 한글}
+
+이 글에서 사용한 다음 용어를 설명한다.
+
+\begin{description} \firmlist
+\item[한글 자모] 유니코드 블럭 \textsf{[U+1100]}--\textsf{[U+11FF]}에 정의된 한글 자모(\emph{Hangul Jamo}).
+\item[한글 자모 확장 A] 유니코드 블럭 \textsf{[U+A960]}--\textsf{[U+A97C]}에 정의된 한글 자모(\emph{Hangul Jamo Extended-A}).
+\item[한글 자모 확장 B] 유니코드 블럭 \textsf{[U+D780]}--\textsf{[U+D7FB]}에 정의된 한글 자모(\emph{Hangul Jamo Extended-B}).
+\item[한글 음절 문자] 유니코드 블럭 \textsf{[U+AC00]}--\textsf{[U+D7A3]}에 정의되어 있는, 한글 음절 문자(\emph{Hangul Syllables}. Precomposed syllables). 여기에 정의되어 있는 11,172개의 음절 문자는 한글 자모의 조합으로 구성할 수 있어야 하고, 이 문자 각각을 완성형 음절 문자로 간주할 수 있다. 한글 폰트는 이 영역의 글리프만을 가지고 있는 경우가 많고 현대 한국어 문자 생활에서 이 글자만으로 대부분 충족된다.
+\item[한글 호환 자모] 유니코드 블럭 \textsf{[U+3131]}--\textsf{[U+318E]}에 정의되어 있는 한글 자모(\emph{Hangul Compatibility Jamo}). KS X 1001:1998 표준과의 호환을 위하여 마련된 영역인데 여기에 나오는 한글 자모는 조합에 활용하지 않으며 각 자모를 독립된 문자로 간주한다.
+\end{description}
+
+\paragraph*{완성형과 조합형}
+1980년대와 90년대의 이른바 \href{https://namu.wiki/w/%EC%A1%B0%ED%95%A9%ED%98%95%20%EC%99%84%EC%84%B1%ED%98%95%20%EB%85%BC%EC%9F%81}{조합형\cntrdot 완성형 논쟁}은
+한글 전산화, 한글 코드의 표준 제정을 둘러싼 논쟁이었다.
+유니코드 2.0 이후 이것은 더이상 `논쟁'이 아니게 되었다. 오늘날 `완성형'이란
+한글 표현에 한글 음절 문자 영역의 코드를 사용한다는 의미에 가깝고, `조합형'이란 한글 자모 코드를 사용하여 한글을
+표현하는 것을 의미하게 되었다.
+예를 들어 ``한글과 텍''이라는 문자를 음절 문자 코드로 표현하면
+\begin{verbatim}
+[D55C] [AE00] [ACFC] [0020] [AC4D]
+\end{verbatim}
+처럼 되는데 이것을 자모 조합 코드로 표현하면
+\begin{verbatim}
+[1112] [1161] [11AB] % 한
+[1100] [1173] [11AF] % 글
+[1100] [116A] % 과
+[0020] % space
+[1110] [1166] [11A8] % 텍
+\end{verbatim}
+로 된다. 특히 자음은 초성과 중성에 서로 다른 코드가 할당되어 있어서
+이를 두고 ``첫가끝(LVT)'' 코드\footnote{LVT라는 것은
+leading consonant, vowel, trailing consonant의 첫 자를 딴 것이다.}%
+라고 부르기도 한다.
+자모 조합 코드는 음절 문자 코드에 비하여 몇 배 이상의 정보량을 요구하는 단점이 있으나
+(UTF-8로 인코딩하면 그 격차는 더 벌어진다. UTF-8의 3바이트면 한글 음절 문자 한 자를
+표현할 수 있지만 초중종성이 모두 있는 글자라면 무려 9바이트가 필요하다.)
+음절 문자로는 표현할 수 없는 한글을 기록하기 위해서는 이 방법밖에 없다.
+그래서 이른바 `옛한글'을 첫가끝 코드로 표현하는 것이다.
+
+\paragraph*{폰트 기술의 발전}
+코드가 그렇게 할당되었다 하더라도 이를 출력(표시)하는 것은 또다른 문제이다.
+폰트라는 관점에서 생각하였을 때
+한글 음절 영역 코드라면 각 코드에 글리프를 할당하면 되므로 비교적 간단한 편이고
+이것이면 문자 생활에 큰 불편이 없기 때문에 대부분의 한글 폰트가 이런 정도의 기능만을 가지고 있다.\footnote{유니코드의 한글
+음절 영역 문자 11,172자를 모두 자면으로 갖춘 폰트가 등장한 것도 실은 오랜 일이 아니다.
+그 전에는 소위 완성형 한글이라 불리는 2350자 글리프를 갖춘 것도 많았다.
+그런데 생각해보면 우리의 문자 생활이 과연 만자 정도를 필요로 하는가? 아마 수천 자
+안팎이면 거의 문제가 없을 것이라 생각한다. 음절 문자도 충분히 많은 수이다.}
+그런데 자모 조합의 경우에는 여러 코드를 조합하여
+이를 한 음절로 또는 한 음절처럼 표현하는 능력을 폰트가 갖추고 있어야 한다.
+이 글의 본문에서 간간이 ``\texttt{Script Hangul} 속성을 갖춘 글꼴''이라는 표현을 썼는데
+자모 조합 코드로부터 한글 음절을 식자하는 것이 가능한 폰트를 말하는 것이었다.
+GSUB/GPOS라는 트루타입 오픈의 속성을 이용하여
+이것이 가능하게 된 것은 21세기 들어서의 일이다. 이것을 거의 최초로 가능하게 하였던
+글꼴인 ``은 바탕''\footnote{이를 실험하고 구현한 신정식, 박원규 제씨의 기여는 기억할 가치가 있다.}의 역사적 의미는
+실로 적지 않다 하겠다. 그 후로 함초롬, 본명조와 같은 좋은 폰트들이 많아졌고,
+이제 우리는 고품위의 ``한글 표현에 제약이 없는'' 훌륭한 자유 폰트를 여럿 가지게 되었다.
+
+\paragraph*{텍 엔진의 발전}
+이와 더불어 \TeX 에는 \hologo{XeTeX} (그리고 \hologo{LuaTeX})의 새로운
+시대가 열렸다. 유니코드를 자유롭게 다룰 수 있게 되었다.
+
+\bigskip
+
+이 간단한 패키지는 이러한 기술적 발전을 그 배경으로 하고 있다.
+
+\paragraph*{여담: 두벌식과 세벌식}
+이 문제는 키보드 자판 배열 디자인에 관한 문제이고 여기서 다루는 것과 직접 관련이 있지는 않다.
+그러나 가끔 첫가끝 코드와 세벌식을 혼동하는 경우가 있어 여기 간략히 언급하기로 한다.
+어쨌든 세벌식은 초성과 종성에 다른 키를 할당하는 것이고 첫가끝 코드는 초성과 종성에 다른 코드를
+할당하는 것이니 연관이 없다고 할 수도 없겠다.
+
+세벌식을 선호하는 사람들이 가끔 하는 말 중에 ``한글 창제 원리에 맞다''는 것이 있다. 키보드는 익숙함의
+문제가 더 큰 것이라서 어떤 것이 더 좋다거나 나쁘다거나 말하는 것이 큰 의미가 없다고 생각하지만
+이 말에 대해서는 생각해볼 것이 있다. 아마도 초/중/종성을 구분하여 입력하는 것이, 초성과 중성, 종성을
+합하여 한 글자를 이룬다는 것과 상통한다는 말인 듯하다.
+그런데 훈민정음에서는 ``무릇 글자는 모름지기 어울려서 소리가 된다''고 하고 있는 한편,
+``종성에는 초성자를 다시 사용한다''고도 하고 있다. 이 소위 終聲復用初聲의 원리를 키보드에 (억지로)
+적용하면 ``종성 입력에는 초성 키를 다시 사용한다''라고 못할 것은 무엇인가?
+즉 두벌식이냐 세벌식이냐와 훈민정음 창제 원리는 아무 상관이 없는 것이다.
+
+내가 생각할 때 세벌식의 가장 큰 장점은 첫가끝 코드와 키보드의 입력 키를 ``직결''시킬
+수 있다는 점일 듯하다. 코드가 다르면 다른 키를 누른다는 것이다.
+매우 안심이 된다. 입력기를 설계하는 입장에서도 세벌식이라면 첫가끝 (자모 코드) 입력을
+더 편하게 구현할 수 있을 것 같다.
+그러나 사실상 현대 문자 생활에서 첫가끝 코드를 쓰는 일이 거의 없으므로 이 장점이 크게 부각되지
+못한 측면이 있다.
+
+여기까지 쓰고 보니 소위 ``직결식 글꼴''에도 생각이 미치는데 현재 알려진 직결식 글꼴이란 것은
+한글 자모 코드를 쓰는 것이 아니라 그저 폰트에서 영문자 알파벳이 놓일 위치에 한글을 가져다둔 것일
+뿐이라 별로 언급할 필요를 느끼지 못한다. 다만 공병우 박사가 생전에 이 직결 글꼴의 아이디어로
+한글 문자생활을 했다는 이야기가 흥미롭다.
+
+\section*{부록 \appsec. \ccnm{문장강화}의 한 페이지}
+
+\begin{figure}[hp]
+\centering
+\includegraphics[width=9cm]{munjangganghwa}
+\caption{이태준의 \ccnm{문장강화}의 한 페이지}\label{fig:mun}
+\end{figure}
+
+%\printindex
+
+\end{document} \ No newline at end of file
diff --git a/language/korean/pmhanguljamo/pmhanguljamo.sty b/language/korean/pmhanguljamo/pmhanguljamo.sty
new file mode 100644
index 0000000000..a491e5cdc7
--- /dev/null
+++ b/language/korean/pmhanguljamo/pmhanguljamo.sty
@@ -0,0 +1,630 @@
+%% `file: pmhanguljamo.sty
+%%
+%% Poorman's Hangul Jamo Input Method.
+%%
+%% (C) 2020 Kangsoo Kim <modviv2k15 at gmail.com>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Kangsoo Kim.
+%%
+%% This work consists of the file pmhanguljamo.sty
+%% and the documentation files pmhanguljamo-doc.tex and pmhanguljamo-doc.pdf.
+%%
+\RequirePackage{expl3,xparse}
+\ProvidesExplPackage
+ {pmhanguljamo}
+ {2020/01/20}
+ {v0.2.1}
+ {Poorman's Hangul Jamo Input Method}
+
+\NewDocumentCommand \jamotextcmd { m }
+{
+ \tl_set:Nn \l_tmpa_tl { #1 / }
+ \regex_replace_all:nnN { / } { |/ } \l_tmpa_tl
+ \regex_replace_all:nnN { ; } { ;/ } \l_tmpa_tl
+ \regex_replace_all:nnN { : } { :/ } \l_tmpa_tl
+
+ \exp_args:Nno \regex_split:nnN { / } { \l_tmpa_tl } \l_tmpa_seq
+
+ \seq_map_function:NN \l_tmpa_seq \build_syl:n
+}
+
+\tl_new:N \l_cho_tl
+\tl_new:N \l_jun_tl
+\tl_new:N \l_jon_tl
+\bool_new:N \l_jj_bool
+\seq_new:N \l_inputword_seq
+\seq_new:N \l_inputpar_seq
+
+\NewDocumentEnvironment { jamotext } { +b }
+{
+ \seq_set_split:Nnn \l_inputpar_seq { \par } { #1 }
+ \seq_indexed_map_function:NN \l_inputpar_seq \jamo_word:nn
+}{}
+
+\cs_new:Npn \jamo_word:nn #1 #2
+{
+ \jamoword { #2 }
+ \int_compare:nT { #1 < \seq_count:N \l_inputpar_seq }
+ { \par }
+}
+
+\NewDocumentCommand \jamoword { m }
+{
+ \seq_set_split:Nnn \l_inputword_seq { ~ } { #1 }
+ \seq_indexed_map_inline:Nn \l_inputword_seq
+ {
+ \jamotextcmd { ##2 }
+ \int_compare:nT { ##1 < \seq_count:N \l_inputword_seq }
+ { \space }
+ }
+}
+
+\cs_new:Npn \build_syl:n #1
+{
+ \bool_set_false:N \l_jj_bool
+ \tl_clear:N \l_cho_tl
+ \tl_clear:N \l_jun_tl
+ \tl_clear:N \l_jon_tl
+ \build_syl_fn:n #1 \q_recursion_tail \q_recursion_stop
+}
+
+\cs_new:Npn \build_syl_fn:n #1
+{
+ \quark_if_recursion_tail_stop_do:nn { #1 }
+ {
+ \exp_args:Nnx \regex_match:nnTF { [A-Z] } { \l_cho_tl }
+ {
+ \tl_reverse:N \l_cho_tl
+ \tl_set:Nx \l_tmpb_tl { \tl_tail:N \l_cho_tl }
+ \tl_reverse:N \l_tmpb_tl %%% remove trailing |
+ \exp_args:Nx \jmcc { \l_tmpb_tl }
+ }
+ {
+ \tl_reverse:N \l_jon_tl
+ \tl_set:Nx \l_tmpa_tl { \tl_head:N \l_jon_tl }
+ \tl_set:Nx \l_tmpb_tl { \tl_tail:N \l_jon_tl }
+ \tl_reverse:N \l_tmpb_tl
+
+ \exp_args:NNx \prop_item:Nn \c_cho_prop { \l_cho_tl }
+ \exp_args:NNx \prop_item:Nn \c_jung_prop { \l_jun_tl }
+ \exp_args:NNx \prop_item:Nn \c_jong_prop { \l_tmpb_tl }
+ \exp_args:NNx \prop_item:Nn \c_jong_prop { \l_tmpa_tl }
+ }
+ }
+
+ \regex_match:nnTF { [a-z;:@|] } { #1 }
+ {
+ \str_case:nnTF { #1 }
+ {
+ { a } { \tl_put_right:Nn \l_jun_tl { #1 } }
+ { e } { \tl_put_right:Nn \l_jun_tl { #1 } }
+ { o } { \tl_put_right:Nn \l_jun_tl { #1 } }
+ { u } { \tl_put_right:Nn \l_jun_tl { #1 } }
+ { v } { \tl_put_right:Nn \l_jun_tl { #1 } }
+ { i } { \tl_put_right:Nn \l_jun_tl { #1 } }
+ { y } { \tl_put_right:Nn \l_jun_tl { #1 } }
+ { @ } { \tl_put_right:Nn \l_jun_tl { #1 } }
+ }
+ {
+ \int_compare:nT { \tl_count:N \l_cho_tl == 0 }
+ { \tl_put_right:Nn \l_cho_tl { x } }
+ \bool_set_true:N \l_jj_bool
+ }
+ {
+ \bool_if:NTF \l_jj_bool
+ {
+ \tl_put_right:Nn \l_jon_tl { #1 }
+ }
+ {
+ \tl_put_right:Nn \l_cho_tl { #1 }
+ }
+ }
+ }
+ {
+ \regex_match:nnTF { [A-Z] } { #1 }
+ {
+ \tl_put_right:Nn \l_cho_tl { #1 }
+ }
+ {
+ #1
+ }
+ }
+
+ \build_syl_fn:n
+}
+
+\NewDocumentCommand \jmcc { m }
+{
+ \prop_item:Nn \c_compjamo_prop { #1 }
+}
+
+\NewDocumentCommand \ColonMark {} { : }
+\NewDocumentCommand \SemiColonMark {} { ; }
+\NewDocumentCommand \SlashMark {} { / }
+
+%%%%%%%%% DICTIONARIES
+\prop_const_from_keyval:Nn \c_cho_prop
+{
+ g = \char"1100,
+ gg = \char"1101,
+ n = \char"1102,
+ d = \char"1103,
+ dd = \char"1104,
+ r = \char"1105,
+ m = \char"1106,
+ b = \char"1107,
+ bb = \char"1108,
+ s = \char"1109,
+ ss = \char"110A,
+ x = \char"110B,
+ j = \char"110C,
+ jj = \char"110D,
+ c = \char"110E,
+ k = \char"110F,
+ t = \char"1110,
+ p = \char"1111,
+ h = \char"1112,
+ ng = \char"1113,
+ nn = \char"1114,
+ nd = \char"1115,
+ nb = \char"1116,
+ dg = \char"1117,
+ rn = \char"1118,
+ rr = \char"1119,
+ rh = \char"111A,
+ rx = \char"111B,
+ mb = \char"111C,
+ mx = \char"111D,
+ bg = \char"111E,
+ bn = \char"111F,
+ bd = \char"1120,
+ bs = \char"1121,
+ bsg = \char"1122,
+ bsd = \char"1123,
+ bsb = \char"1124,
+ bss = \char"1125,
+ bsj = \char"1126,
+ bj = \char"1127,
+ bc = \char"1128,
+ bt = \char"1129,
+ bp = \char"112A,
+ bx = \char"112B,
+ bbx = \char"112C,
+ sg = \char"112D,
+ sn = \char"112E,
+ sd = \char"112F,
+ sr = \char"1130,
+ sm = \char"1131,
+ sb = \char"1132,
+ sbg = \char"1133,
+ sss = \char"1134,
+ sq = \char"1135,
+ sj = \char"1136,
+ sc = \char"1137,
+ sk = \char"1138,
+ st = \char"1139,
+ sp = \char"113A,
+ sh = \char"113B,
+ sl = \char"113C,
+ ssl = \char"113D,
+ slr = \char"113E,
+ sslr = \char"113F,
+ z = \char"1140,
+ xg = \char"1141,
+ xd = \char"1142,
+ xm = \char"1143,
+ xb = \char"1144,
+ xs = \char"1145,
+ xz = \char"1146,
+ xx = \char"1147,
+ xj = \char"1148,
+ xc = \char"1149,
+ xt = \char"114A,
+ xp = \char"114B,
+ q = \char"114C,
+ jx = \char"114D,
+ jl = \char"114E,
+ jjl = \char"114F,
+ jlr = \char"1150,
+ jjlr = \char"1151,
+ ck = \char"1152,
+ ch = \char"1153,
+ cl = \char"1154,
+ clr = \char"1155,
+ pb = \char"1156,
+ px = \char"1157,
+ hh = \char"1158,
+ f = \char"1159,
+%%% Extended-A
+ dm = \char"A960,
+ db = \char"A961,
+ ds = \char"A962,
+ dj = \char"A963,
+ rg = \char"A964,
+ rgg = \char"A965,
+ rd = \char"A966,
+ rdd = \char"A967,
+ rm = \char"A968,
+ rb = \char"A969,
+ rbb = \char"A96A,
+ rbx = \char"A96B,
+ rs = \char"A96C,
+ rj = \char"A96D,
+ rk = \char"A96E,
+ mg = \char"A96F,
+ md = \char"A970,
+ ms = \char"A971,
+ bst = \char"A972,
+ bk = \char"A973,
+ bh = \char"A974,
+ ssb = \char"A975,
+ xr = \char"A976,
+ xh = \char"A977,
+ jjh = \char"A978,
+ tt = \char"A979,
+ ph = \char"A97A,
+ hs = \char"A97B,
+ ff = \char"A97C,
+%%% Choseong Filler
+ w = \char"115F
+}
+
+\prop_const_from_keyval:Nn \c_jung_prop
+{
+ a = \char"1161,
+ ay = \char"1162,
+ ya = \char"1163,
+ yay = \char"1164,
+ e = \char"1165,
+ ey = \char"1166,
+ ye = \char"1167,
+ yey = \char"1168,
+ o = \char"1169,
+ oa = \char"116A,
+ oay = \char"116B,
+ oy = \char"116C,
+ yo = \char"116D,
+ u = \char"116E,
+ ue = \char"116F,
+ uey = \char"1170,
+ uy = \char"1171,
+ yu = \char"1172,
+ v = \char"1173,
+ vi = \char"1174,
+ i = \char"1175,
+ ao = \char"1176,
+ au = \char"1177,
+ yao = \char"1178,
+ yayo = \char"1179,
+ eo = \char"117A,
+ eu = \char"117B,
+ ev = \char"117C,
+ yeo = \char"117D,
+ yeu = \char"117E,
+ oe = \char"117F,
+ oey = \char"1180,
+ oyey = \char"1181,
+ oo = \char"1182,
+ ou = \char"1183,
+ yoya = \char"1184,
+ yoyay = \char"1185,
+ yoye = \char"1186,
+ yoo = \char"1187,
+ yoi = \char"1188,
+ ua = \char"1189,
+ uay = \char"118A,
+ uev = \char"118B,
+ uyey = \char"118C,
+ uu = \char"118D,
+ yua = \char"118E,
+ yue = \char"118F,
+ yuey = \char"1190,
+ yuye = \char"1191,
+ yuyey = \char"1192,
+ yuu = \char"1193,
+ yui = \char"1194,
+ vu = \char"1195,
+ vv = \char"1196,
+ viu = \char"1197,
+ ia = \char"1198,
+ iya = \char"1199,
+ io = \char"119A,
+ iu = \char"119B,
+ iv = \char"119C,
+ i@ = \char"119D,
+ @ = \char"119E,
+ @e = \char"119F,
+ @u = \char"11A0,
+ @i = \char"11A1,
+ @@ = \char"11A2,
+%% extended-b
+ oye = \char"D7B0,
+ ou = \char"D7B1,
+ yoa = \char"D7B2,
+ yoay = \char"D7B3,
+ yoe = \char"D7B4,
+ uye = \char"D7B5,
+ uii = \char"D7B6,
+ yuay = \char"D7B7,
+ yuo = \char"D7B8,
+ va = \char"D7B9,
+ ve = \char"D7BA,
+ vey = \char"D7BB,
+ vo = \char"D7BC,
+ iyao = \char"D7BD,
+ iyay = \char"D7BE,
+ iye = \char"D7BF,
+ iyey = \char"D7C0,
+ @iu = \char"D7C1,
+ iyo = \char"D7C2,
+ iyu = \char"D7C3,
+ ii = \char"07C4,
+ @a = \char"D7C5,
+ @ey = \char"D7C6,
+%% for avoiding errors,
+ ai = \char"1162,
+ yai = \char"1164,
+ ei = \char"1166,
+ yei = \char"1168,
+ oi = \char"116C,
+ ui = \char"1171,
+ oai = \char"116B,
+ uei = \char"1170,
+ vy = \char"1174
+}
+
+\prop_const_from_keyval:Nn \c_jong_prop
+{
+ g = \char"11A8,
+ gg = \char"11A9,
+ gs = \char"11AA,
+ n = \char"11AB,
+ nj = \char"11AC,
+ nh = \char"11AD,
+ d = \char"11AE,
+ r = \char"11AF,
+ rg = \char"11B0,
+ rm = \char"11B1,
+ rb = \char"11B2,
+ rs = \char"11B3,
+ rt = \char"11B4,
+ rp = \char"11B5,
+ rh = \char"11B6,
+ m = \char"11B7,
+ b = \char"11B8,
+ bs = \char"11B9,
+ s = \char"11BA,
+ ss = \char"11BB,
+ x = \char"11BC,
+ j = \char"11BD,
+ c = \char"11BE,
+ k = \char"11BF,
+ t = \char"11C0,
+ p = \char"11C1,
+ h = \char"11C2,
+ gr = \char"11C3,
+ gsg = \char"11C4,
+ ng = \char"11C5,
+ nd = \char"11C6,
+ ns = \char"11C7,
+ nz = \char"11C8,
+ nt = \char"11C9,
+ dg = \char"11CA,
+ dr = \char"11CB,
+ rgs = \char"11CC,
+ rn = \char"11CD,
+ rd = \char"11CE,
+ rdh = \char"11CF,
+ rr = \char"11D0,
+ rmg = \char"11D1,
+ rms = \char"11D2,
+ rbs = \char"11D3,
+ rbh = \char"11D4,
+ rbx = \char"11D5,
+ rss = \char"11D6,
+ rz = \char"11D7,
+ rk = \char"11D8,
+ rf = \char"11D9,
+ mg = \char"11DA,
+ mr = \char"11DB,
+ mb = \char"11DC,
+ ms = \char"11DD,
+ mss = \char"11DE,
+ mz = \char"11DF,
+ mc = \char"11E0,
+ mh = \char"11E1,
+ mx = \char"11E2,
+ br = \char"11E3,
+ bp = \char"11E4,
+ bh = \char"11E5,
+ bx = \char"11E6,
+ sg = \char"11E7,
+ sd = \char"11E8,
+ sr = \char"11E9,
+ sb = \char"11EA,
+ z = \char"11EB,
+ qg = \char"11EC,
+ qgg = \char"11ED,
+ qq = \char"11EE,
+ qk = \char"11EF,
+ q = \char"11F0,
+ qs = \char"11F1,
+ qz = \char"11F2,
+ pb = \char"11F3,
+ px = \char"11F4,
+ hn = \char"11F5,
+ hr = \char"11F6,
+ hm = \char"11F7,
+ hb = \char"11F8,
+ f = \char"11F9,
+%% extended-b
+ ds = \char"D7D0,
+ dsg = \char"D7D1,
+ dj = \char"D7D2,
+ dc = \char"D7D3,
+ dt = \char"D7D4,
+ rgg = \char"D7D5,
+ rgh = \char"D7D6,
+ rrz = \char"D7D7,
+ rmh = \char"D7D8,
+ rbd = \char"D7D9,
+ rbp = \char"D7DA,
+ rq = \char"D7DB,
+ rqh = \char"D7DC,
+ rx = \char"D7DD,
+ mn = \char"D7DE,
+ mnn = \char"D7DF,
+ mm = \char"D7E0,
+ mbs = \char"D7E1,
+ mj = \char"D7E2,
+ bd = \char"D7E3,
+ brp = \char"D7E4,
+ bm = \char"D7E5,
+ bb = \char"D7E6,
+ bsd = \char"D7E7,
+ bj = \char"D7E8,
+ bc = \char"D7E9,
+ sm = \char"D7EA,
+ sbx = \char"D7EB,
+ ssg = \char"D7EC,
+ ssd = \char"D7ED,
+ sz = \char"D7EE,
+ sj = \char"D7EF,
+ sc = \char"D7F0,
+ st = \char"D7F1,
+ sh = \char"D7F2,
+ zb = \char"D7F3,
+ zbx = \char"D7F4,
+ qm = \char"D7F5,
+ qh = \char"D7F6,
+ jb = \char"D7F7,
+ jbb = \char"D7F8,
+ jj = \char"D7F9,
+ ps = \char"D7FA,
+ pt = \char"D7FB,
+%% tone markers
+ ; = \char"302E,
+ : = \char"302F,
+ | = {}
+}
+
+\prop_const_from_keyval:Nn \c_compjamo_prop
+{
+ G = \char"3131,
+ GG = \char"3132,
+ GS = \char"3133,
+ N = \char"3134,
+ NJ = \char"3135,
+ NH = \char"3136,
+ D = \char"3137,
+ DD = \char"3138,
+ R = \char"3139,
+ RG = \char"313A,
+ RM = \char"313B,
+ RB = \char"313C,
+ RS = \char"313D,
+ RT = \char"313E,
+ RP = \char"313F,
+ RH = \char"3140,
+ M = \char"3141,
+ B = \char"3142,
+ BB = \char"3143,
+ BS = \char"3144,
+ S = \char"3145,
+ SS = \char"3146,
+ X = \char"3147,
+ J = \char"3148,
+ JJ = \char"3149,
+ C = \char"314A,
+ K = \char"314B,
+ T = \char"314C,
+ P = \char"314D,
+ H = \char"314E,
+ A = \char"314F,
+ AY = \char"3150,
+ AI = \char"3150,
+ YA = \char"3151,
+ YAY = \char"3152,
+ YAI = \char"3152,
+ E = \char"3153,
+ EY = \char"3154,
+ EI = \char"3154,
+ YE = \char"3155,
+ YEY = \char"3156,
+ YEI = \char"3156,
+ O = \char"3157,
+ OA = \char"3158,
+ OAY = \char"3159,
+ OAI = \char"3159,
+ OY = \char"315A,
+ OI = \char"315A,
+ YO = \char"315B,
+ U = \char"315C,
+ UE = \char"315E,
+ UEY = \char"315E,
+ UEI = \char"315E,
+ UY = \char"315F,
+ UI = \char"315F,
+ YU = \char"3160,
+ V = \char"3161,
+ VI = \char"3162,
+ VY = \char"3162,
+ I = \char"3163,
+ NN = \char"3165,
+ ND = \char"3166,
+ NS = \char"3167,
+ NZ = \char"3168,
+ RGS = \char"3169,
+ RD = \char"316A,
+ RBS = \char"316B,
+ RZ = \char"316C,
+ RF = \char"316D,
+ MB = \char"316E,
+ MS = \char"316F,
+ MZ = \char"3170,
+ MX = \char"3171,
+ BG = \char"3172,
+ BD = \char"3173,
+ BSG = \char"3174,
+ BSD = \char"3175,
+ BJ = \char"3176,
+ BT = \char"3177,
+ BX = \char"3178,
+ BBX = \char"3179,
+ SG = \char"317A,
+ SN = \char"317B,
+ SD = \char"317C,
+ SB = \char"317D,
+ SJ = \char"317E,
+ Z = \char"317F,
+ XX = \char"3180,
+ Q = \char"3181,
+ QS = \char"3182,
+ QZ = \char"3183,
+ PX = \char"3184,
+ HH = \char"3185,
+ F = \char"3186,
+ YOYA = \char"3187,
+ YOYAY = \char"3188,
+ YOI = \char"3189,
+ YUYE = \char"318A,
+ YUYEY = \char"318B,
+ YUI = \char"318C,
+ W = \char"318D,
+ WI = \char"318E,
+ @ = \char"318D,
+ @I = \char"318E
+}
+
+\endinput
+