From e684f0597e24a1d09af301d82b340b2df7cf2080 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 6 Feb 2020 03:01:38 +0000 Subject: CTAN sync 202002060301 --- .../korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf | Bin 134637 -> 134520 bytes .../korean/pmhanguljamo/doc/pmhanguljamo-doc.tex | 6 +- .../korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf | Bin 531457 -> 532188 bytes .../korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex | 67 +-- .../korean/pmhanguljamo/tex/pmhanguljamo-rrk.sty | 510 +++++++++++++++++++++ .../korean/pmhanguljamo/tex/pmhanguljamo-rrk.tex | 510 --------------------- language/korean/pmhanguljamo/tex/pmhanguljamo.sty | 247 +++++----- 7 files changed, 681 insertions(+), 659 deletions(-) create mode 100644 language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.sty delete mode 100644 language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.tex (limited to 'language') diff --git a/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf b/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf index ebba34566e..e0f753716e 100644 Binary files a/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf and b/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf differ diff --git a/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex b/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex index 2410460662..d91294a3b5 100644 --- a/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex +++ b/language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex @@ -30,7 +30,7 @@ \title{Poorman's Hangul Jamo Input Method \\ \Large \texttt{pmhanguljamo.sty} } \author{Kangsoo Kim} -\date{30 Jan 2020\quad version 0.3.1} +\date{06 Feb 2020\quad version 0.3.2} \maketitle @@ -494,7 +494,7 @@ e/nv na/ri i do/ra/gar h@i/o/. \let\jamotext\relax \let\endjamotext\relax \ExplSyntaxOn -\input pmhanguljamo-rrk.tex +\input pmhanguljamo-rrk.sty \ExplSyntaxOff @@ -577,7 +577,7 @@ The `Arae-A' is to be input as `\texttt{@}' character, and the `Double Arae-A' ` has only leading `@', i.e., \textkorean{\jamoword{x@}} should be input by `\verb|x@|'. If the syllable has trailing consonants or is part of a word, just \verb|@| is good. \\ -\verb|\jamoword{h@ngeul @@nam-eun}| \textkorean{\jamoword{h@ngeul @@nam-eun}}. +\verb|\jamoword{h@ngeul @@nam-eun}| \textkorean{\jamoword{h@ngeul @@d@b}}. \end{enumerate} diff --git a/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf b/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf index 667684c6db..215916ed29 100644 Binary files a/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf and b/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf differ diff --git a/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex b/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex index 6a47752169..b36c3641b5 100644 --- a/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex +++ b/language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex @@ -61,7 +61,8 @@ %\date{2020/07/19\quad v0.2.0} %\date{2020/01/20\quad v0.2.1} %\date{2020/01/28\quad v0.3} -\date{2020/01/30\quad v0.3.1} +%\date{2020/01/30\quad v0.3.1} +\date{2020/02/05\quad v0.3.2} \maketitle @@ -166,11 +167,12 @@ mun/jj@x;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i; 호환 자모를 \cmda{\jamoword} 명령의 인자 안에서 쓰는 방법은 \ref{sec:compjamo}절을 보라. 이 명령은 본문 중에서 독립적으로 쓰기 위해 마련되었다. 인자로 단 하나의 자모만이 와야 한다. 설령 \texttt{RRK} 옵션을 부여하여 RRK 입력 방법을 쓰는 때라도 -이 명령의 인자는 이 패키지의 고유한 전자 규칙을 따른다. +이 명령의 인자는 이 패키지의 고유한 전자 규칙을 따른다. 쌍아래아는 유니코드 호환 자모에는 정의되어 있지 +않으나 편의를 위하여 조판할 수 있도록 해두었다. \medskip \begin{exampleside} -\jmcc{BSG} \jmcc{@} \jmcc{UEY} +\jmcc{BSG} \jmcc{@} \jmcc{UEY} \jmcc{@@} \end{exampleside} \section{轉字 규칙} \label{sec:pmrule} @@ -225,13 +227,13 @@ mun/jj@x;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i; \centering \caption{알파벳-자모 대응 규칙: 자음}\label{tab:cons} \ttfamily -\begin{tabular}{ll|ll|ll|ll} +\begin{tabular}{ll|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} & & & & & & \\ +ㄱ & g & ㄴ & n & ㄷ & d & ㄹ & r & ㅁ & m \\ +ㅂ & b & ㅅ & s & ㅇ & \textbf{x} & ㅈ & j & ㅊ & c \\ +ㅋ & k & ㅌ & t & ㅍ & p & ㅎ & h & & \\ \hline +\char"3181 & \textbf{q} & \char"317F & \textbf{z} & +\char"3186 & \textbf{f} & & & & \\ \hline \end{tabular} \end{table} @@ -284,29 +286,31 @@ mun/jj@x;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i; \verb|\jamoword{g@i}| \jamoword{g@i}. -\item `쌍아래아'는 현대의 제주어 표기에서 이따금 필요하다. 모양대로 \verb|@@|로 적으며 \verb|y@|를 취하지 않았다. 현대 국어에서 이 글자의 소리는 잊혀진 것이라서 소리로 연상할 수 없기 때문이다.\\ +\item `쌍아래아(\jmcc{@@})'는 현대의 제주어 표기에서 이따금 필요하다. 모양대로 \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/}. 물론 폰트가 이를 지원해야 한다. +\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;} +별도로 \cmda{\jmcc}를 쓰지 않는다. 그러나 반드시 하나의 자모가 한 음절이어야 한다. -\verb|\jamoword{孟m@ix/子j@/I/ g@r/@/sya/d@i}| +\begin{exampleside} +\jamoword{B/n@n; ib/si/ur;sso/ri;ni;} \\ \jamoword{孟m@ix/子j@/I g@r/@/sya/d@i} +\end{exampleside} \medskip 호환 자모 아래아 `\jmcc{@}'를 \cmda{\jamoword} 인자 안에서 식자하려 할 때는 자모 아래아 `\jamoword{w@}'와 -구별하기 위해 대문자 \texttt{W}로 표기해야 한다. \verb|W|와 \verb|WI|만이 지원된다. +구별하기 위해 대문자 \texttt{W}로 표기해야 한다. \verb|W|, \verb|WW|, \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;.} +\begin{exampleside} +\jamoword{W/n@n; 呑t@n/D/字/jj@x; ga/on;d@is;so/ri; g@;t@;ni/ra;.}\\ +\jamoword{WW/nvn jei/ju/e pyo/gi/ei i/yox/doin/da/.} +\end{exampleside} \subsubsection{문장 부호, 한자와 음절 한글} @@ -608,7 +612,7 @@ nar;ro; bsu;mey; \let\jamotext\relax \let\endjamotext\relax \ExplSyntaxOn -\input {pmhanguljamo-rrk.tex} +\input {pmhanguljamo-rrk.sty} \ExplSyntaxOff 패키지 옵션으로 \verb|[rrk]| 또는 \verb|[RRK]|가 주어지면 입력 규칙이 표준 로마자 표기법 전자법 방식으로 @@ -626,6 +630,18 @@ RRK는 이 문서의 영어 명칭인 \emph{Revised Romanization of Korean}의 \subsection{RRK 전자 규칙} +\begin{table}[h] +\centering +\begin{tabular}{ll|ll|ll|ll|ll|ll} +\hline +\multicolumn{12}{l}{자음}\\ \hline +ㄱ & g & ㄲ & kk & ㅋ & k & ㄷ & d & ㄸ & tt & ㅌ & t \\ +ㅂ & b & ㅃ & pp & ㅍ & p & ㅈ & j & ㅉ & jj & ㅊ & ch \\ +ㅅ & s & ㅆ & ss & ㅎ & h & & & & & & \\ +ㄴ & n & ㅁ & m & ㅇ & ng & ㄹ & l & & & & \\ \hline +\end{tabular} +\end{table} + \begin{table}[h] \centering \begin{tabular}{ll|ll|ll|ll|ll|ll} @@ -638,17 +654,6 @@ RRK는 이 문서의 영어 명칭인 \emph{Revised Romanization of Korean}의 \end{tabular} \end{table} -\begin{table}[h] -\centering -\begin{tabular}{ll|ll|ll|ll|ll|ll} -\hline -\multicolumn{12}{l}{자음}\\ \hline -ㄱ & g & ㄲ & kk & ㅋ & k & ㄷ & d & ㄸ & tt & ㅌ & t \\ -ㅂ & b & ㅃ & pp & ㅍ & p & ㅈ & j & ㅉ & jj & ㅊ & ch \\ -ㅅ & s & ㅆ & ss & ㅎ & h & & & & & & \\ -ㄴ & n & ㅁ & m & ㅇ & ng & ㄹ & l & & & & \\ \hline -\end{tabular} -\end{table} \begin{enumerate}[(1)] \firmlist \item 단어의 첫소리 `ㅇ'은 적지 않는다. 그밖의 초성 이응은 \verb|-|로 적는다. \\ @@ -786,6 +791,8 @@ Expl3는 내가 원하는 일을 너무나 간단하게 구현할 수 있게 해 \textbullet\ v0.3.1 (2020/01/30): RRK 입력 방법에서 한글 음절 문자 구성 방법 개선. 일부 문장부호 추가. +\textbullet\ v0.3.2 (2020/02/05): RRK에서도 \verb|\jmcc|를 쓸 수 있게 하고 \verb|\jmcc|의 인자로 \verb|@@|를 허용함. + %%% APPENDICES \ExplSyntaxOn \int_new:N \l_appsec_int diff --git a/language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.sty b/language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.sty new file mode 100644 index 0000000000..a39cfac1f6 --- /dev/null +++ b/language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.sty @@ -0,0 +1,510 @@ +% +% subroutine of pmhanguljamo.sty +%. v0.3.2 (2020/02/05) +% +\seq_new:N \l_textjm_seq + +\NewDocumentEnvironment { jamotext } { +b } +{ + \seq_set_split:Nnn \l_textjm_seq {\par} { #1 } + \seq_indexed_map_inline:Nn \l_textjm_seq + { + \jamoword { ##2 } + \int_compare:nT { ##1 < \seq_count:N \l_textjm_seq } + { + \par + } + } +}{} + +\tl_new:N \l_tmpz_tl + +\NewDocumentCommand \jamoword { m } +{ + \seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 } + \seq_indexed_map_inline:Nn \l_tmpa_seq + { + \tl_set:Nn \l_tmpz_tl { ##2 } + \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { - } + { + \regex_replace_all:nnN { \- } { \/\- } \l_tmpz_tl + } + \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { . } + { + \regex_replace_all:nnN { \. } { \/\. } \l_tmpz_tl + } + \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { , } + { + \regex_replace_all:nnN { \, } { \/\, } \l_tmpz_tl + } + \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { ! } + { + \regex_replace_all:nnN { \! } { \/\! } \l_tmpz_tl + } + \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { ? } + { + \regex_replace_all:nnN { \? } { \/\? } \l_tmpz_tl + } + \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { : } + { + \regex_replace_all:nnN { \: } { \/\: } \l_tmpz_tl + } + \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { ; } + { + \regex_replace_all:nnN { \; } { \/\; } \l_tmpz_tl + } + + \exp_args:No \str_if_in:nnTF { \l_tmpz_tl } { / } + { + \exp_args:NNno \seq_set_split:Nnn \l_tmpb_seq { / } { \l_tmpz_tl } + \seq_map_function:NN \l_tmpb_seq \rrk_fn_outer:n + } + { + \exp_args:No \rrk_a_word:n { \l_tmpz_tl } + } + \int_compare:nT { \seq_count:N \l_tmpa_seq > ##1 } + { + \space + } + } +} + +\cs_new:Npn \rrk_fn_outer:n #1 +{ + \rrk_a_word:n { #1 } +} + +\cs_new_nopar:Npn \rrk_a_word:n #1 +{ + \seq_gclear:N \g_outsyl_tl + + \regex_match:nnTF { [a-zA-Z0 ] } { #1 } + { + \exp_args:NNnx \seq_set_split:Nnn \g_tmpa_seq {} { \str_lowercase:f { #1 } } + + \int_step_inline:nn { 9 } + { + \seq_put_right:Nn \g_tmpa_seq { 0 } + } + + \cho_fn: + + \seq_use:Nn \g_outsyl_tl { } + } + { + #1 + } +} + +\cs_new:Npn \insert_out:n #1 +{ + \seq_put_right:Nn \g_outsyl_tl { #1 } +} + +\cs_new:Npn \prepare_three_tk: +{ + \seq_pop_left:NN \g_tmpa_seq \l_tmpa_tl + \seq_pop_left:NN \g_tmpa_seq \l_tmpb_tl + \seq_pop_left:NN \g_tmpa_seq \l_tmpc_tl +} + +\cs_new:Npn \cho_fn: +{ + \prepare_three_tk: + + \str_case_e:nn { \l_tmpa_tl } + { +% Zero 자음 + { @ } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } + { a } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } + { e } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } + { i } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } + { o } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } + { u } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } + { w } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } + { y } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } + + { g } { \insert_out:n { ᄀ } \restore_c: \restore_b: } + { n } { \insert_out:n { ᄂ } \restore_c: \restore_b: } + { d } { \insert_out:n { ᄃ } \restore_c: \restore_b: } + { l } { \insert_out:n { ᄅ } \restore_c: \restore_b: } + { r } { \insert_out:n { ᄅ } \restore_c: \restore_b: } + { m } { \insert_out:n { ᄆ } \restore_c: \restore_b: } + { b } { \insert_out:n { ᄇ } \restore_c: \restore_b: } + { c } { \insert_out:n { ᄎ } \restore_c: } + { h } { \insert_out:n { ᄒ } \restore_c: \restore_b: } + { x } { \insert_out:n { ᄋ } \restore_c: \restore_b: } + + { s } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { s } + { \insert_out:n { ᄊ } \restore_c: } + { \insert_out:n { ᄉ } \restore_c: \restore_b: } } + { j } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { j } + { \insert_out:n { ᄍ } \restore_c: } + { \insert_out:n { ᄌ } \restore_c: \restore_b: } } + { k } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { k } + { \insert_out:n { ᄁ } \restore_c: } + { \insert_out:n { ᄏ } \restore_c: \restore_b: } } + { t } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { t } + { \insert_out:n { ᄄ } \restore_c: } + { \insert_out:n { ᄐ } \restore_c: \restore_b: } } + { p } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { p } + { \insert_out:n { ᄈ } \restore_c: } + { \insert_out:n { ᄑ } \restore_c: \restore_b: } } + { - } { \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpb_tl } + { \insert_out:n { ᄋ } \restore_c: \restore_b: } + { \insert_out:n { } \restore_c: \restore_b: \cho_fn: } + } + } + \jung_fn: +} + +\cs_new:Npn \jung_fn: +{ + \prepare_three_tk: + + \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { 0 } + { \scan_stop: } + { + \str_case_e:nn { \l_tmpa_tl } + { + { i } { \insert_out:n { ᅵ } \restore_c: \restore_b: } + { o } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { e } + { \insert_out:n { ᅬ } \restore_c: } + { \insert_out:n { ᅩ } \restore_c: \restore_b: } } + { u } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { i } + { \insert_out:n { ᅴ } \restore_c: } + { \insert_out:n { ᅮ } \restore_c: \restore_b: } } + { a } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { e } + { \insert_out:n { ᅢ } \restore_c: } + { \insert_out:n { ᅡ } \restore_c: \restore_b: } } + { e } { \str_case_e:nnF { \l_tmpb_tl } + { + { o } { \insert_out:n { ᅥ } \restore_c: } + { u } { \insert_out:n { ᅳ } \restore_c: } + } + { \insert_out:n { ᅦ } \restore_c: \restore_b: } + } + { @ } { \str_case_e:nnF { \l_tmpb_tl } + { + { @ } { \insert_out:n { ᆢ } \restore_c: } + { i } { \insert_out:n { ᆡ } \restore_c: } + } + { \insert_out:n { ᆞ } \restore_c: \restore_b: } + } + + { y } { \str_case_e:nn { \l_tmpb_tl } + { + { o } { \insert_out:n { ᅭ } \restore_c: } + { u } { \insert_out:n { ᅲ } \restore_c: } + { a } { \exp_args:No \str_if_eq:nnTF { \l_tmpc_tl } { e } + { \insert_out:n { ᅤ } } + { \insert_out:n { ᅣ } \restore_c: } } + { e } { \exp_args:No \str_if_eq:nnTF { \l_tmpc_tl } { o } + { \insert_out:n { ᅧ } } + { \insert_out:n { ᅨ } \restore_c: } } + } + } + { w } { \str_case_e:nn { \l_tmpb_tl } + { + { o } { \insert_out:n { ᅯ } \restore_c: } + { i } { \insert_out:n { ᅱ } \restore_c: } + { e } { \insert_out:n { ᅰ } \restore_c: } + { a } { \exp_args:No \str_if_eq:nnTF { \l_tmpc_tl } { e } + { \insert_out:n { ᅫ } } + { \insert_out:n { ᅪ } \restore_c: } } + } + } + } + + \jong_fn: + } +} + +\cs_new:Npn \prepare_five_tk: +{ + \seq_pop_left:NN \g_tmpa_seq \l_tmpa_tl + \seq_pop_left:NN \g_tmpa_seq \l_tmpb_tl + \seq_pop_left:NN \g_tmpa_seq \l_tmpc_tl + \seq_pop_left:NN \g_tmpa_seq \l_tmpd_tl + \seq_pop_left:NN \g_tmpa_seq \l_tmpe_tl +} + +\cs_new:Npn \jong_fn: +{ + \prepare_five_tk: + + \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { 0 } + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl } + } + { + \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpb_tl } + { + \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: + \cho_fn: + } + { + \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpc_tl } + { + \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: + \take_jong_two: + } + { + \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpd_tl } + { + \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: + \take_jong_three: + } + { + \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpe_tl } + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } +% \exp_args:Nx \insert_out:n { \l_tmpc_tl \l_tmpd_tl } + \restore_e: \restore_d: \restore_c: + \cho_fn: + } + { + \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: + \take_jong_four: + } + } + } + } + } +} + +\cs_new:Npn \take_jong_four: +{ + \prepare_five_tk: + \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { 0 } + { \scan_stop: } + { + \exp_args:Nx \insert_jong:n { \tl_use:N \l_tmpa_tl \tl_use:N \l_tmpb_tl } + \restore_e: \restore_d: \restore_c: + \cho_fn: + } +} + +\cs_new:Npn \insert_jong:n #1 +{ + \str_case:nn { #1 } + { + { kk } { \insert_out:n { ᆩ } } + { gs } { \insert_out:n { ᆪ } } + { g } { \insert_out:n { ᆨ } } + { nj } { \insert_out:n { ᆬ } } + { nh } { \insert_out:n { ᆭ } } + { n } { \insert_out:n { ᆫ } } + { d } { \insert_out:n { ᆮ } } + { lg } { \insert_out:n { ᆰ } } + { lm } { \insert_out:n { ᆱ } } + { lb } { \insert_out:n { ᆲ } } + { ls } { \insert_out:n { ᆳ } } + { lt } { \insert_out:n { ᆴ } } + { lp } { \insert_out:n { ᆵ } } + { lh } { \insert_out:n { ᆶ } } + { l } { \insert_out:n { ᆯ } } + { m } { \insert_out:n { ᆷ } } + { bs } { \insert_out:n { ᆹ } } + { b } { \insert_out:n { ᆸ } } + { ss } { \insert_out:n { ᆻ } } + { s } { \insert_out:n { ᆺ } } + { ng } { \insert_out:n { ᆼ } } + { j } { \insert_out:n { ᆽ } } + { ch } { \insert_out:n { ᆾ } } + { k } { \insert_out:n { ᆿ } } + { t } { \insert_out:n { ᇀ } } + { p } { \insert_out:n { ᇁ } } + { h } { \insert_out:n { ᇂ } } + { / } { \insert_out:n { 0 } } + } +} + +\cs_new:Npn \take_jong_three: +{ + \prepare_three_tk: + \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { 0 } + { \scan_stop: } + { +%% XX- + \exp_args:No \str_if_eq:nnTF { \l_tmpc_tl } { - } + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } + \restore_c: + } + { + \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { - } + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl } + \restore_c: \restore_b: + } + { + \check_jong_sub: + } + } + \cho_fn: + } +} + + +\cs_new:Npn \check_jong_sub: +{ + \exp_args:Noo \str_if_eq:nnTF { \l_tmpb_tl } { \l_tmpc_tl } + { + \exp_args:Noo \str_if_eq:nnTF { \l_tmpa_tl } { \l_tmpb_tl } %%% sss + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } %% ss-s + \restore_c: + } + { + \exp_args:Nno \str_if_in:nnTF { tpkj } { \l_tmpb_tl } + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl } + \restore_c: \restore_b: + } + { + \check_jong_sub_last: + } + } + } + { + \str_if_eq:eeTF { \l_tmpa_tl } { k } + { + \str_if_eq:eeTF { \l_tmpb_tl } { k } %% kk-g + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } + \restore_c: + } + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl } + \restore_c: \restore_b: + } + } + { + \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { c } %%% chX + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } + \restore_c: + } + { + \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { c } %%% Xch + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl } + \restore_c: \restore_b: + } + { + \check_jong_sub_last: + } + } + } + } +} + +\cs_new:Npn \check_jong_sub_last: +{ + \str_case_e:nnTF { \l_tmpa_tl } + { + { n } { \str_case_e:nn { \l_tmpb_tl } + { + { j } { } + { g } { } + { h } { } + } + } + { g } { \str_case_e:nn { \l_tmpb_tl } + { + { s } { } + } + } + { l } { \str_case_e:nn { \l_tmpb_tl } + { + { g } { } + { m } { } + { b } { } + { s } { } + { t } { } + { p } { } + { h } { } + } + } + { b } { \str_case_e:nn { \l_tmpb_tl } + { + { s } { } + } + } + { s } { \str_case_e:nn { \l_tmpb_tl } + { + { s } { } + } + } + } + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } + \restore_c: + } + { + \exp_args:Nx \insert_jong:n { \l_tmpa_tl } + \restore_c: \restore_b: + } +} + +\cs_new:Npn \take_jong_two: +{ + \prepare_three_tk: + \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { 0 } + { \scan_stop: } + { + \exp_args:Noo \str_if_eq:nnTF { \l_tmpa_tl } { \l_tmpb_tl } + { + \exp_args:Nno \str_if_in:nnTF { tpkj } { \l_tmpa_tl } + { \restore_c: \restore_b: \restore_a: } + { + \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { c } + { \restore_c: \restore_b: \restore_a: } + { \exp_args:Nx \insert_jong:n { \l_tmpa_tl } + \restore_c: \restore_b: } + } + } + { + \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { c } + { \restore_c: \restore_b: \restore_a: } + { \exp_args:Nx \insert_jong:n { \l_tmpa_tl } + \restore_c: \restore_b: } + } + } + \cho_fn: +} + +\cs_new:Npn \restore_c: +{ + \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpc_tl } +} + +\cs_new:Npn \restore_b: +{ + \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpb_tl } +} + +\cs_new:Npn \restore_a: +{ + \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpa_tl } +} + +\cs_new:Npn \restore_d: +{ + \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpd_tl } +} + +\cs_new:Npn \restore_e: +{ + \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpe_tl } +} + +\cs_new:Npn \restore_five: +{ + \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: +} + +\endinput + +%% end of file pmhanguljamo-rrk.tex diff --git a/language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.tex b/language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.tex deleted file mode 100644 index 603b762520..0000000000 --- a/language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.tex +++ /dev/null @@ -1,510 +0,0 @@ -% -% subroutine of pmhanguljamo.sty -%. v0.3.1 (2020/01/30) -% -\seq_new:N \l_textjm_seq - -\NewDocumentEnvironment { jamotext } { +b } -{ - \seq_set_split:Nnn \l_textjm_seq {\par} { #1 } - \seq_indexed_map_inline:Nn \l_textjm_seq - { - \jamoword { ##2 } - \int_compare:nT { ##1 < \seq_count:N \l_textjm_seq } - { - \par - } - } -}{} - -\tl_new:N \l_tmpz_tl - -\NewDocumentCommand \jamoword { m } -{ - \seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 } - \seq_indexed_map_inline:Nn \l_tmpa_seq - { - \tl_set:Nn \l_tmpz_tl { ##2 } - \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { - } - { - \regex_replace_all:nnN { \- } { \/\- } \l_tmpz_tl - } - \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { . } - { - \regex_replace_all:nnN { \. } { \/\. } \l_tmpz_tl - } - \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { , } - { - \regex_replace_all:nnN { \, } { \/\, } \l_tmpz_tl - } - \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { ! } - { - \regex_replace_all:nnN { \! } { \/\! } \l_tmpz_tl - } - \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { ? } - { - \regex_replace_all:nnN { \? } { \/\? } \l_tmpz_tl - } - \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { : } - { - \regex_replace_all:nnN { \: } { \/\: } \l_tmpz_tl - } - \exp_args:No \str_if_in:nnT { \l_tmpz_tl } { ; } - { - \regex_replace_all:nnN { \; } { \/\; } \l_tmpz_tl - } - - \exp_args:No \str_if_in:nnTF { \l_tmpz_tl } { / } - { - \exp_args:NNno \seq_set_split:Nnn \l_tmpb_seq { / } { \l_tmpz_tl } - \seq_map_function:NN \l_tmpb_seq \rrk_fn_outer:n - } - { - \exp_args:No \rrk_a_word:n { \l_tmpz_tl } - } - \int_compare:nT { \seq_count:N \l_tmpa_seq > ##1 } - { - \space - } - } -} - -\cs_new:Npn \rrk_fn_outer:n #1 -{ - \rrk_a_word:n { #1 } -} - -\cs_new_nopar:Npn \rrk_a_word:n #1 -{ - \seq_gclear:N \g_outsyl_tl - - \regex_match:nnTF { [a-zA-Z0 ] } { #1 } - { - \exp_args:NNnx \seq_set_split:Nnn \g_tmpa_seq {} { \str_lowercase:f { #1 } } - - \int_step_inline:nn { 9 } - { - \seq_put_right:Nn \g_tmpa_seq { 0 } - } - - \cho_fn: - - \seq_use:Nn \g_outsyl_tl { } - } - { - #1 - } -} - -\cs_new:Npn \insert_out:n #1 -{ - \seq_put_right:Nn \g_outsyl_tl { #1 } -} - -\cs_new:Npn \prepare_three_tk: -{ - \seq_pop_left:NN \g_tmpa_seq \l_tmpa_tl - \seq_pop_left:NN \g_tmpa_seq \l_tmpb_tl - \seq_pop_left:NN \g_tmpa_seq \l_tmpc_tl -} - -\cs_new:Npn \cho_fn: -{ - \prepare_three_tk: - - \str_case_e:nn { \l_tmpa_tl } - { -% Zero 자음 - { @ } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } - { a } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } - { e } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } - { i } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } - { o } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } - { u } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } - { w } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } - { y } { \insert_out:n { ᄋ } \restore_c: \restore_b: \restore_a: } - - { g } { \insert_out:n { ᄀ } \restore_c: \restore_b: } - { n } { \insert_out:n { ᄂ } \restore_c: \restore_b: } - { d } { \insert_out:n { ᄃ } \restore_c: \restore_b: } - { l } { \insert_out:n { ᄅ } \restore_c: \restore_b: } - { r } { \insert_out:n { ᄅ } \restore_c: \restore_b: } - { m } { \insert_out:n { ᄆ } \restore_c: \restore_b: } - { b } { \insert_out:n { ᄇ } \restore_c: \restore_b: } - { c } { \insert_out:n { ᄎ } \restore_c: } - { h } { \insert_out:n { ᄒ } \restore_c: \restore_b: } - { x } { \insert_out:n { ᄋ } \restore_c: \restore_b: } - - { s } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { s } - { \insert_out:n { ᄊ } \restore_c: } - { \insert_out:n { ᄉ } \restore_c: \restore_b: } } - { j } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { j } - { \insert_out:n { ᄍ } \restore_c: } - { \insert_out:n { ᄌ } \restore_c: \restore_b: } } - { k } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { k } - { \insert_out:n { ᄁ } \restore_c: } - { \insert_out:n { ᄏ } \restore_c: \restore_b: } } - { t } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { t } - { \insert_out:n { ᄄ } \restore_c: } - { \insert_out:n { ᄐ } \restore_c: \restore_b: } } - { p } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { p } - { \insert_out:n { ᄈ } \restore_c: } - { \insert_out:n { ᄑ } \restore_c: \restore_b: } } - { - } { \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpb_tl } - { \insert_out:n { ᄋ } \restore_c: \restore_b: } - { \insert_out:n { } \restore_c: \restore_b: \cho_fn: } - } - } - \jung_fn: -} - -\cs_new:Npn \jung_fn: -{ - \prepare_three_tk: - - \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { 0 } - { \scan_stop: } - { - \str_case_e:nn { \l_tmpa_tl } - { - { i } { \insert_out:n { ᅵ } \restore_c: \restore_b: } - { o } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { e } - { \insert_out:n { ᅬ } \restore_c: } - { \insert_out:n { ᅩ } \restore_c: \restore_b: } } - { u } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { i } - { \insert_out:n { ᅴ } \restore_c: } - { \insert_out:n { ᅮ } \restore_c: \restore_b: } } - { a } { \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { e } - { \insert_out:n { ᅢ } \restore_c: } - { \insert_out:n { ᅡ } \restore_c: \restore_b: } } - { e } { \str_case_e:nnF { \l_tmpb_tl } - { - { o } { \insert_out:n { ᅥ } \restore_c: } - { u } { \insert_out:n { ᅳ } \restore_c: } - } - { \insert_out:n { ᅦ } \restore_c: \restore_b: } - } - { @ } { \str_case_e:nnF { \l_tmpb_tl } - { - { @ } { \insert_out:n { ᆢ } \restore_c: } - { i } { \insert_out:n { ᆡ } \restore_c: } - } - { \insert_out:n { ᆞ } \restore_c: \restore_b: } - } - - { y } { \str_case_e:nn { \l_tmpb_tl } - { - { o } { \insert_out:n { ᅭ } \restore_c: } - { u } { \insert_out:n { ᅲ } \restore_c: } - { a } { \exp_args:No \str_if_eq:nnTF { \l_tmpc_tl } { e } - { \insert_out:n { ᅤ } } - { \insert_out:n { ᅣ } \restore_c: } } - { e } { \exp_args:No \str_if_eq:nnTF { \l_tmpc_tl } { o } - { \insert_out:n { ᅧ } } - { \insert_out:n { ᅨ } \restore_c: } } - } - } - { w } { \str_case_e:nn { \l_tmpb_tl } - { - { o } { \insert_out:n { ᅯ } \restore_c: } - { i } { \insert_out:n { ᅱ } \restore_c: } - { e } { \insert_out:n { ᅰ } \restore_c: } - { a } { \exp_args:No \str_if_eq:nnTF { \l_tmpc_tl } { e } - { \insert_out:n { ᅫ } } - { \insert_out:n { ᅪ } \restore_c: } } - } - } - } - - \jong_fn: - } -} - -\cs_new:Npn \prepare_five_tk: -{ - \seq_pop_left:NN \g_tmpa_seq \l_tmpa_tl - \seq_pop_left:NN \g_tmpa_seq \l_tmpb_tl - \seq_pop_left:NN \g_tmpa_seq \l_tmpc_tl - \seq_pop_left:NN \g_tmpa_seq \l_tmpd_tl - \seq_pop_left:NN \g_tmpa_seq \l_tmpe_tl -} - -\cs_new:Npn \jong_fn: -{ - \prepare_five_tk: - - \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { 0 } - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl } - } - { - \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpb_tl } - { - \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: - \cho_fn: - } - { - \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpc_tl } - { - \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: - \take_jong_two: - } - { - \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpd_tl } - { - \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: - \take_jong_three: - } - { - \exp_args:Nno \str_if_in:nnTF { aeiouwy@ } { \l_tmpe_tl } - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } -% \exp_args:Nx \insert_out:n { \l_tmpc_tl \l_tmpd_tl } - \restore_e: \restore_d: \restore_c: - \cho_fn: - } - { - \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: - \take_jong_four: - } - } - } - } - } -} - -\cs_new:Npn \take_jong_four: -{ - \prepare_five_tk: - \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { 0 } - { \scan_stop: } - { - \exp_args:Nx \insert_jong:n { \tl_use:N \l_tmpa_tl \tl_use:N \l_tmpb_tl } - \restore_e: \restore_d: \restore_c: - \cho_fn: - } -} - -\cs_new:Npn \insert_jong:n #1 -{ - \str_case:nn { #1 } - { - { kk } { \insert_out:n { ᆩ } } - { gs } { \insert_out:n { ᆪ } } - { g } { \insert_out:n { ᆨ } } - { nj } { \insert_out:n { ᆬ } } - { nh } { \insert_out:n { ᆭ } } - { n } { \insert_out:n { ᆫ } } - { d } { \insert_out:n { ᆮ } } - { lg } { \insert_out:n { ᆰ } } - { lm } { \insert_out:n { ᆱ } } - { lb } { \insert_out:n { ᆲ } } - { ls } { \insert_out:n { ᆳ } } - { lt } { \insert_out:n { ᆴ } } - { lp } { \insert_out:n { ᆵ } } - { lh } { \insert_out:n { ᆶ } } - { l } { \insert_out:n { ᆯ } } - { m } { \insert_out:n { ᆷ } } - { bs } { \insert_out:n { ᆹ } } - { b } { \insert_out:n { ᆸ } } - { ss } { \insert_out:n { ᆻ } } - { s } { \insert_out:n { ᆺ } } - { ng } { \insert_out:n { ᆼ } } - { j } { \insert_out:n { ᆽ } } - { ch } { \insert_out:n { ᆾ } } - { k } { \insert_out:n { ᆿ } } - { t } { \insert_out:n { ᇀ } } - { p } { \insert_out:n { ᇁ } } - { h } { \insert_out:n { ᇂ } } - { / } { \insert_out:n { 0 } } - } -} - -\cs_new:Npn \take_jong_three: -{ - \prepare_three_tk: - \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { 0 } - { \scan_stop: } - { -%% XX- - \exp_args:No \str_if_eq:nnTF { \l_tmpc_tl } { - } - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } - \restore_c: - } - { - \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { - } - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl } - \restore_c: \restore_b: - } - { - \check_jong_sub: - } - } - \cho_fn: - } -} - - -\cs_new:Npn \check_jong_sub: -{ - \exp_args:Noo \str_if_eq:nnTF { \l_tmpb_tl } { \l_tmpc_tl } - { - \exp_args:Noo \str_if_eq:nnTF { \l_tmpa_tl } { \l_tmpb_tl } %%% sss - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } %% ss-s - \restore_c: - } - { - \exp_args:Nno \str_if_in:nnTF { tpkj } { \l_tmpb_tl } - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl } - \restore_c: \restore_b: - } - { - \check_jong_sub_last: - } - } - } - { - \str_if_eq:eeTF { \l_tmpa_tl } { k } - { - \str_if_eq:eeTF { \l_tmpb_tl } { k } %% kk-g - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } - \restore_c: - } - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl } - \restore_c: \restore_b: - } - } - { - \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { c } %%% chX - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } - \restore_c: - } - { - \exp_args:No \str_if_eq:nnTF { \l_tmpb_tl } { c } %%% Xch - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl } - \restore_c: \restore_b: - } - { - \check_jong_sub_last: - } - } - } - } -} - -\cs_new:Npn \check_jong_sub_last: -{ - \str_case_e:nnTF { \l_tmpa_tl } - { - { n } { \str_case_e:nn { \l_tmpb_tl } - { - { j } { } - { g } { } - { h } { } - } - } - { g } { \str_case_e:nn { \l_tmpb_tl } - { - { s } { } - } - } - { l } { \str_case_e:nn { \l_tmpb_tl } - { - { g } { } - { m } { } - { b } { } - { s } { } - { t } { } - { p } { } - { h } { } - } - } - { b } { \str_case_e:nn { \l_tmpb_tl } - { - { s } { } - } - } - { s } { \str_case_e:nn { \l_tmpb_tl } - { - { s } { } - } - } - } - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl \l_tmpb_tl } - \restore_c: - } - { - \exp_args:Nx \insert_jong:n { \l_tmpa_tl } - \restore_c: \restore_b: - } -} - -\cs_new:Npn \take_jong_two: -{ - \prepare_three_tk: - \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { 0 } - { \scan_stop: } - { - \exp_args:Noo \str_if_eq:nnTF { \l_tmpa_tl } { \l_tmpb_tl } - { - \exp_args:Nno \str_if_in:nnTF { tpkj } { \l_tmpa_tl } - { \restore_c: \restore_b: \restore_a: } - { - \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { c } - { \restore_c: \restore_b: \restore_a: } - { \exp_args:Nx \insert_jong:n { \l_tmpa_tl } - \restore_c: \restore_b: } - } - } - { - \exp_args:No \str_if_eq:nnTF { \l_tmpa_tl } { c } - { \restore_c: \restore_b: \restore_a: } - { \exp_args:Nx \insert_jong:n { \l_tmpa_tl } - \restore_c: \restore_b: } - } - } - \cho_fn: -} - -\cs_new:Npn \restore_c: -{ - \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpc_tl } -} - -\cs_new:Npn \restore_b: -{ - \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpb_tl } -} - -\cs_new:Npn \restore_a: -{ - \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpa_tl } -} - -\cs_new:Npn \restore_d: -{ - \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpd_tl } -} - -\cs_new:Npn \restore_e: -{ - \exp_args:NNx \seq_put_left:Nn \g_tmpa_seq { \tl_use:N \l_tmpe_tl } -} - -\cs_new:Npn \restore_five: -{ - \restore_e: \restore_d: \restore_c: \restore_b: \restore_a: -} - -\endinput - -%% end of file pmhanguljamo-rrk.tex diff --git a/language/korean/pmhanguljamo/tex/pmhanguljamo.sty b/language/korean/pmhanguljamo/tex/pmhanguljamo.sty index b816fd9056..787fa2cd15 100644 --- a/language/korean/pmhanguljamo/tex/pmhanguljamo.sty +++ b/language/korean/pmhanguljamo/tex/pmhanguljamo.sty @@ -22,8 +22,8 @@ \RequirePackage{xparse} \ProvidesExplPackage {pmhanguljamo} - {2020/01/28} - {v0.3} + {2020/02/05} + {v0.3.2} {Poorman's Hangul Jamo Input Method} \RequirePackage{l3keys2e} @@ -36,12 +36,140 @@ \ProcessKeysOptions { pmhanguljamo } +\NewDocumentCommand \jmcc { m } +{ + \prop_item:Nn \c_compjamo_prop { #1 } +} + +\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, + @@ = \double_arae_a, + WW = \double_arae_a +} + +\newcommand*\double_arae_a{% + \hbox_set:Nn \l_tmpa_box { \char"318D } + \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box + 2pt } + \makebox[\l_tmpa_dim][c]{ \char"318D\kern-.6em\char"318D } +} + +%%%% if RRK is given, then input pmhanguljamo-rrk.sty +%%%% and stop. + \bool_if:NT \opt_rrkopt_bool { - \file_input:n { pmhanguljamo-rrk.tex } + \file_input:n { pmhanguljamo-rrk.sty } \endinput } +%%%% +%%%% pm input method: +%%%% + \NewDocumentCommand \jamotextcmd { m } { \tl_set:Nn \l_tmpa_tl { #1 / } @@ -166,11 +294,6 @@ \build_syl_fn:n } -\NewDocumentCommand \jmcc { m } -{ - \prop_item:Nn \c_compjamo_prop { #1 } -} - \NewDocumentCommand \ColonMark {} { : } \NewDocumentCommand \SemiColonMark {} { ; } \NewDocumentCommand \SlashMark {} { / } @@ -541,113 +664,5 @@ | = {} } -\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 -- cgit v1.2.3