diff options
author | Karl Berry <karl@freefriends.org> | 2023-02-19 20:58:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-02-19 20:58:10 +0000 |
commit | 55bf48cf515c46ba04d57735e75435db508c3e18 (patch) | |
tree | de70976070fd5bc8173aabd80e4bc216a01671f7 /Master | |
parent | 3955c6f567cb3dcb8061a5f6b5989673371c143e (diff) |
pmhanguljamo (19feb23)
git-svn-id: svn://tug.org/texlive/trunk@65934 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/pmhanguljamo/README.md | 8 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.pdf | bin | 163275 -> 214272 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.tex | 506 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.pdf | bin | 594555 -> 691545 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.tex | 1699 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-frkim.code.tex | 554 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-frkim.sty | 38 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-rrk.sty | 7 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo.sty | 1267 |
9 files changed, 2993 insertions, 1086 deletions
diff --git a/Master/texmf-dist/doc/latex/pmhanguljamo/README.md b/Master/texmf-dist/doc/latex/pmhanguljamo/README.md index f729c0b506e..044e8c53854 100644 --- a/Master/texmf-dist/doc/latex/pmhanguljamo/README.md +++ b/Master/texmf-dist/doc/latex/pmhanguljamo/README.md @@ -8,16 +8,16 @@ It is mainly for the people who have a system without Korean keyboard IM, but wa XeLaTeX or LuaLaTeX is recommended. And the legacy pdfTeX is not supported. -In version 0.3, it provides two kinds of transliteration rules. The default way is this package's unique method. The alternative one is a more familiar *Korean Romanization Rule*. With the latter only Modern Hangul can be typeset. +In version 0.3, it provides two kinds of transliteration rules. And in version 0.5, it is possible to specify proper font for typesetting Jamo Hangul. -In version 0.5, it is possible to specify proper font for typesetting Jamo Hangul. And in version 0.5.1, a few bugs were fixed and providing font feature to the very font was enabled. +In version 1.0, we introduced a new rule, so-called _frkim_. Now it has three alternative ways of Hangul input methods. -The current version is 0.5.2. +The current version is 1.0. ## Copyright and License -(C) 2020-2022 Kangsoo Kim <modviv2k15 at gmail.com> +(C) 2020-2023 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 diff --git a/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.pdf b/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.pdf Binary files differindex f9752dc48cd..4b646326828 100644 --- a/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.pdf +++ b/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.pdf diff --git a/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.tex b/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.tex index f98e6fa0385..70fccd711ba 100644 --- a/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.tex +++ b/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-doc.tex @@ -33,6 +33,7 @@ %\maxsecnumdepth{section} \usepackage{hvextern} +\usepackage{tabularray} \begin{document} @@ -41,7 +42,8 @@ %\date{10 Mar 2021\quad version 0.3.5} %\date{20 Sep 2021\quad version 0.3.6} %\date{6 Sep 2022\quad version 0.5.1} -\date{7 Sep 2022\quad version 0.5.2} +%\date{7 Sep 2022\quad version 0.5.2} +\date{18 Feb 2023\quad version 1.0} \maketitle @@ -58,7 +60,7 @@ The name comes from ``Poorman's Hangul Jamo Input Method.'' It is mainly for the people who have a system without Korean keyboard 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'(\textkorean{\jmcc{@}}), `Yet Ieung'(\textkorean{\jmcc{Q}}) or `Pan-Sios'(\textkorean{\jmcc{Z}}) etc.\ can also be typeset. +that uses the lost letters such as `Arae-A'(\textkorean{\jmcc{@}}), `Yes-Ieung'(\textkorean{\jmcc{F}}) or `Pan-Sios'(\textkorean{\jmcc{Z}}) etc.\ can also be typeset. \XeLaTeX\ or \LuaLaTeX\ is required. The legacy pdf\TeX\ is not supported. The Korean Language supporting packages such as \pkg{xetexko} and \pkg{luatexko} (in the ko.\TeX\ bundle) @@ -74,13 +76,25 @@ Put the following line in your preamble: \begin{verbatim} \usepackage[<options>]{pmhanguljamo} \end{verbatim} + +\subsection{Package options} + +The package provides three kinds of Hangul input methods. +You should select one of them with the package option. +And you have to specify just one of them. Mixing ways of transliteration is not +allowed. + \begin{enumerate} -\item \texttt{[rrk]} or \texttt{[RRK]}. The \emph{Standard Korean Romanization Transliteration} input method is activated. In section~\ref{sec:rrk}, -we will explain about it. If this option is missing, the default input -method is used, which is explained in sections~\ref{sec:rule}--\ref{sec:exam}. -You are to specify just one of them. Using both methods in one document is -not allowed. +\item \texttt{[method=pm]}. It is an original method of this package. In section~\ref{sec:pmmethod} we will explain about it. If \texttt{method=} option is missing, this one will be activated. +\item \texttt{[method=rrk]} or \texttt{[rrk]}, \texttt{[RRK]}. The \emph{Standard Korean Romanization Transliteration} input method. +In section~\ref{sec:rrk}, +we will explain about it. +\item \texttt{[method=frkim]} or \texttt{[frkim]}. A newly introduced rule. See section~\ref{sec:frkim}. +\end{enumerate} +Whatever method you selected, the following basic options are common. + +\begin{enumerate} \item \texttt{pmfont=<fontname>}. The font that is used to typeset Hangul characters in the scope of \verb|\jamoword| or \texttt{jamotext}. If this option missing, the Jamo-Hangul font is to be same as the \textit{main font} of the document. @@ -95,15 +109,17 @@ The main command to typeset Hangul is \verb|\jamoword|. \begin{quote} Input: -\verb|\jamoword{han/gvr/vi yeis i/rvm/vn hun/min/jex/vm/i/da/.}|\\ -Result: \textkorean{\jamoword{han/gvr/vi yeis i/rvm/vn hun/min/jex/vm/i/da/.}} +\verb|\jamoword{han/gvr/vi yeis i/rvm/vn hun/min/jeq/vm/i/da/.}|\\ +Result: \textkorean{\jamoword{han/gvr/vi yeis i/rvm/vn hun/min/jeq/vm/i/da/.}} \end{quote} The argument of the command consists of roman alphabets and a few marks that represent Hangul Jamo. -The transliteration rule will be explained in the section~\ref{sec:rule}, page~\pageref{sec:rule}. +In the example we showed the \texttt{[method=pm]} way +which is explained in the section~\ref{sec:pmmethod}. +But with any other rule it will make the same result. -And an environment named \emph{jamotext} is provided. +And an environment \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} @@ -128,50 +144,6 @@ na/nvn goi/ro/ue/haiss/da/. \end{korean} \end{quote} -\paragraph{ASCII-Escaping Trick} -Sometimes it is needed to locate a few math materials or ASCII stuffs -in the midst of Jamo Hangul texts. The tricky syntax -\begin{verbatim} - !{<ASCII stuffs>} -\end{verbatim} -makes it possible to insert non-Jamo ASCII characters into \texttt{jamotext} -context. Note that it is not allowed in the arguments of \verb|\jamoword|. - -\begin{verbatim} -\begin{jamotext} -in/gan/i pog/jex/goa eg/ab/ei -!{tyranny and oppression} -dai/hax/ha/nvn ma/ji/mag su/dan/v/ro/se -!{as a last resort} -ban/ran/vr ir/v/ki/do/rog gax/yo/bad/ji -anh/v/rye/myen - -pi/ta/go/ra/sv/vi jex/ri/ !{\unskip :} -!{$a^2+b^2=c^2$}. -\end{jamotext} -\end{verbatim} - -\noindent Result:\\ -\begin{jamotext} -in/gan/i pog/jex/goa eg/ab/ei -!{tyranny and oppression} -dai/hax/ha/nvn ma/ji/mag su/dan/v/ro/se -!{as a last resort} -ban/ran/vr ir/v/ki/do/rog gax/yo/bad/ji -anh/v/rye/myen - -pi/ta/go/ra/sv/vi jex/ri/ !{\unskip :} !{$a^2+b^2=c^2$}. -\end{jamotext} - -\bigskip - -The \verb|!{| mark must be located in the head of a word. -To remove the preceding space of a word, \verb|\unskip| is -used in the example. This trick will be useful when using -math equations, \LaTeX\ macros, or English words along with long Jamo Hangul -texts. - - \subsection{Setting up in your Preamble} Without any other packages, you can type Hangul. Be sure that @@ -188,7 +160,7 @@ proper fonts should be declared for Hangul, utilizing \pkg{fontspec}. \usepackage[pmfont={Noto Serif KR}]{pmhanguljamo} %StopVisiblePreamble \begin{document} -\jamoword{an/nyex/ha/sei/yo} +\jamoword{an/nyeq/ha/sei/yo} \end{document} \end{externalDocument} @@ -207,7 +179,7 @@ declare the proper font for Jamo Hangul with \texttt{Script=Hangul} option.\foot \newfontfamily\mypmfont{Noto Serif KR}[Script=Hangul] %StopVisiblePreamble \begin{document} -\mypmfont\jamoword{an/nyex/ha/sei/yo} +\mypmfont\jamoword{an/nyeq/ha/sei/yo} \end{document} \end{externalDocument} @@ -279,11 +251,78 @@ However when just single or a few Hangul characters are needed, for example in t the author's name in Hangul, this package provides a casual way to print them out. -\section{Transliteration Rule of This Package}\label{sec:rule} +\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. +But the author recommends the Noto Korean fonts for this purpose. + +\begin{description} +\item[Hamchorom or Hamchorom-LVT] Hamchorom fonts by Hancom Inc., +\url{https://www.hancom.com/cs_center/csDownload.do}, +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{https://www.kopus.org/biz-electronic-font2/}. +\item[Malgun Gothic] One of Windows 10 system fonts. +\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 Korean or Source Han] Google's Noto Korean fonts --- Noto Serif Korean, Noto Sans Korean. Or Adobe's Source Han fonts. +\url{https://fonts.google.com}. +\item[Un Batang] \verb|UnBatang.ttf|. on CTAN. \url{https://ctan.org/pkg/unfonts-core} +\end{description} + +To conjoining Jamos to build a syllable with one of these fonts, +it is necessary to provide +the \texttt{[Script=Hangul]} option.\footnote{% + the option should be \\ + \texttt{[Script=Hangul,Renderer=Harfbuzz]}\\ + or\\ + \texttt{[Script=Hangul,Renderer=OpenType]},\\ + when the document is processed with \LuaLaTeX.} +% The \LuaLaTeX\ version should be over 1.11, that is, +% the \LaTeX\ format of LuaHB\TeX\ is needed.} +But when the package option \texttt{[pmfont=]} is given, +that will be done by the package automatically. + +For example, you can specify Hamchorom Batang LVT font by yourself as like: +\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.\footnote{% + When \texttt{pmfont=} option is given, the \texttt{Script=Hangul} is + automatically activated by the package.} +But these processes will be done by the package itself when +\begin{verbatim} +\usepackage[pmfont={HCR Batang LVT}]{pmhanguljamo} +\end{verbatim} +is declared in the preamble. + +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{Transliteration Rule of This Package: \texttt{[method=pm]}}\label{sec:pmmethod} \subsection{Tone Marks and Syllable Serapator} -This package assumes that every Hangul syllable has \emph{Tone Mark} which +This method assumes that every Hangul syllable has \emph{Tone Mark} which must be explicitly put at the end of it. Table~\ref{tab:tonemark} shows the input scheme of them. @@ -306,7 +345,9 @@ the completion of composing a syllable --- i.e., syllable separator. So DO NOT m 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} +\subsection{Transliteration rules} + +\subsubsection{Consonants} Table~\ref{tab:cons} shows the transliteration rule for the consonants which are used in the leading and trailing position of a syllable. @@ -318,10 +359,10 @@ used in the leading and trailing position of a syllable. \begin{tabular}{ll|ll|ll|ll} \hline ㄱ & g & ㄴ & n & ㄷ & d & ㄹ & r \\ -ㅁ & m & ㅂ & b & ㅅ & s & ㅇ & \textbf{x} \\ +ㅁ & m & ㅂ & b & ㅅ & s & ㅇ & \textbf{q} \\ ㅈ & j & ㅊ & c & ㅋ & k & ㅌ & t \\ -ㅍ & p & ㅎ & h & \char"3181 & \textbf{q} & \char"317F & \textbf{z} \\ -\char"3186 & \textbf{f} & & w & & & & \\ +ㅍ & p & ㅎ & h & \char"3181 & \textbf{f} & \char"317F & \textbf{z} \\ +\char"3186 & \textbf{x} & & w & & & & \\ \hline \end{tabular} \end{table} @@ -331,21 +372,22 @@ used in the leading and trailing position of a syllable. 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}. The latter is reserved for another purpose, cf. item \ref{itm:llr}. \item The letter `c' is for `\textkorean{\jmcc{C}}'. In the RRK, it is `\texttt{ch}' there. -\item 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 is reserved for another consonant `\textkorean{\jamoword{@ng/}}' -\item The letters `q, z, f' are more freely selected. These letters are the lost ones in Modern Korean. -\item The `light labial consonants', \textkorean{\jmcc{BX}, \jmcc{PX}} in the Old Hangul can be input as `bx, px, bbx, mx'. +\item The letter for `\textkorean{\jmcc{Q}}' is \texttt{q}, which is a bit strange, but commonly accepted `\texttt{ng}' was not to be chosen. It is reserved for another consonant `\textkorean{\jamoword{@ng/}}' +\item The letters `f, z, x' are more freely selected. These letters are the lost ones in Modern Korean. +\item The `light labial consonants', \textkorean{\jmcc{BQ}, \jmcc{PQ}} in the Old Hangul can be input as `bq, pq, bbq, mq'. %\footnote{\emph{Jungseong Filler} is not provided.} \item\label{itm:llr} The letters `l' and `lr' are prepared 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 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}'. +\item The leading `zero consonant' can be omitted. So if a syllable begins with vowel, then the leading `\textkorean{\jmcc{Q}}' will appear. You can write the leading `\verb|q|' of a syllable or not. +For example, `\verb|\jamoword{qaq}|' and `\verb|\jamoword{aq}|' will generate the same result `\jamo{qaq}'. \item The letter `w' is chosen to present \emph{Choseong Filler}. For example, \verb|\jamoword{wan}| renders \jamoword{wan}. +\item [compatibility] The letters that `x', `q', and `f' corresponds to are changed from version 1.0. If the style of former version is needed, put \texttt{[compat=0.5]} option in the \verb|\usepackage| line. Then \texttt{x} will be rendered as `\jmcc{Q}', \texttt{q} as `\jmcc{F}', and \texttt{f} as `\jmcc{X}'. \end{enumerate} -\subsection{Vowels} +\subsubsection{Vowels} Table~\ref{tab:vow} shows the transliteration rule for vowels. @@ -376,7 +418,7 @@ the roman alphabets fall short of the vowels. This allocation is arbitrary. \item The \emph{Jungseong Filler} ([U+1160]) can be input with \verb|*|. For example, \verb|\jamoword{h*n}| renders \jamoword{h*n}. \end{enumerate} -\subsection{Compatibility Jamos} +\subsubsection{Compatibility Jamos} The compatibility Jamo block in Unicode contains several Hangul Jamo characters, which cannot be used to compose Hangul syllables, and are considered @@ -396,65 +438,52 @@ Here is an example: \textkorean{\jamoword{W/nvn a/rai/a/ra/go bu/rv/go A/oa bi/svs/ha/gei irg/nvn/da}} \end{quote} +\subsection{ASCII-Escaping Trick} +Sometimes it is needed to locate a few math materials or ASCII stuffs +in the midst of Jamo Hangul texts. The tricky syntax +\begin{verbatim} + !{<ASCII stuffs>} +\end{verbatim} +makes it possible to insert non-Jamo ASCII characters into \texttt{jamotext} +context. Note that it is not allowed in the arguments of \verb|\jamoword|. -\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. +\begin{verbatim} +\begin{jamotext} +in/gan/i pog/jeq/goa eg/ab/ei +!{tyranny and oppression} +dai/haq/ha/nvn ma/ji/mag su/dan/v/ro/se +!{as a last resort} +ban/ran/vr ir/v/ki/do/rog gaq/yo/bad/ji +anh/v/rye/myen -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. +pi/ta/go/ra/sv/vi jeq/ri/ !{\unskip :} +!{$a^2+b^2=c^2$}. +\end{jamotext} +\end{verbatim} -\begin{description} -\item[Hamchorom or Hamchorom-LVT] Hamchorom fonts by Hancom Inc., -\url{https://www.hancom.com/cs_center/csDownload.do}, -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{https://www.kopus.org/biz-electronic-font2/}. -\item[Malgun Gothic] One of Windows 10 system fonts. -\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 Korean or Source Han] Google's Noto Korean fonts --- Noto Serif Korean, Noto Sans Korean. Or Adobe's Source Han fonts. -\url{https://fonts.google.com}. -\item[Un Batang] \verb|UnBatang.ttf|. on CTAN. \url{https://ctan.org/pkg/unfonts-core} -\end{description} +\noindent Result:\\ +\begin{jamotext} +in/gan/i pog/jeq/goa eg/ab/ei +!{tyranny and oppression} +dai/haq/ha/nvn ma/ji/mag su/dan/v/ro/se +!{as a last resort} +ban/ran/vr ir/v/ki/do/rog gaq/yo/bad/ji +anh/v/rye/myen -To use one of these fonts, do not forget to provide -the \texttt{[Script=Hangul]} option.\footnote{% - the option should be \\ - \texttt{[Script=Hangul,Renderer=Harfbuzz]}\\ - or\\ - \texttt{[Script=Hangul,Renderer=OpenType]},\\ - when the document is processed with \LuaLaTeX.} -% The \LuaLaTeX\ version should be over 1.11, that is, -% the \LaTeX\ format of LuaHB\TeX\ is needed.} -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.\footnote{% - When \texttt{pmfont=} option is given, the \texttt{Script=Hangul} is - automatically activated by the package.} -It is recommended that the \emph{proper} font should be used consistently. +pi/ta/go/ra/sv/vi jeq/ri/ !{\unskip :} !{$a^2+b^2=c^2$}. +\end{jamotext} -\medskip +\bigskip -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. +The \verb|!{| mark must be located in the head of a word. +To remove the preceding space of a word, \verb|\unskip| is +used in the example. This trick will be useful when using +math equations, \LaTeX\ macros, or English words along with long Jamo Hangul +texts. +By the time this ASCII-escaping trick is available only with \texttt{method=pm}. -\section{Examples}\label{sec:exam} +\subsection{Examples: \texttt{method=pm}}\label{sec:exam} Now, we will show a few practical examples, where the \emph{korean} environment of \pkg{polyglossia} package is used. @@ -467,7 +496,7 @@ The preamble is like this: \newfontfamily\hangulfont{Noto Serif KR}[Script=Hangul] \end{verbatim} -\subsection{Modern Hangul}\label{sec:exammodern} +\subsubsection{Modern Hangul}\label{sec:exammodern} %\begin{verbatim} %\begin{korean} @@ -511,7 +540,7 @@ na bo/gi/ga yeg/gye/ue \\ ga/sir ddai/ei/nvn \\ mar ebs/i go/i bo/nai dv/ri/u/ri/da/. -yex/byen/ei yag/san \\ +yeq/byen/ei yag/san \\ jin/dar/rai ggoc \\ a/rvm dda/da ga/sir gir/ei bbu/ri/u/ri/da/. @@ -534,7 +563,7 @@ na bo/gi/ga yeg/gye/ue \\ ga/sir ddai/ei/nvn \\ mar ebs/i go/i bo/nai dv/ri/u/ri/da/. -yex/byen/ei yag/san \\ +yeq/byen/ei yag/san \\ jin/dar/rai ggoc \\ a/rvm dda/da ga/sir gir/ei bbu/ri/u/ri/da/. @@ -549,7 +578,7 @@ jug/e/do a/ni nun/mur hvr/ri/u/ri/da/. \end{korean} \end{verse} -\subsection{pre-1933 Hangul} +\subsubsection{pre-1933 Hangul} A 15th century text with tone marks (\emph{BangJeom}). @@ -557,11 +586,11 @@ A 15th century text with tone marks (\emph{BangJeom}). \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: jei bdv;dvr; si/re; pye/di; mod:h@rf no;mi; ha/ni;ra; + 中dyuf/國guig;ei; dar/a; + 文mun/字jj@q;oa;ro; se/rv/ s@/m@s/di; a/ni;h@r/ss@i; + i;ren jyen/c@;ro; e/rin; 百b@ig;姓syef;i; + ni/rv/go;jye; horx; bai; i/sye;do; + m@/c@m;nai: jei bdv;dvr; si/re; pye/di; mod:h@rx no;mi; ha/ni;ra \end{jamotext} \end{korean} \end{verbatim} @@ -570,11 +599,11 @@ A 15th century text with tone marks (\emph{BangJeom}). \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: jei bdv;dvr; si/re; pye/di; mod:h@rf no;mi; ha/ni;ra + 中dyuf/國guig;ei; dar/a; + 文mun/字jj@q;oa;ro; se/rv/ s@/m@s/di; a/ni;h@r/ss@i; + i;ren jyen/c@;ro; e/rin; 百b@ig;姓syef;i; + ni/rv/go;jye; horx; bai; i/sye;do; + m@/c@m;nai: jei bdv;dvr; si/re; pye/di; mod:h@rx no;mi; ha/ni;ra \end{jamotext} \end{korean} \end{quote} @@ -614,7 +643,7 @@ e/nv na/ri i do/ra/gar h@i/o/. \ExplSyntaxOff -\section{The RRK Input Method: An Alternative Way} \label{sec:rrk} +\section{The RRK Input Method: \texttt{[method=rrk]}} \label{sec:rrk} In chapter 3 section 8 of \emph{Revised Romanization of Korean} (2000), the `transliteration method' of Hangul romanization is declared. @@ -622,9 +651,10 @@ It is exceptionally permitted when it is required to restore the original Hangul writings, while standard is the phonetic transcription one. So we can make use of the former as an input method. -If the package option \texttt{[RRK]} or \texttt{[rrk]} is given, -the RRK method is activated. With this method, only `Modern Hangul' can -be typeset. +If the package option \texttt{[method=rrk]} is given, +the RRK method is activated. With this rule, only `Modern Hangul' can +be typeset. You can give the option by the abbreviation form \texttt{[rrk]} or \texttt{[RRK]}. + \subsection{Transliteration Rule of RRK} @@ -658,7 +688,7 @@ RRK transliteration rule. \end{table} \begin{enumerate} -\item When the leading consonant `{\fontspec{UnBatang}\jmcc{X}}' is placed +\item When the leading consonant `{\fontspec{UnBatang}\jmcc{Q}}' is placed at the head of a word, it can be ommitted. Otherwise the hyphen character (\verb|-|) should exist. For example, \\ \verb|\jamoword{annyeonghase-yo}| \textkorean{\jamoword{annyeonghase-yo}} \\ \verb|\jamoword{jung-ang jungang}| \textkorean{\jamoword{jung-ang jungang}} \\ @@ -750,6 +780,202 @@ jug-eodo ani nunmul heulli-ulida. \end{korean} \end{verse} +\ExplSyntaxOn +\cs_undefine:N \l_inputword_seq +\cs_undefine:N \l_inputpar_seq +\cs_undefine:N \jamotext +\cs_undefine:N \endjamotext +\cs_undefine:N \jamo_word:nn +\cs_set_eq:NN \frkhangulfont \opt_pmfont_tl +\cs_set_eq:NN \frkhangulfontfeature \opt_pmfontfeature_tl +\input{pmhanguljamo-frkim.code.tex} +\ExplSyntaxOff + + +\section{Fukui Rei's Transliteration Rule: \texttt{[method=frkim]}} +\label{sec:frkim} + +The \texttt{frkim} stands for ``Fukui Rei's k\TeX{}'' and ``input method''. +Prof.~Fukui Rei (Tokyo University) proposed his own transliteration rules of Hangul romanization, and wrote a \TeX{} macro package named \emph{hangulTeX} in 1993, with +which it was possible to typeset Hangul by roman-alphabet inputs. + +To select this rule, give \texttt{[method=frkim]} option to the package. + +\subsection{The rule} + +Table~\ref{tab:ktex} shows the rule of hangulTeX. All the rules +can be used with this package. + +\begin{table}[h] +\centering\small +\caption{The transliteration rule of hangul\TeX}\label{tab:ktex} +\ttfamily +\begin{tblr}{ + colspec={llllllllll}, + hline{1,Z}={1pt}, + hline{2-Y}={.4pt}, + vline{3,5,7,9}={.4pt}, +} +\SetCell[c=10]{c,bg=azure5,fg=white} Consonants &&&&&&&&&\\ +ㄱ & g & ㄴ & n & ㄷ & d & ㄹ & r & ㅁ & m \\ +ㅂ & b & ㅅ & s & ㅇ & ' x & ㅇ & q & ㅈ & j \\ +ㅊ & c & ㅋ & k & ㅌ & t & ㅍ & p & ㅎ & h \\ +ㄲ & G & ㄸ & D & ㅃ & B & ㅆ & S & ㅉ & J \\ +ㅸ & v & ㅿ& z & ㆁ & Q & ㆆ & X & & \\ +%\SetCell[c=10]{l} &&&&&&&&& \\ +\end{tblr} +\hfil +\begin{tblr}{ + colspec={llllllll}, + hline{1,Z}={1pt}, + hline{2-Y}={.4pt}, + vline{3,5,7,9}={.4pt}, +} +\SetCell[c=8]{c,fg=white,bg=azure5} Vowels &&&&&&&\\ +ㅏ & a & ㅓ & e & ㅗ & o & ㅜ & u \\ +ㅡ & y & ㅣ & i & ㆍ & @ & ㅑ & ia \\ +ㅕ & ie & ㅛ & io & ㅠ & iu & ㅐ & ai \\ +ㅔ & ei & ㅒ & iai & ㅖ & iei & ㅘ & oa \\ +ㅙ & oai & ㅚ & oi & ㅝ & ue & ㅞ & uei \\ +ㅟ & ui & ㅢ & yi & ㆎ & @i & & \\ +\end{tblr} +\end{table} + +\activatefrcccmds +\begin{enumerate} +\item The leading zero-consonant (\frccq) can be input with \verb|'| (right quote) or \verb|x|. The default is \verb|'|, and \verb|\zeroisx| macro +switches this action. + +\item The trailing I-Eung (\frccq) is made by \verb|q|, and the lost character +Yes-I-Eung (\frccQ) is by \verb|Q|. + +\item Apart from \emph{hangulTeX}, with this package it is permitted to omit the leading zero-consonant in the position of the head of a word. That is, \verb|'annieq| and \verb|annieq| are identical. But if the letter is in the midst of a word, it can not be ommited. + +\item The \emph{hangulTeX} commands \verb|\hg|, \verb|\hangul|, and \verb|\endhangul| are provided. And \verb|\jamoword| is the same as \verb|\hg|, +and \texttt{jamotext} environment can be used with. + +\item We extended the Old-Hangul feature of this input method. The plural consonants in the leading position were not implemented in the \emph{hangulTeX}, which can be done by dispicting the starting position of the plural leading consonants with \verb|-| (dash). Moreover, in the heading position of a word, +this mark can be left out. For example, \verb|\hg{bsumei}| \hg{bsumei}; \verb|\hg{gy-bsgyi'iei}| \hg{gy-bsgyi'iei}. +\end{enumerate} + +\subsection{Examples} + +\subsubsection{Modern Hangul} + +The following example text was taken from \emph{hangulTeX} manual (1994). +(All the heading \verb|'|'s in every word can be left out now.) + +\begin{verbatim} +\hangul +nydas'ebs'i hoiram'i morgo'on pamun'yn 'yi'oiro simgaghan +ges'i'ese goanrigoa samusir'yi 'ohu najer'yr 'oanjenhi +gierDannai noh'aSda. goanrigoa jig'uendyr'i GiriGiri mo'ie +juqgunanbaq'yro Sod'a noh'yn mardyr'yn doro ju'uedam'a +bomien daicuq 'ui'oa gat'yn nai'ioq'i doigeiSnyndei, +murron gy ga'undeinyn mindosig'i Siburiedain burpieqdo +saqdaq bubun'yr cajihago 'iS'eSda. + +mindosig'yn juro 'os'i nargairanyn jenrai'yi sogdam'yr +dyr'e gyren joqriu'yi nargairyr dargonyn seisaq'yr huerhuer +nar'adanir su 'ebs'ym'yr nunu'i gaqjohanyn pien'i'eSda. +gy'yi mar'yn sasaiqhoar'i 'ebs'ejinyn seim'iranyn coqgag +sa'uen 'ugihoan'yi jujaqgoa majbaro toqhaiSda. +\endhangul +\end{verbatim} + +\begin{quote} +\hangul +nydas'ebs'i hoiram'i morgo'on pamun'yn 'yi'oiro simgaghan +ges'i'ese goanrigoa samusir'yi 'ohu najer'yr 'oanjenhi +gierDannai noh'aSda. goanrigoa jig'uendyr'i GiriGiri mo'ie +juqgunanbaq'yro Sod'a noh'yn mardyr'yn doro ju'uedam'a +bomien daicuq 'ui'oa gat'yn nai'ioq'i doigeiSnyndei, +murron gy ga'undeinyn mindosig'i Siburiedain burpieqdo +saqdaq bubun'yr cajihago 'iS'eSda. + +mindosig'yn juro 'os'i nargairanyn jenrai'yi sogdam'yr +dyr'e gyren joqriu'yi nargairyr dargonyn seisaq'yr huerhuer +nar'adanir su 'ebs'ym'yr nunu'i gaqjohanyn pien'i'eSda. +gy'yi mar'yn sasaiqhoar'i 'ebs'ejinyn seim'iranyn coqgag +sa'uen 'ugihoan'yi jujaqgoa majbaro toqhaiSda. +\endhangul +\end{quote} + +And another example: + +\begin{verbatim} +\begin{jamotext} + caig'yr hanguen gajigo iS'eSji'io. Gaman pioji'ei + sonbadagmanhan jag'yn caig'iji'io. cesjaq'yr nemgimien + nun'i nairigon haji'io. + + baramdo jamdyn supsog, jamdyn hiensasinamudyr tumieqhan + murgoanman Gai'e iS'eSji'io. gajaq kygo uramhan sasinamu + mit'ei daqsin'yn memcu'eSji'io. daqsin'i namuduqci'ei + dyq'yr gidaija biroso nun'i nairigi sijaghaiSji'io. + edi'eidyn dahgiman hamien nog'aberinyn nun. + gyDaiJym haise Gocnun'i Gai'enaSgeiSji'io. +\end{jamotext} +\end{verbatim} + +\begin{quote} +\begin{jamotext} + caig'yr hanguen gajigo iS'eSji'io. Gaman pioji'ei + sonbadagmanhan jag'yn caig'iji'io. cesjaq'yr nemgimien + nun'i nairigon haji'io. + + baramdo jamdyn supsog, jamdyn hiensasinamudyr tumieqhan + murgoanman Gai'e iS'eSji'io. gajaq kygo uramhan sasinamu + mit'ei daqsin'yn memcu'eSji'io. daqsin'i namuduqci'ei + dyq'yr gidaija biroso nun'i nairigi sijaghaiSji'io. + edi'eidyn dahgiman hamien nog'aberinyn nun. + gyDaiJym haise Gocnun'i Gai'enaSgeiSji'io. +\end{jamotext} +\end{quote} + +\subsubsection{Old Hangul} + +\begin{verbatim} +\jamoword{nagpo'yi sdar'irnienni bando jinsaq oggieq gasda + goaqhanjien'yisie jiegsoqja masna mijinjieqhoi + h@'orca'yi simanh@mi joiga doi'ia siaqjiei d@irohasa + jintoi'yi n@icisim@i gar ba'yr mornadeni du'iusan + sir'ieqgieisie bu'in-sd@ig'yro jisih@giro oassa'oni + e'iebbi iegisosie} +\end{verbatim} + +\begin{quote} +\jamoword{nagpo'yi sdar'irnienni bando jinsaq oggieq gasda + goaqhanjien'yisie jiegsoqja masna mijinjieqhoi + h@'orca'yi simanh@mi joiga doi'ia siaqjiei d@irohasa + jintoi'yi n@icisim@i gar ba'yr mornadeni du'iusan + sir'ieqgieisie bu'in-sd@ig'yro jisih@giro + oassa'oni e'iebbi iegisosie} +\end{quote} + +The Tone-Marks (\emph{BangJeom}) are not supported in itself. +But it is easy to facilitate them. See the following case. + +\begin{verbatim} +\catcode`\:=\active \catcode`\;=\active +\def:{\char"302F}\def;{\char"302E} +\hg{naras;mar:S@mi; 中diuQ國guig;'ei; dar'a; + 文mun字J@q;'oa;ro; sery s@m@sdi; ani;h@rS@i; + i;ren jienc@;ro; erin; 百b@ig;姓sieQ;'i nirygo;jie; + horX; bai; isie;do m@c@m;nai: jei bdy;dyr + sire; piedi; mod:h@rX no;mi; hani;ra.} +\end{verbatim} + +\begin{quote} +\catcode`\:=\active \catcode`\;=\active +\def:{\char"302F}\def;{\char"302E} +\hg{naras;mar:S@mi; 中diuQ國guig;'ei; dar'a; + 文mun字J@q;'oa;ro; sery s@m@sdi; ani;h@rS@i; + i;ren jienc@;ro; erin; 百b@ig;姓sieQ;'i nirygo;jie; + horX; bai; isie;do m@c@m;nai: jei bdy;dyr + sire; piedi; mod:h@rX no;mi; hani;ra.} +\end{quote} + \section{Further Information} diff --git a/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.pdf b/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.pdf Binary files differindex 93ee655de97..b6dd5712412 100644 --- a/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.pdf +++ b/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.pdf diff --git a/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.tex b/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.tex index ae98aa08470..290e4170451 100644 --- a/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.tex +++ b/Master/texmf-dist/doc/latex/pmhanguljamo/pmhanguljamo-kdoc.tex @@ -1,5 +1,5 @@ %!TEX program = SpiX -%$ xelatex -shell-escape -synctex=1 $texname +%$ time cluttex -e xelatex --shell-escape --synctex=1 --tex-option=--8bit --package-support=minted $texname %% %% Poorman's Hangul Jamo Input Method %% pmhanguljamo.sty 사용설명서 @@ -7,7 +7,7 @@ %% (C) 2020 Nova de Hi. %% part of pmhanguljamo package. %% -\documentclass[a4paper]{oblivoir} +\documentclass[a4paper,chapter]{oblivoir} \hypersetup{colorlinks} @@ -16,9 +16,10 @@ \usepackage{kotex-logo} \usepackage{amssymb} -\usepackage[pmfont={Noto Serif KR},pmfontfeature={Ligatures=TeX}]{pmhanguljamo} +\usepackage[pmfont={Noto Serif KR}]{pmhanguljamo} \usepackage{boxedminipage} \usepackage{tabularray} +\usepackage{amsmath,amssymb} \usepackage{oblivoir-misc} @@ -32,11 +33,12 @@ %%% [Script=Hangul] is needed to typeset YETHANGUL \setmainfont{Noto Serif} \setsansfont{Noto Sans} -\setmonofont{Droid Sans Mono} +%\setmonofont{Droid Sans Mono} +\setmonofont{DejaVu Sans Mono} \setsansfont{Noto Sans KR}%[\fontfeatureoption] \setkomainfont(Noto Serif KR)(* Bold)(Noto Sans KR Light)%[\fontfeatureoption] \setkosansfont(Noto Sans KR)(* Bold)%[\fontfeatureoption] -\setkomonofont(Noto Sans Mono CJK KR) +\setkomonofont(HCR Dotum LVT)[Script=Hangul,Scale=.97] \usepackage{tcolorbox} \tcbuselibrary{minted,breakable} @@ -45,9 +47,13 @@ { \tcblisting{listing side text,righthand width=.37\textwidth} } { \endtcblisting } \NewDocumentEnvironment {exampleonly} {} - { \tcblisting{listing only} } + { \tcblisting{listing only,breakable} } + { \endtcblisting } +\NewDocumentEnvironment {examplebelow} {} + { \tcblisting{breakable} } { \endtcblisting } + \newcommand\pkg[1]{% \textsf{#1}\index{#1}\index{패키지!#1}% } @@ -58,9 +64,37 @@ \let\cmda\cmd +\makechapterstyle{obmadsen}{% requires graphicx package + \chapterstyle{default} +% \renewcommand*{\chapnamefont}{% +% \normalfont\Large\scshape\raggedleft} + \renewcommand*{\prechapternum}{\normalfont\Large\scshape\raggedleft} + \renewcommand*{\postchapternum}{} + \renewcommand*{\chaptitlefont}{% + \normalfont\Huge\bfseries\sffamily\raggedleft} + \renewcommand*{\chapternamenum}{} + \renewcommand*{\printchapternum}{% + \makebox[0pt][l]{\hspace{0.4em} + \resizebox{!}{4ex}{% + \chapnamefont\bfseries\sffamily\thechapter} + }% + }% + \renewcommand*{\printchapternonum}{% + \chapnamefont \phantom{\printchaptername \chapternamenum \printchapternum} + \afterchapternum % + }% + \renewcommand*{\afterchapternum}{% + \par\hspace{1.5cm}\hrule\vskip\midchapskip}} + + %\makeindex \parindent=0pt +\newcommand\jpwrd[1]{{\fontspec{Noto Sans JP}#1}} + +\let\originalobellipsis\obellipsis +\def\obellipsis{{\hangulfontspec{HCR Batang LVT}\originalobellipsis}} + \begin{document} \title{Poorman's Hangul Jamo Input Method \\ \large pmhanguljamo.sty} @@ -78,7 +112,8 @@ %\date{2021/09/20\quad v0.3.6} %\date{2021/11/28\quad v0.4} %\date{2022/09/02\quad v0.5} -\date{2022/09/07\quad v0.5.2} +%\date{2022/09/07\quad v0.5.2} +\date{2023/02/19\quad v1.0} \maketitle @@ -91,10 +126,13 @@ e/nv; na;ri i; do;ra/gar h@i;o;. \end{jamotext} \end{exampleside} -\vspace{-.5\baselineskip} +\chapterstyle{obmadsen} +%\vspace{-.5\baselineskip} \tableofcontents* +\chapter{이 패키지에 관하여} + \section{목적} \pkg{pmhanguljamo.sty}는 ``Poorman's Hangul Jamo Input Method''에서 따온 이름이다. @@ -107,25 +145,6 @@ e/nv; na;ri i; do;ra/gar h@i;o;. \hologo{XeLaTeX}, \hologo{LuaLaTeX}에서 사용할 수 있고 \hologo{pdfLaTeX}은 지원하지 않는다. -\section{사용법 요약}\label{sec:summary} - -\begin{exampleonly} -\documentclass{article} -\usepackage{kotex} -\usepackage[pmfont={Noto Serif KR}]{pmhanguljamo} -\begin{document} -\jamoword{sei/gyei/in/guen/sen/en} - -\begin{jamotext} -mo/dvn in/ryu gu/sex/uen/vi cen/bu/vi jon/em/sex/goa -dox/dvx/ha/go yax/do/har su ebs/nvn guen/ri/rvr in/jex/ha/nvn ges/i -sei/gyei/vi ja/yu/, jex/vi mic pyex/hoa/vi gi/co/i/mye/, -in/guen/ei dai/han mu/si/oa gyex/myer/i in/ryu/vi yax/sim/vr -gyeg/bun/si/ki/nvn man/haix/vr co/rai/ha/yess/v/mye/, -\end{jamotext} -\end{document} -\end{exampleonly} - \section{사용법} \subsection{패키지 사용 선언} @@ -134,398 +153,237 @@ gyeg/bun/si/ki/nvn man/haix/vr co/rai/ha/yess/v/mye/, \usepackage[<option>]{pmhanguljamo} \end{boxedverbatim} -preamble에 위의 문장을 둔다. - -옵션은 다음과 같다. -\begin{enumerate}[1.] -\item \verb|rrk| 또는 \verb|RRK|. -입력 방식이 ``표준 전자법''으로 현대 한글을 입력하는 방식으로 바뀐다. 이에 대해서는 -\ref{sec:rrk}절을 보라. 옵션을 주지 않으면 \ref{sec:pmrule}절에서 설명하는 pm 입력 방식을 따른다. -\item \verb|pmfont={<fontname>}|. -식자할 폰트를 지정한다. 이 옵션이 주어지지 않으면 문서의 mainfont (\koTeX\ 패키지의 -경우는 mainhangulfont)를 따른다. 지정할 수 있는 폰트에 대해서는 \ref{sec:font} \titleref{sec:font}\를, 이 옵션에 대한 설명은 \ref{font:set}\를 보라. -\item \verb|pmfontfeagure=<fontfeature>|. -pmfont 옵션으로 지정하는 폰트에 추가 속성을 부여하려 할 때. \ref{font:set}\을 보라. -\end{enumerate} - -\subsection{명령과 환경} - -\subsubsection{주의사항} - -이 패키지의 목적은 한글 자모를 입력하여 한글이 표현되게 하는 것이다. -그러므로 한글이 입력되고 있는 범위(이하 “인자 범위”라고 부른다) 안에서는 -원칙적으로 다른 어떤 매크로도 올 수 없다. 글자가 먼저 만들어져야 거기에 대해서 -어떤 명령을 수행할 수 있기 때문이다. 예를 들어 -\begin{verbatim} - \textbf{\jamoword{<args>}} -\end{verbatim} -이것은 원하는 결과를 내지만 -\begin{verbatim} - \jamoword{\textbf{<args>}} -\end{verbatim} -이렇게 하면 오류가 발생한다. - -\subsubsection{\texttt{\bs jamoword} 명령} - -\begin{boxedverbatim} -\jamoword{<several words>} -\end{boxedverbatim} - -한글 자모를 알파벳으로 입력하여 출력한다. -하나 또는 둘 이상의 단어가 올 수 있다.\footnote{단 하나의 단어만을 처리하는 \cmda{\jamotextcmd}라는 명령이 -있기는 하나 내부적으로 사용되는 것이다.} -\verb|\par|를 포함하는 문단은 올 수 없다. - -\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; - -i;ren jyen/c@;ro; e/rin; 百b@ig;姓syeq;i; -ni/rv/go;jye; horf; bai; i/sye;do; -\end{jamotext} -\end{exampleside} - -\leavevmode\marginpar{\footnotesize\fbox{v0.5}}% -\env{jamotext} 환경 내에 긴 문장을 쓰다가 보면 잠시 jamo 입력이 -아닌 아스키 입력 상태로 escape하여야 할 때가 있다. 이를 위하여 -\begin{verbatim} - !{<ascii stuffs>} -\end{verbatim} -와 같은 트릭을 쓸 수 있다. -이 때에 \verb|!{|는 반드시 단어의 첫머리여야 하므로 한 단어 안에서 -두 번 이상 쓸 수 없다. 문단 구분을 위한 빈 줄도 올 수 없다. - -이 아스키 에스케이프 트릭은 \env{jamotext} 환경 내에서만 쓸 수 있고 -\cmda{\jamoword}의 인자 범위에서는 쓸 수 없다. - -\medskip -\begin{exampleside} -\begin{jamotext} -in/gan/i pog/jex/goa eg/ab/ei -!{tyranny and oppression} -dai/hax/ha/nvn ma/ji/mag su/dan/v/ro/se -!{as a last resort} -ban/ran/vr ir/v/ki/do/rog gax/yo/bad/ji -anh/v/rye/myen -\end{jamotext} -\end{exampleside} - -이를 이용하여 약간의 수식도 \env{jamotext} 안에 둘 수 있다. - -\medskip -\begin{exampleside} -\begin{jamotext} -2/ca/bax/jex/sig/vi gvn/vi gox/sig/, -!{\[ x = \frac{-b\pm\sqrt{b^2-4ac}}{2a} \]} -vr yu/do/ha/ye bo/ja/. -\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}로도 호환 자모를 식자할 수 있기 때문에 일반적으로 -이 명령을 사용할 필요가 없으나, rrk 입력 방식으로 문서를 작성할 때라든지 오로지 호환 자모만을 -표기해야 할 필요가 있다든지 등 부득이한 경우가 있을 수 있다. -호환 자모를 \cmda{\jamoword} 명령의 인자 안에서 쓰는 방법은 \ref{sec:compjamo}절을 보라. -%이 명령은 본문 중에서 독립적으로 쓰기 위해 마련되었다. -인자로 단 하나의 자모만이 와야 한다. 설령 \texttt{RRK} 옵션을 부여하여 RRK 입력 방법을 쓰는 때라도 -이 명령의 인자는 이 패키지의 고유한 전자 규칙을 따른다. 쌍아래아는 유니코드 호환 자모에는 정의되어 있지 -않으나 편의를 위하여 조판할 수 있도록 해두었다. - -\medskip -\begin{exampleside} -\jmcc{BSG} \jmcc{@} \jmcc{UEY} \jmcc{@@} -\end{exampleside} - -\subsection{밑줄 긋기} +\subsection{패키지 옵션} -\leavevmode\marginpar{\fbox{\footnotesize v0.5.1}}% -밑줄을 긋는 명령 \cmda{\underline}의 인자로 \cs{jamoword}가 오는 것은 문제가 없다. +이 패키지는 세 가지 한글 입력 방법을 지원한다. 이 각각은 서로 호환되지 않으며 +한 문서에서 서로 다른 입력 방법을 섞어쓰지 못한다. 각 입력 방법은 패키지의 옵션으로 +선언한다. 입력 방법에 따라서 각각 추가 옵션을 줄 수 있으며 이에 대해서는 각 입력 방법을 소개하는 장에서 다룬다. +\begin{description} +\item [pm 입력 방법] \verb|[method=pm]|. 이 패키지에서 고유하게 정의하고 있는 한글 대응 입력 체계이다. 별도의 옵션을 주지 않으면 이 방식이 활성화되며, \ref{chap:pm}장이 이에 대하여 서술한다. -\begin{exampleside} -\underline{\jamoword{mit/jur/gvs/gi}} -\end{exampleside} +\item [한글 로마자 표기법 방식] \verb|[method=rrk]|, 간단히 \verb|rrk|만을 선언하여도 된다. 대문자 \verb|RRK|로 지정해도 된다. +국가 표준인 한글 로마자 표기법 ``표준 전자법''을 현대 한글 입력 방식으로 하고 약간 확장한 것이다. +\ref{chap:rrk}장에서 이에 대해 설명한다. -그러나 이 명령은 행자르기가 이루어지지 않는다. \textsf{ulem} 패키지의 \cs{uline}을 -쓰면 이 문제를 해결할 수 있으나, -이 패키지의 현재 버전(0.5.1)은 \textsf{ulem} 패키지와 충돌이 있다. \XeLaTeX 으로 -\koTeX 패키지를 활용하는 상황에서 \textsf{ulem}은 오류를 보이거나 의도하지 않은 결과를 -산출할 것이다. (RRK 입력 방법에서도 동일하다.) +\item [hangul\TeX{} 방식] \verb|[method=frkim]|, 간단히 \verb|frkim|으로 선언한다. 후쿠이 레이의 `hangul\TeX'에서 채택한 후쿠이 레이 방식 한글 로마자 전자법에 기초를 두고 있는 입력 방법이다. \ref{chap:frkim}장에서 설명한다. +\end{description} -Lua\LaTeX, 즉 \textsf{luatexko}를 이용하는 경우에는 \textsf{ulem} 없이도 ulem 명령들, -\verb|\uline| 등을 사용할 수 있으며 이 경우에는 에러 없이 잘 동작한다. 그러므로 -\cs{uline}과 같은 ulem 명령을 사용하여야 한다면 Lua\LaTeX 으로 컴파일하는 것이 좋다. +다음 두 옵션은 모든 입력 방식에 공통으로 적용된다. -그러나 부득이하여 \XeLaTeX 으로 컴파일하여야 하는 경우이고 밑줄 등을 구현하여야 하는 때라면 -\cmda{\jamoul} 명령을 이용할 수 있다. 물론 \textsf{ulem} 패키지 등은 preamble에서 -선언되어 있어야 한다.\footnote{Lua\LaTeX 과 \koTeX 을 쓸 때는 \textsf{ulem} 패키지를 -별도로 로드하지 않는다.} - -\begin{boxedverbatim} - \jamoul{<ulem command name>}{jamo text} -\end{boxedverbatim} +\begin{description} +\item [\ttfamily [pmfont=<fontname>{]}] 알파벳으로 입력되는 한글 자모 문자는 적절한 폰트의 +도움을 받아 한글로 출력된다. 어떤 폰트가 사용가능한지에 대해서는 \ref{chap:fonts}장에서 상세히 설명한다. 이 옵션은 한글 문자를 식자할 폰트를 미리 설정해주는 것이다. +폰트 이름(\texttt{<fontname>})은 \pkg{fontspec}이 인식할 수 있는 이름을 +전달해준다. -\texttt{<ulem command name>}은 ulem 명령의 이름을 백슬래시 없이 지정한다는 뜻이다. -다음 예를 보라. +\item [\ttfamily [pmfontfeature=<fontfeature>{]}] 폰트 식자 시에 전달해줄 font feature를 지정한다. 디폴트로 ``\texttt{Ligatures=TeX,Renderer=OpenType,Script=Hangul}''이 선언되어 있으므로 대부분의 경우 이를 변경할 필요가 없을 것이다. +\end{description} -\ifxetex -\begin{exampleside} -\jamoword{go/ji nuns/mv/rvr sbv/ri/gey/ko} -\jamoul{uline}{ye/hvi/ye/syu/mvr svr/ho/ni sai} -\jamoul{uwave}{m@/@/m@r} -\jamoword{nor/rai/no/ra} -\end{exampleside} -\else\ifluatex -\begin{exampleside} -\jamoword{go/ji nuns/mv/rvr sbv/ri/gey/ko} -\uline{\jamoword{ye/hvi/ye/syu/mvr svr/ho/ni sai}} -\uwave{\jamoword{m@/@/m@r}} -\jamoword{nor/rai/no/ra} -\end{exampleside} -\fi\fi -%\textsf{oblivoir-misc}의 \cmda{\texthl}도 같은 방법으로 할 수 있다: -%\verb|\jamoul{texthl}{nuns/mvr/r@r sbv/ri/gey/ko}| -%\jamoul{texthl}{nuns/mvr/r@r sbv/ri/gey/ko} +다음 옵션은 이전 버전과의 호환성 때문에 들여온 것이다. \pageref{sec:compat}페이지를 보라. +\begin{description} + \item[\ttfamily [compat=0.5{]}] 1.0 이전 버전의 대응 문자가 동작하게 한다. \texttt{method=pm}일 때만 유효하다. +\end{description} -\cs{jamoul}을 이용하여 밑줄을 긋는 기능은 RRK 입력방법에서는 구현되지 않았다. -이 때에는 \textsf{luatexko}의 ulem 명령을 사용하여야 할 것이다. +\subsection{명령과 환경} -\section{轉字 규칙} \label{sec:pmrule} +입력 방법의 선택에 무관하게 다음 하나의 명령과 하나의 환경이 한글을 입력하는 +명령(환경)으로 제공된다. 각 입력 방법의 구현에 따라 다른 보조적인 명령이 더 +있을 수 있으나 이 두 가지가 이 패키지가 제공하는 핵심 명령이다. -이 패키지는 아래에서 설명하는 바 독특한 입력 문자 대응 규칙을 정의하여 쓴다. 이 방법을 -편의상 ‘pm 전자 규칙’이라고 부르기로 한다. 이 방법은 \ref{sec:rrk}절에서 설명할 RRK 입력 규칙과 -다르고 둘 중 하나를 선택하여 써야 한다. 소실된 한글 옛문자를 -완벽하게 식자하려면 pm 입력 방식으로만 가능하다. +\paragraph{명령 \ttfamily \cs{jamoword}} +\cs{par}가 포함되지 않은 하나의 인자를 취하여 알파벳 문자를 한글로 변환하여 +출력한다. 이 명령의 인자 범위에 만약 알파벳 아닌 것, 예를 들어 한자, 카나문자, 부호 등이 온다면 변환하지 않고 그대로 출력한다. 매크로의 경우는 인자를 취하지 않는 protect된 매크로는 그대로 출력한다. 그러나 매크로의 인자는 거기에 알파벳이 포함되어 있기 때문에 제대로 해석하지 못하므로 인자를 취하는 매크로는 오지 못하는 것으로 간주하여야 한다. +문장부호는 (입력 방식에 따라 차이가 있지만) 마침표, 쉼표 등 기본적인 문장부호를 쓸 수 있다. 따옴표의 경우, \TeX{} 방식의 큰따옴표는 이 명령의 범위 밖에 두는 것이 안전할 것이다. 다만 패키지가 내부적으로 사용하는 몇 가지 특별한 문자(입력 방식마다 다르므로 각각 설명을 제공한다)는 주의하여 사용해야 할 때가 있다. -\subsection{성조표지와 음절} +\paragraph{환경 \ttfamily jamotext} +\cs{par}를 포함하는 둘 이상의 문단의 범위를 한글로 식자한다. +영어와 같은 외국어와 어울러쓰는 때가 많은 우리 문장에서 한글로 된 문단의 중간에 한글이 아닌 알파벳이 놓일 때 이를 처리하는 것이 어렵기 때문에 \env{jamotext} 환경은 +(rrk를 제외하고) 아스키 에스케이핑 트릭을 가능하게 해두었으나, 대체로 한글만 +온전하게 있는 문장을 식자할 때 사용할 것을 권장한다. 영어 등 다른 언어와의 스위칭이 +많다면 \cs{jamoword}를 써서 한글 부분만 표현하는 쪽이 좋다. -입력에는 로마자 알파벳과 \verb|@| 부호, 그리고 세 개의 성조표지(방점) 기호 \verb|/|, \verb|;|, \verb|:|를 사용하며, 중성 필러를 표현하기 위하여 \verb|*| 부호를 쓴다. +\section{문서 작성} -\emph{성조표지가 와야 음절이 완성된 것으로 본다}. 모든 한글 음절은 반드시 성조표지로 끝난다. -평성이 아닌 성조표지는 (적절한 폰트에서) 한글 음절의 왼편에 찍힌다. +이 절에서는 pm 입력 방법을 예시로 들겠다. 자모 입력된 부분의 입력 방법을 다른 방법으로 바꾸더라도 +결과는 같다. -\begin{table}[htpb] -\centering -\caption{성조 표지} \label{tab:tonemarker} -\begin{tblr}{hlines,vlines, - vline{1,Z}={0pt} -} -\texttt{/} & 평성 & 점 없음 \\ -\texttt{;} & 거성 & 점 하나 (\jamoword{m@s;no/p@n; so/ri;}) \\ -\texttt{:} & 상성 & 점 둘 \\ -\end{tblr} -\end{table} +\subsection{몇 단어\cntrdot 문단의 한글} -성조 표기를 하지 않는 경우에도 음절의 완성을 나타내는 \verb|/|를 두어야 한다. -다만 이 경우에 입력 편의를 위한 예외로서 -그 뒤에 스페이스가 와서 단어 입력이 종료되는 위치(또는 입력 문자열의 마지막)에서는 \verb|/|를 생략할 수 있다. 다음 예를 보아라. +한국어가 주언어(main language)가 아니고 한글 입력이 몇 단어(인명, 지명 등)나 몇 문단(인용문) 수준으로 +필요한 경우라고 하자. 한국어를 위한 별도의 패키지를 로드할 필요가 없이 \pkg{pmhanguljamo}만으로 필요한 단어를 입력할 수 있다. +이 때 필요한 것은, (1) \XeLaTeX\ 또는 \LuaLaTeX 으로 컴파일하는 문서여야 한다는 것, (2) \pkg{fontspec}이 로드되어야 한다는 것, 두 가지이다. -\medskip -\begin{exampleside} -\jamoword{moi/koa/ g@/r@m/sbun/ is/go/}\\ -\jamoword{moi/koa g@/r@m/sbun is/go} -\end{exampleside} +\begin{exampleonly} +\documentclass{article} -스페이스 앞에서 \verb|/|를 생략할 수 있음과 관련하여 스페이스가 아니라면 생략할 수 없음에 주의하라. 예컨대 마침표와 같은 문장부호가 올 때는 그 문장부호 앞에서 \verb|/|를 생략할 수 없다. +\usepackage{fontspec} +\usepackage[pmfont={Noto Serif KR}]{pmhanguljamo} -\medskip -\begin{exampleside} -\jamoword{jas ans bo/m@i pvr/oa na/mo/sbun gi/peys/do/da/.} -\end{exampleside} +\begin{document} +Jikji (\jamoword{jig/ji/sim/cei/yo/jer}) is the world's oldest +extant book printed with movable metal type. +\end{document} +\end{exampleonly} -\subsection{알파벳 대응 문자} +다만, 이 때에는 \cs{jamoword}로 입력되는 부분에서 행나눔이 원만하게 일어나지 않을 수 있다. +비교적 인용되는 문장이 길어서 한글에 맞는 행나눔이 필요한 경우라면 \pkg{polyglossia}와 같은 +패키지를 이용하고 한국어 선언을 하는 방법이 있다. -알파벳 소문자를 이용하여 한글 자모 영역의 문자를 입력한다. 자음과 모음의 대응 규칙은 다음과 같다. +\begin{exampleonly} +\documentclass{article} +\usepackage{polyglossia} +\setmainlanguage{english} +\setotherlanguage{korean} +\newfontfamily\hangulfont{HCR Batang LVT}[Script=Hangul] +\usepackage[pmfont={Noto Serif KR}]{pmhanguljamo} -\subsubsection{자음} +\begin{document} +\begin{korean} +\jamoword{mo/dvn in/ryu gu/seq/uen/vi cen/bu/vi jon/em/seq/goa +doq/dvq/ha/go yaq/do/har su ebs/nvn guen/ri/rvr in/jeq/ha/nvn ges/i +sei/gyei/vi ja/yu/, jeq/vi mic pyeq/hoa/vi gi/co/i/mye/, +in/guen/ei dai/han mu/si/oa gyeq/myer/i in/ryu/vi yaq/sim/vr +gyeg/bun/si/ki/nvn man/haiq/vr co/rai/ha/yess/v/mye/,} +\end{korean} +\end{document} +\end{exampleonly} -\begin{table}[h] -\centering -\caption{알파벳-자모 대응 규칙: 자음}\label{tab:cons} -\ttfamily -\begin{tblr}{ - colspec={ll|ll|ll|ll|ll}, - hline{1,Z}={1pt}, - hline{Y}={.7pt} -} -ㄱ & g & ㄴ & n & ㄷ & d & ㄹ & r & ㅁ & m \\ -ㅂ & b & ㅅ & s & ㅇ & \SetCell{cyan!30}\textbf{x} & ㅈ & j & ㅊ & c \\ -ㅋ & k & ㅌ & t & ㅍ & p & ㅎ & h & & \\ -\char"3181 & \SetCell{cyan!30}\textbf{q} & \char"317F & \SetCell{cyan!30}\textbf{z} & -\char"3186 & \SetCell{cyan!30}\textbf{f} & \SetCell[c=4]{} \\ -\end{tblr} -\end{table} +이 예에서 \cs{jamoword}를 \env{korean} 환경 안에 넣은 이유는 행나눔이 원활하게 일어나게 +하기 위한 것이다. 만약 \texttt{pmfont}를 별도로 지정하지 않는다면 \cs{hangulfont}로 +선언된 폰트가 쓰일 것이므로 \texttt{Script=Hangul} feature를 부여하는 데 주의해야 한다. 만약 +\texttt{pmfont}를 지정한다면(위의 예에서와 같이) \cs{jamoword} 부분은 해당 폰트와 feature로 +식자하므로 별도로 신경쓰지 않아도 좋다. -\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 `\jamoword{sl@}'나 `\jamoword{slr@}'와 같은 특별한 글자, `\jamoword{jl*/cl*/jjl*/sl*/ss*}, \jamoword{jlr*/clr*/jjlr*/slr*/sslr*}'의 초성 글자들, 즉 훈민정음 언해의 ``\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}. -\item 정말로 초성을 비우기를 원한다면(즉 초성 필러를 쓰려 한다면) \verb|w|를 그 위치에 쓸 수 있다. 이것은 종성에는 적용되지 않는다. \verb|\jamoword{wan}| \jamoword{wan}. -\end{enumerate} +\subsection{\koTeX\ 문서} -\subsubsection{모음} +주언어가 한국어이든 아니든 \koTeX (\XeTeX-\ko, \LuaTeX-\ko)이 로드되는 상황을 +이 패키지는 잘 지원한다. -\begin{table}[h] -\centering -\caption{알파벳-자모 대응 규칙: 모음} \label{tab:vow} -\ttfamily -\begin{tblr}{ - colspec={ll|ll|ll|ll|ll}, - rowspec={|[1pt]QQ|Q|QQ|Q|[1pt]} -} -ㅏ & a & ㅓ & e & ㅗ & o & ㅜ & u & ㅡ & \SetCell{cyan!50}\textbf{v} \\ -ㅣ & i & \jmcc{@} & \SetCell{cyan!50}\textbf{@} & & & & & & \\ -ㅑ & ya & ㅕ & ye & ㅛ & yo & ㅠ & yu & \kern-.3em\jmcc{@}\kern-.6em\jmcc{@} & \SetCell{cyan!50}@@ \\ -ㅐ & ai,ay & ㅔ & ei,ey & ㅚ & oi,oy & ㅟ & ui,uy & ㅢ & vi,vy \\ -ㅒ & yai,yay & ㅖ & yei,yey & \jmcc{YOI} & yoi,yoy & \jmcc{YUI} & yui & \jmcc{@I} & @i \\ -ㅘ & oa & ㅙ & oai,oay & ㅝ & ue & ㅞ & uei,uey & \textit{filler} & \SetCell{cyan!50}{*} \\ -\end{tblr} -\end{table} +\begin{exampleonly} +\documentclass{article} +\usepackage{kotex} +\usepackage[pmfont={Noto Serif KR}]{pmhanguljamo} -\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} 둘 다 가능하다. +\begin{document} +\jamoword{mo/dvn in/ryu gu/seq/uen/vi cen/bu/vi jon/em/seq/goa +doq/dvq/ha/go yaq/do/har su ebs/nvn guen/ri/rvr in/jeq/ha/nvn ges/i +sei/gyei/vi ja/yu/, jeq/vi mic pyeq/hoa/vi gi/co/i/mye/, +in/guen/ei dai/han mu/si/oa gyeq/myer/i in/ryu/vi yaq/sim/vr +gyeg/bun/si/ki/nvn man/haiq/vr co/rai/ha/yess/v/mye/,} +\end{document} +\end{exampleonly} -\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}. +\paragraph{한국어가 주언어인 문서} 주로 키보드 직접 입력이 번거로운 옛한글을 위하여 +\pkg{pmhanguljamo}를 쓰게 될 것이다. 이 때 본문의 폰트와 jamo 부분 폰트를 같게 할 +것인지 다르게 할 것인지를 결정해야 한다. 만약 동일한 폰트를 쓰게 하려 한다면 \texttt{pmfont} +옵션을 별도로 주지 않고 그 대신 \cs{setmainhangulfont}에 \texttt{[Script=Hangul]} +또는 \texttt{[Script=Hangul,Renderer=OpenType]}을 부여하여야 한다. 반면 +서로 다른 폰트를 쓰는 경우라면 \texttt{pmfont}를 지정하는 것이 간단하다. +상세한 사항은 \ref{chap:fonts}장을 참고하라. -그러나 \jmcc{@I}는 단모음으로 인식될 가능성이 없다고 보아 \verb|@i|만을 취하였다. +\paragraph{한국어가 주언어가 아닌 문서} \texttt{pmfont}로 +한글이 식자될 폰트를 지정하는 것으로 충분하다. -\verb|\jamoword{g@i}| \jamoword{g@i}. -\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 5.2의 한글 자모 확장 A, B를 지원한다. 그러므로 한글 자모 영역([U+11XX])에는 없는 `\jamoword{wuye}'와 같은 모음을 표기할 수 있다. \verb|\jamoword{sa/guye}| \jamoword{sa/guye/}. 물론 폰트가 이를 지원해야 한다. -\item 중성 필러([U+1160])는 \verb|*| 부호로 적을 수 있다. \verb|\jamoword{h*n}| \jamoword{h*n}. 초성과 중성을 모두 filler로 채우는 경우에는 종성이 있어야 한다. \verb|\jamoword{w*f}| \jamoword{w*f}. -\end{enumerate} +\section{입력 방법의 예시} -\subsubsection{호환자모 음절} \label{sec:compjamo} +이 패키지가 의도하는 바에 대한 이해를 돕기 위해 동일한 문장을 입력하는 방법의 예시를 들어둔다. -\cmda{\jamoword}나 \env{jamotext} 범위 안에서 호환 자모를 식자하려면 해당하는 자모를 대문자로, 하나의 음절로 입력한다. -별도로 \cmda{\jmcc}를 쓰지 않는다. 그러나 반드시 하나의 자모가 한 음절이어야 한다. +\paragraph{pm 입력} 셋 중에서 옛한글을 완전하게 표현할 수 있는 방식이다. 예시는 현대 한글. -\begin{exampleside} -\jamoword{B/n@n; ib/si/ur;sso/ri;ni;} \\ -\jamoword{孟m@ix/子j@/I g@r/@/sya/d@i} -\end{exampleside} +\begin{exampleonly} +\jamoword{sei/gyei/in/guen/sen/en} +\begin{jamotext} +mo/dvn in/ryu gu/seq/uen/vi cen/bu/vi jon/em/seq/goa +doq/dvq/ha/go yaq/do/har su ebs/nvn guen/ri/rvr in/jeq/ha/nvn ges/i +sei/gyei/vi ja/yu/, jeq/vi mic pyeq/hoa/vi gi/co/i/mye/, +in/guen/ei dai/han mu/si/oa gyeq/myer/i in/ryu/vi yaq/sim/vr +gyeg/bun/si/ki/nvn man/haiq/vr co/rai/ha/yess/v/mye/, +\end{jamotext} +\end{exampleonly} -\medskip +\paragraph{RRK 방식} 일반적으로 한국어 사용자에게 가장 친숙한 방식이다. (옛한글은\expldash 이 패키지가 확장한 몇 가지를 제외하면\expldash 일반적으로 사용하기 어렵다.) -호환 자모 아래아 `\jmcc{@}'를 \cmda{\jamoword} 인자 안에서 식자하려 할 때는 자모 아래아 `\jamoword{w@}'와 -구별하기 위해 대문자 \texttt{W}로 표기해야 한다. \verb|W|, \verb|WW|, \verb|WI|만이 지원된다. +\begin{exampleonly} +\jamoword{segye-ingwonseon-eon} +\begin{jamotext} +modeun inlyu guseong-won-ui cheonbu-ui jon-eomseonggwa +dongdeunghago yangdohal su eobsneun gwonlileul injeonghaneun +geos-i segye-ui ja-yu, jeong-ui mich pyeonghwa-ui gicho-imyeo, +ingwon-e daehan musi-wa gyeongmyeol-i inlyu-ui yangsim-eul +gyeogbunsikineun manhaeng-eul cholaeha-yeoss-eumyeo, +\end{jamotext} +\end{exampleonly} -\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} +\paragraph{frkim 방식} 다음과 같다. -\subsubsection{문장 부호, 한자와 음절 한글} +\begin{exampleonly} +\jamoword{seigiei'inguensen'en} +\begin{jamotext} +modyn inriu guseq'uen'yi cenbu'yi jon'emseqgoa +doqdyqhago iaqdohar su ebsnyn guenriryr injeqhanyn ges'i +seigiei'yi ja'iu, jeq'yi mic pieqhoa'yi gico'imie, +inguen'ei daihan musi'oa gieqmier'i inriu'yi iaqsim'yr +giegbunsikinyn manhaiq'yr coraiha'ieS'ymie, +\end{jamotext} +\end{exampleonly} -\cmda{\jamoword} 명령과 \env{jamotext} 환경 안에 오는 인자는 다음과 같은 문자에 대하여 예약이 되어 있다. -\begin{itemize}\firmlist -\item 알파벳 문자 --- 한글 자모 문자에 대응한다. -\item \texttt{;}, \texttt{:}, \texttt{/} --- 이 세 개의 부호는 성조표지, 음절완성을 표시하기 위하여 예약되어 있다. -\item \texttt{|} --- 이 한 개의 부호문자는 내부적으로 사용하도록 예약되어 있다. -\end{itemize} -이를 제외한 문자는 입력한 대로 찍힌다. 즉 한글 완성형 음절 문자나 한자 및 숫자와 문장부호가 모두 그대로 출력된다. 예: \verb|\jamoword{``/u/ri/na/ra/"}| \jamoword{``/u/ri/na/ra/''}.\footnote{% - 여기서 \texttt{`}\texttt{`} 입력이 여는 따옴표로 나오는 이유는 \texttt{pmfont}로 - 지정하는 폰트에 기본적으로 \texttt{Ligatures=TeX} feature 옵션이 주어지기 때문이다. - \texttt{pmfont} 옵션에 의하지 않고 별도로 폰트를 설정할 때 이 점을 알아두어야 한다.} -모든 문장 부호는 모두 음절 분리 부호에 의하여 분리되어 있어야 한다는 점에 주의하라. +어떤 입력 방식이든, 결과는 다음과 같이 나타난다. -콜론, 세미콜론, 슬래시는 각각 \cmda{\ColonMark}, \cmda{\SemiColonMark}, \cmda{\SlashMark} 명령을 사용할 수 있게 해두었다. 이밖에 \cmda{\CntrdotMark}는 가운뎃점을 식자한다. +\begin{quote} +\jamoword{sei/gyei/in/guen/sen/en} +\begin{jamotext} + mo/dvn in/ryu gu/seq/uen/vi cen/bu/vi jon/em/seq/goa + doq/dvq/ha/go yaq/do/har su ebs/nvn guen/ri/rvr in/jeq/ha/nvn ges/i + sei/gyei/vi ja/yu/, jeq/vi mic pyeq/hoa/vi gi/co/i/mye/, + in/guen/ei dai/han mu/si/oa gyeq/myer/i in/ryu/vi yaq/sim/vr + gyeg/bun/si/ki/nvn man/haiq/vr co/rai/ha/yess/v/mye/, +\end{jamotext} +\end{quote} -매크로를 쓸 수 없는 것이 원칙이기는 하나, -protect된 단일 매크로는 그대로 출력된다. 그러나 인자를 취하는 매크로는 오류가 발생할 것이므로 -인자 범위 밖에 두도록 하라. +%\item \verb|pmfont={<fontname>}|. +%식자할 폰트를 지정한다. 이 옵션이 주어지지 않으면 문서의 mainfont (\koTeX\ 패키지의 +%경우는 mainhangulfont)를 따른다. 지정할 수 있는 폰트에 대해서는 \ref{sec:font} \titleref{sec:font}\를, 이 옵션에 대한 설명은 \ref{font:set}\를 보라. +%\item \verb|pmfontfeagure=<fontfeature>|. +%pmfont 옵션으로 지정하는 폰트에 추가 속성을 부여하려 할 때. \ref{font:set}\을 보라. +%\end{enumerate} -\begin{exampleside} -\jamoword{15 세기 표기\ColonMark{} 國之語音, 우리나라의 말이 -$\Rightarrow$ na/ras/mar/ss@/mi} -\end{exampleside} +\section{주의사항} +이 패키지의 목적은 한글 자모를 입력하여 한글이 표현되게 하는 것이다. +글자가 먼저 만들어지고 거기에 대해서 어떤 명령을 수행할 수 있는 것이므로 예를 들어 +\begin{verbatim} + \textbf{\jamoword{<args>}} +\end{verbatim} +이것은 원하는 결과를 내지만 +\begin{verbatim} + \jamoword{\textbf{<args>}} +\end{verbatim} +이렇게 하면 오류가 발생한다. -%RRK 입력 방식이 활성화되면 매크로 사용은 더욱 제한된다. \cmda{\ColonMark}와 같은 임시 명령도 동작하지 않는다. +\paragraph{이전 버전과의 호환성}\label{sec:compat} +이 패키지 1.0버전에서 \texttt{[method=pm]}의 한글 대응 문자 세 개의 설정값이 달라졌다.\marginpar{\fbox{\footnotesize v1.0}} +그 내역은 다음과 같다. \medskip - -음절문자뿐 아니라 자모 한글의 입력도 그대로 출력된다. 어디선가 옛한글% -\footnote{1933년 이전 표기법의 한글을 가리킨다. -유니코드의 한글 음절 문자 영역에서 표현되지 않는 한글을 통칭하는 것이나 -현대 한국어 중에서 제주어를 기록할 때도 쓰이고, 워드 프로세서 \jamoword{h@n/gvr}의 -이름을 적을 때도 쓰이기 때문에 그리 `옛' 것은 아니다. -이 글에서는 관행을 따라 옛한글이라고 부르기로 한다.} -텍스트를 복사해와서 넣을 때 유용할지도. -다음 예에서 이 패키지의 입력 방식과 첫가끝 입력이 혼용되어 있는 것을 볼 수 있다. +\begin{tabular}{lll} + 대응 한글 자모 & 1.0 버전 & 0.6 이전 버전 \\ + ㅇ & \texttt{q} & \texttt{x} \\ + \char"3181 & \texttt{f} & \texttt{q} \\ + \char"3186 & \texttt{x} & \texttt{f} \\ +\end{tabular} \medskip -\begin{exampleside} -\jamoword{b@/r@/mi sb@/r@/mye ha/n@r/hi 놉고 나ᄇᆡ 됫ᄑᆞ라미 슬프니} -\end{exampleside} +이 개편은 \texttt{[method=frkim]}이 도입되면서 이루어졌는데 가장 큰 변화는 이응(ㅇ)을 \texttt{x}가 +아니라 \texttt{q}로 적게 한 것이다. -\env{jamotext} 환경 안에서 강제 개행 명령(\verb|\\|)을 쓸 때 주의할 점이 있다. -예를 들어 다음과 같은 입력 -\begin{verbatim} - na/ras/mar/ss@/mi\\ - 中dyuq/國guig/ei dar/a -\end{verbatim} -여기서 `\verb|mi\\|' 부분은 음절로서 완성되지 않는다. 왜냐하면 -슬래시(\verb|/|)를 생략할 수 있는 것은 space 직전이어야 하기 때문이다. -그러므로 -\begin{verbatim} - na/ras/mar/ss@/mi \\ - 中dyuq/國guig/ei dar/a -\end{verbatim} -이와 같이 space를 하나 두거나 -\begin{verbatim} - na/ras/mar/ss@/mi/\\ - 中dyuq/國guig/ei dar/a -\end{verbatim} -슬래시(성조표지)를 생략하지 않아야 한다. 대체로 스페이스를 하나 두는 쪽이 안전하다. +이러한 변화로 인하여 이전 버전에서 입력한 텍스트가 의도와 달리 출력될 수 있다. 패키지 옵션으로 +\texttt{[compat=0.5]}를 부여하면 새로운 대응 문자가 아니라 0.6 이전 버전에서의 대응 문자가 +여전히 동작하게 해두었다. -\section{폰트} +\chapter{폰트}\label{chap:fonts} -\subsection{사용가능한 글꼴}\label{sec:font} +\section{사용가능한 글꼴}\label{sec:font} 자모 조합 한글을 출력하려면 이를 해낼 수 있는 글꼴이 필요하다. 소위 `옛한글' 글꼴이라지만 PUA 옛한글 5000여자의 사용자 영역 글자만을 가지고 있는 글꼴로는 이 패키지에서 말하는 옛한글을 식자할 수 없다. 새바탕\cntrdot 새굴림과 같은 한양 옛한글 @@ -535,10 +393,10 @@ $\Rightarrow$ na/ras/mar/ss@/mi} \unusepmfont \begin{boxedverbatim} -sa:r@m/ma:da; h@i:xxye; su:bxi; ni/gye; +sa:r@m/ma:da; h@i:qqye; su:bqi; ni/gye; \end{boxedverbatim} -\newcommand\teststr{\jamoword{sa:r@m/ma:da; h@i:xxye; su:bxi; ni/gye; +\newcommand\teststr{\jamoword{sa:r@m/ma:da; h@i:qqye; su:bqi; ni/gye; }} \newcommand\testfont[1]{% @@ -569,9 +427,9 @@ KoPubWorld 바탕 \testfont{KoPubWorldBatangMedium} KoPubWorld 돋움 \testfont{KoPubWorldDotumMedium} -한컴훈민정음세로쓰기\footnote{이 폰트는 방점의 위치가 정확하게 나타나지 않는다. 방점이 없는 글자에 대해서만 사용할 수 있을 -것이다.} -\testfont{Hancom Hoonminjeongeum_V} +%한컴훈민정음세로쓰기\footnote{이 폰트는 방점의 위치가 정확하게 나타나지 않는다. 방점이 없는 글자에 대해서만 사용할 수 있을 +%것이다.} +%\testfont{Hancom Hoonminjeongeum_V} \medskip @@ -593,8 +451,7 @@ KoPubWorld 돋움 \testfont{KoPubWorldDotumMedium} \medskip -\renewcommand\teststr{\jamoword{sa/r@m/ma/da h@i/xxye su/bxi ni/gye -}} +\renewcommand\teststr{\jamoword{sa/r@m/ma/da h@i/qqye su/bqi ni/gye}} 은 자모바탕 \testfont{UnJamoBatang} @@ -615,10 +472,10 @@ KoPubWorld 돋움 \testfont{KoPubWorldDotumMedium} 현대 한글만을 표기하려 한다면 폰트의 제약이 줄어든다고 하겠다. \begin{boxedverbatim} -o/dvx/vn ja/ey a jo/sen/vi dog/rib/gug/im/goa +o/dvq/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}} +\renewcommand\teststr{\jamoword{o/dvq/vn ja/ey a jo/sen/vi dog/rib/gug/im/goa}} 백묵 바탕 \testfont{batang.ttf} @@ -632,9 +489,9 @@ Adobe 명조 \testfont{AdobeMyungjoStd-Medium.otf} \usepmfont -\subsection{폰트의 지정}\label{font:set} +\section{폰트의 지정}\label{font:set} -\paragraph{Script Hangul Feature} +\subsubsection{Script Hangul Feature} \cmda{\jamoword}와 \env{jamotext} 인자 범위 내에서 한글을 식자하려 할 때에는 주어진 (한글) 폰트의 \textsf{Script Hangul} 속성을 활성화하여야 한다.\footnote{이것은 @@ -652,9 +509,13 @@ Adobe 명조 \testfont{AdobeMyungjoStd-Medium.otf} \begin{verbatim} \set...font{<fontname>}[Script=Hangul,Renderer=OpenType] \end{verbatim} -을 지정하라. +을 지정하여야 한다. + +이 패키지는 \texttt{[pmfont=]} 옵션을 제공하여 이런 번거로움을 피해갈 수 있게 하였다. +즉 \cs{jamoword}로 주어지는 한글에 적용할 폰트를 별도로 지정함으로써 +위에 언급한 feature를 붙여 식자하게 하였다. 다음 절에서 이에 대해 부연한다. -\paragraph{패키지 옵션 \texttt{pmfont}} +\subsection{패키지 옵션 \texttt{pmfont}} \leavevmode{\marginpar{\fbox{\footnotesize v5.0}}} 패키지 옵션 \verb|pmfont=|가 주어지지 않았을 때는 아무 일도 하지 않는다. @@ -686,13 +547,15 @@ mainfont로 식자할 것인지, 또는 별도의 폰트를 \cmda{\newfontfamily \begin{verbatim} \unusepmfont \end{verbatim} -를 선언할 수 있다. 본문 글꼴에 \texttt{Script=Hangul} 옵션이 -주어져 있지 않으면 다음과 같은 결과를 얻게 될 것이다. +를 선언할 수 있다.\footnote{단 \texttt{method=frkim} 방식에서는 폰트 지정 방식이 + 독자적으로 되어 있어서 \cs{unusepmfont} 명령의 효력이 없다.} +본문 글꼴 설정에서 \texttt{Script=Hangul} 옵션이 주어져 있지 않으면 +다음과 같은 결과를 얻게 될 것이다. \unusepmfont \jamoword{na/ras;mar:ss@/mi;} \usepmfont -\paragraph{패키지 옵션 pmfontfeature} \marginpar{\fbox{\footnotesize{v0.5.1}}} +\subsection{패키지 옵션 pmfontfeature} \marginpar{\fbox{\footnotesize{v0.5.1}}} 자모 한글을 식자하는 폰트(pmfont)에 추가적인 fontfeature를 부여하려면 이 옵션을 쓸 수 있다.\footnote{이 패키지가 \texttt{pmfont}에 default로 부여하는 속성은 \texttt{Ligatures=TeX}, \texttt{Script=Hangul}, 그리고 \texttt{Renderer=OpenType}이다.} @@ -719,151 +582,532 @@ mainfont로 식자할 것인지, 또는 별도의 폰트를 \cmda{\newfontfamily \jamoword{moi/koa g@/r@m/sbun is/go} \end{exampleside} -\subsection{활용} -특정 언어 패키지나 입력기의 제약 없이 한글 글꼴을 지정하는 것만으로 -현대 한글과 옛한글을 모두 표현할 수 있다는 것이 \pkg{pmhanguljamo}의 장점이다. -\koTeX\ 패키지와 함께 쓸 때와 그렇지 않을 때를 나누어서 간단히 사용법을 보이겠다. +\chapter{method=pm}\label{chap:pm} + +\section{轉字 규칙} \label{sec:pmrule} + +이 패키지는 아래에서 설명하는 바 독특한 입력 문자 대응 규칙을 정의하여 쓴다. 이 방법을 +편의상 ‘pm 전자 규칙’이라고 부르기로 한다. 이 방법은 \ref{sec:rrk}절에서 설명할 RRK 입력 규칙과 +다르고 둘 중 하나를 선택하여 써야 한다. 소실된 한글 옛문자를 +완벽하게 식자하려면 pm 입력 방식으로만 가능하다. + +\subsection{성조표지와 음절} + +입력에는 로마자 알파벳과 \verb|@| 부호, 그리고 세 개의 성조표지(방점) 기호 \verb|/|, \verb|;|, \verb|:|를 사용하며, 중성 필러를 표현하기 위하여 \verb|*| 부호를 쓴다. + +\emph{성조표지가 와야 음절이 완성된 것으로 본다}. 모든 한글 음절은 반드시 성조표지로 끝난다. +평성이 아닌 성조표지는 (적절한 폰트에서) 한글 음절의 왼편에 찍힌다. + +\begin{table}[htpb] +\centering +\caption{성조 표지} \label{tab:tonemarker} +\begin{tblr}{hlines,vlines, + vline{1,Z}={0pt} +} +\texttt{/} & 평성 & 점 없음 \\ +\texttt{;} & 거성 & 점 하나 (\jamoword{m@s;no/p@n; so/ri;}) \\ +\texttt{:} & 상성 & 점 둘 \\ +\end{tblr} +\end{table} + +성조 표기를 하지 않는 경우에도 음절의 완성을 나타내는 \verb|/|를 두어야 한다. +다만 이 경우에 입력 편의를 위한 예외로서 +그 뒤에 스페이스가 와서 단어 입력이 종료되는 위치(또는 입력 문자열의 마지막)에서는 \verb|/|를 생략할 수 있다. 다음 예를 보아라. + +\medskip +\begin{exampleside} +\jamoword{moi/koa/ g@/r@m/sbun/ is/go/}\\ +\jamoword{moi/koa g@/r@m/sbun is/go} +\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{\koTeX\ 문서} -만약 \koTeX\ (\pkg{xetexko} 또는 \pkg{luatexko})과 함께 사용하는 경우라면 본문 한글 글꼴을 -다음과 같이 지정한다. +알파벳 소문자를 이용하여 한글 자모 영역의 문자를 입력한다. 자음과 모음의 대응 규칙은 다음과 같다. + +\subsubsection{자음} +\begin{table}[h] +\centering +\caption{알파벳-자모 대응 규칙: 자음}\label{tab:cons} +\ttfamily +\begin{tblr}{ + colspec={ll|ll|ll|ll|ll}, + hline{1,Z}={1pt}, + hline{Y}={.7pt} +} +ㄱ & g & ㄴ & n & ㄷ & d & ㄹ & r & ㅁ & m \\ +ㅂ & b & ㅅ & s & ㅇ & \SetCell{cyan!30}\textbf{q} & ㅈ & j & ㅊ & c \\ +ㅋ & k & ㅌ & t & ㅍ & p & ㅎ & h & & \\ +\char"3181 & \SetCell{cyan!30}\textbf{f} & \char"317F & \SetCell{cyan!30}\textbf{z} & +\char"3186 & \SetCell{cyan!30}\textbf{x} & \SetCell[c=4]{} \\ +\end{tblr} +\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{Q}'(이응)에 대하여 \verb|q|를 채택하였다. +%원래 이것은 오래 전 \pkg{frktex}이라는 패키지에서 첫소리 이응에 대하여 \verb|x|를 썼던 적이 있으므로 그 유래가 아주 없다고 할 수는 없겠다. 다만 이 패키지는 종성 이응 받침도 \verb|x|를 쓴다. +\item `\jmcc{F}'(옛이응)을 \verb|f|로 한 것은 별다른 선택의 여지가 없어서였다. \ref{chap:frkim}장의 \texttt{frkim} 입력 방식에서는 이것을 대문자 \verb|Q|로 하고 있지만 우리는 대문자를 다른 용도로 할당하였기 때문에 그렇게 할 수 없었다. +%역시 \pkg{frktex}에서 온 것인데 ``꼭지 달린 이응''이라는 글자 모양이 \verb|q|를 연상시킨다''는 이유였다고 한다. 그럴 법도 하다. +\item 가장 곤란했던 것은 \jmcc{X}(여린히읗)이었다. 사용되지 않은 자판 가운데서 선택할 수밖에 없는데 \texttt{l}, \texttt{v}, \texttt{w}, \texttt{x} 정도가 선택 가능한 범위였다. 알파벳이 아닌 부호문자 중에서 선택하는 것도 생각해보았으나 역시 자판의 윗줄로 올라가는 것은 꺼려져서 \verb|x|로 선택하였다. 마침 \verb|frkim| 방식에서 \verb|X|를 할당하고 있으므로 어느 정도 유사성을 확보했다고 생각하고 싶다. +\item `\jmcc{Z}'(반시옷)을 \verb|z|로 한 것은 납득할 수 있다고 본다. z가 s의 유성음에 대응하기 때문에. + +\item `\jamoword{sl@}'나 `\jamoword{slr@}'와 같은 특별한 글자, `\jamoword{jl*/cl*/jjl*/sl*/ss*}, \jamoword{jlr*/clr*/jjlr*/slr*/sslr*}'의 초성 글자들, 즉 훈민정음 언해의 ``\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{BQ}', `\jmcc{BBQ}', `\jmcc{MQ}', `\jmcc{PQ}'와 같은 ``\jamoword{ib/si/ur;ga/b@i;ya/bq@n; so/ri;}'' 표기는 \verb|q|를 이어써서 표기한다. 각각, \texttt{bq}, \texttt{bbq}, \texttt{mq}, \texttt{pq}. +\item 겹자음\cntrdot 복자음은 이어쓴다. \texttt{gg} \jmcc{GG}, \texttt{bsg} \jmcc{BSG}, \texttt{bsd} \jmcc{BSD}, \texttt{rx} \jmcc{RX}. +\item `제로자음'인 초성 이응은 생략할 수 있다. 모음으로 시작하면 초성 이응을 식자해준다. \verb|\jamoword{an}| \jamoword{an}. +\item 정말로 초성을 비우기를 원한다면(즉 초성 필러를 쓰려 한다면) \verb|w|를 그 위치에 쓸 수 있다. 이것은 종성에는 적용되지 않는다. \verb|\jamoword{wan}| \jamoword{wan}. +\end{enumerate} + +\subsubsection{모음} + +\begin{table}[h] +\centering +\caption{알파벳-자모 대응 규칙: 모음} \label{tab:vow} +\ttfamily +\begin{tblr}{ + colspec={ll|ll|ll|ll|ll}, + rowspec={|[1pt]QQ|Q|QQ|Q|[1pt]} +} +ㅏ & a & ㅓ & e & ㅗ & o & ㅜ & u & ㅡ & \SetCell{cyan!50}\textbf{v} \\ +ㅣ & i & \jmcc{@} & \SetCell{cyan!50}\textbf{@} & & & & & & \\ +ㅑ & ya & ㅕ & ye & ㅛ & yo & ㅠ & yu & \kern-.3em\jmcc{@}\kern-.6em\jmcc{@} & \SetCell{cyan!50}@@ \\ +ㅐ & ai,ay & ㅔ & ei,ey & ㅚ & oi,oy & ㅟ & ui,uy & ㅢ & vi,vy \\ +ㅒ & yai,yay & ㅖ & yei,yey & \jmcc{YOI} & yoi,yoy & \jmcc{YUI} & yui & \jmcc{@I} & @i \\ +ㅘ & oa & ㅙ & oai,oay & ㅝ & ue & ㅞ & uei,uey & \textit{filler} & \SetCell{cyan!50}{*} \\ +\end{tblr} +\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 `쌍아래아(\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 5.2의 한글 자모 확장 A, B를 지원한다. 그러므로 한글 자모 영역([U+11XX])에는 없는 `\jamoword{wuye}'와 같은 모음을 표기할 수 있다. \verb|\jamoword{sa/guye}| \jamoword{sa/guye/}. 물론 폰트가 이를 지원해야 한다. +\item 중성 필러([U+1160])는 \verb|*| 부호로 적을 수 있다. \verb|\jamoword{h*n}| \jamoword{h*n}. 초성과 중성을 모두 filler로 채우는 경우에는 종성이 있어야 한다. \verb|\jamoword{w*x}| \jamoword{w*x}. +\end{enumerate} + +\subsection{호환자모 음절} \label{sec:compjamo} + +\cmda{\jamoword}나 \env{jamotext} 범위 안에서 호환 자모를 식자하려면 해당하는 자모를 대문자로, 하나의 음절로 입력한다. +별도로 \cmda{\jmcc}를 쓰지 않는다. 그러나 반드시 하나의 자모가 한 음절이어야 한다. + +\begin{exampleside} +\jamoword{B/n@n; ib/si/ur;sso/ri;ni;} \\ +\jamoword{孟m@if/子j@/I g@r/@/sya/d@i} +\end{exampleside} + +\medskip + +호환 자모 아래아 `\jmcc{@}'를 \cmda{\jamoword} 인자 안에서 식자하려 할 때는 자모 아래아 `\jamoword{w@}'와 +구별하기 위해 대문자 \texttt{W} 또는 \texttt{AA}로 표기해야 한다. \verb|W|(\verb|AA|), \verb|WW|(\verb|AAA|), \verb|WI|(\verb|AAI|)만이 지원된다. + +\begin{exampleside} +\jamoword{AA/n@n; 呑t@n/D/字/jj@q; ga/on;d@is;so/ri; g@;t@;ni/ra;.}\\ +\jamoword{AAA/nvn jei/ju/e pyo/gi/ei i/yoq/doin/da/.} +\end{exampleside} + +%======= +\section{method=pm에서의 명령과 환경} + +\subsection{\texttt{\bs jamoword} 명령} \begin{boxedverbatim} - \setmainhangulfont{Noto Serif KR}[Script=Hangul] +\jamoword{<several words>} \end{boxedverbatim} -또는 \texttt{pmfont} 옵션을 지정한다. 본문과 다른 폰트를 쓰게 하려 할 때에도 -이와 같이 한다. \texttt{pmfont} 옵션으로 지정되는 글꼴에는 \texttt{Script=Hangul}이 -자동으로 설정되므로 폰트 이름(또는 폰트 파일 이름)만을 주면 된다. +한글 자모를 알파벳으로 입력하여 출력한다. +하나 또는 둘 이상의 단어가 올 수 있다.\footnote{단 하나의 단어만을 처리하는 \cmda{\jamotextcmd}라는 명령이 +있기는 하나 내부적으로 사용되는 것이다.} +\verb|\par|를 포함하는 문단은 올 수 없다. + +\medskip + +\begin{exampleside} +\jamoword{na/ras;mar:ss@/mi; dyuf/guig;ei dar/a;} +\end{exampleside} + +\subsection{\env{jamotext} 환경} \begin{boxedverbatim} - \usepackage[pmfont={HCR Batang LVT}]{pmhanguljamo} +\begin{jamotext} +<text> +\end{jamotext} \end{boxedverbatim} -\ref{sec:summary}절에서 보인 샘플을 참고하라. +\subsubsection{\env{jamotext}의 아스키 에스케이프} -\subsubsection{\koTeX 이 아닐 때} +\env{jamotext} 환경은 여러 문단을 포함하는 긴 문장을 식자할 수 있다. +단 이 환경 안에 오는 모든 텍스트는 문장부호와 몇 가지 예외적인 것 이외에 +인자를 취하는 매크로를 포함하지 않고 순수한 한글로만 되어 있어야 한다. -\koTeX\ 문서가 아닐 때는 \pkg{fontspec} 패키지를 이용한다. main font를 위의 글꼴 중의 하나로 하거나(이 때에도 \texttt{[Script=Hangul]} 옵션을 반드시 지정하여야 한다.), -\cmda{\newfontfamily}로 글꼴 명령을 만들어 쓰거나, -아니면 %한글이 필요한 부분에만 \cmda{\fontspec}으로 글꼴을 지정해주는 것으로 될 것이다. -%\fref{fig:sample}\는 \pkg{article} 문서의 한 예이다. -\texttt{pmfont} 옵션으로 글꼴을 지정하면 될 것이다. -다음은 \pkg{article} 문서의 한 예이다.\footnote{폰트에 부여하는 -옵션에 관하여 각주~\ref{fn:fontoption}\을 볼 것.} -다만 이와 같이 한글 지원 패키지가 전혀 없는 상태에서는 글자 사이의 행나눔이나 양끝맞추기 등 한글 문장 식자에 꼭 필요한 몇 가지 기능이 구현되지 -않을 것이다. 대체로 몇 자 정도의 한글을 넣어야 하는 때에 유용하리라 본다. +\medskip +\begin{exampleside} +\begin{jamotext} +na/ras;mar:ss@/mi; dyuf/guyg;ey; dar/a; +mun/jj@q;oa;ro; se/rv s@/m@s/di; a/ni;h@r/ss@i; -%\begin{figure} -%\centering -%\begin{boxedminipage}{\dimexpr\textwidth-2.5cm\relax} -\begin{exampleonly} -\documentclass{article} -\usepackage{fontspec} -\usepackage[pmfont={Noto Serif KR}]{pmhanguljamo} -\begin{document} -Say `Hello' in Korean, -\jamoword{an/nyex/ha/sey/yo}. -\end{document} -\end{exampleonly} -%\end{boxedminipage} -%\caption{article에서 pmhanguljamo을 쓰는 예}\label{fig:sample} -%\end{figure} +i;ren jyen/c@;ro; e/rin; 百b@ig;姓syef;i; +ni/rv/go;jye; horx; bai; i/sye;do; +\end{jamotext} +\end{exampleside} -\bigskip +\leavevmode\marginpar{\footnotesize\fbox{v0.5}}% +\env{jamotext} 환경 내에 긴 문장을 쓰다가 보면 잠시 jamo 입력이 +아닌 아스키 입력 상태로 escape하여야 할 때가 있다. 이를 위하여 +\begin{verbatim} + !{<ascii stuffs>} +\end{verbatim} +와 같은 트릭을 쓸 수 있다. +이 때에 \verb|!{|는 반드시 단어의 첫머리여야 하므로 한 단어 안에서 +두 번 이상 쓸 수 없다. 문단 구분을 위한 빈 줄도 올 수 없다. -\pkg{polyglossia}와 함께 사용하는 것도 잘 된다. -%\footnote{\pkg{polyglossia}는 \XeLaTeX 에서만 사용 가능하다.} -다음은 이 경우의 한 설정 방법이다. -(이 보기에서는 한국어를 other language로 설정하고 있는데 만약 main language로 설정한다면 -\env{korean} 환경 안이 아니라도 한글 폰트가 적용된다.) -\pkg{polyglossia}를 사용하여 \env{korean} 환경에서 -쓰게 되면 한국어 조판에 필요한 상당한 지원이 이루어진다. +이 아스키 에스케이프 트릭은 \env{jamotext} 환경 내에서만 쓸 수 있고 +\cmda{\jamoword}의 인자 범위에서는 쓸 수 없다. -\pkg{polyglossia}에서 한국어 설정을 행한 경우에는 \cmda{\hangulfont}로 -한글 식자를 행하므로 별도로 \texttt{pmfont}를 설정하지 않아도 된다. -\cmda{\hangulfont}를 지정할 때에 \texttt{[Script=Hangul]}을 빼먹지 않도록 한다. -그러나 한국어가 mainlanguage라면 \texttt{pmfont}를 이용하여 -자모 식자를 하도록 강제할 수 있다. +\medskip +\begin{exampleside} +\begin{jamotext} +in/gan/i pog/jeq/goa eg/ab/ei +!{tyranny and oppression} +dai/haq/ha/nvn ma/ji/mag su/dan/v/ro/se +!{as a last resort} +ban/ran/vr ir/v/ki/do/rog gaq/yo/bad/ji +anh/v/rye/myen +\end{jamotext} +\end{exampleside} -\begin{exampleonly} -\documentclass{article} -\usepackage{polyglossia} -\setmainlanguage{english} -\setotherlanguage{korean} -\newfontfamily\hangulfont{HCR BAtang LVT}[Script=Hangul] -\usepackage{pmhanguljamo} +이를 이용하여 약간의 수식도 \env{jamotext} 안에 둘 수 있다. -\begin{document} -\begin{korean} -\jamoword{han/gug/e/rvr han/gvr/ro} -\end{korean} -\end{document} -\end{exampleonly} +\medskip +\begin{exampleside} +\begin{jamotext} +2/ca/baq/jeq/sig/vi gvn/vi goq/sig/, +!{\[ x = \frac{-b\pm\sqrt{b^2-4ac}}{2a} \]} +vr yu/do/ha/ye bo/ja/. +\end{jamotext} +\end{exampleside} + +아스키 에스케이프 트릭은 \texttt{method=frkim}이나 \texttt{method=rrk}에서는 +쓸 수 없다. -만약에 \env{korean} 환경이 시작되면 그 안에서는 (무조건) pm 자모 입력 모드가 되도록 하려면 -다음 코드를 preamble에 두면 된다. +\section{\texttt{\bs jmcc} 명령} \begin{boxedverbatim} -\usepackage{etoolbox} -\apptocmd\korean{\begin{jamotext}}{}{} -\pretocmd\endkorean{\end{jamotext}}{}{} +\jmcc{<single jamo>} \end{boxedverbatim} -이제 다음과 같이 간단히 입력할 수 있다. +음절이 아니라 한 개의 자모만을 표시할 목적으로 \href{https://en.wikipedia.org/wiki/Hangul_Compatibility_Jamo}{한글 호환 자모}를 식자하려 할 때 사용하는 명령이다. +이 패키지의 기본 명령인 \cmda{\jamoword}로도 호환 자모를 식자할 수 있기 때문에 일반적으로 +이 명령을 사용할 필요가 없으나, rrk 입력 방식으로 문서를 작성할 때라든지 오로지 호환 자모만을 +표기해야 할 필요가 있다든지 등 부득이한 경우가 있을 수 있다. +호환 자모를 \cmda{\jamoword} 명령의 인자 안에서 쓰는 방법은 \ref{sec:compjamo}절을 보라. +인자로 단 하나의 자모만이 와야 한다. 이 명령은 \texttt{method=rrk}일 때도 쓸 수는 있지만 +호환 자모를 가리키는 알파벳 부호는 pm 방식의 것만을 지원한다. \texttt{method=frkim}일 때에는 +별도의 호환 자모 식자 방법을 제공하고 있다. -\begin{verbatim} -\begin{korean} -na/ras/mar/ss@/mi -\end{korean} -\end{verbatim} +쌍아래아는 유니코드 호환 자모에는 정의되어 있지 +않으나 편의를 위하여 조판할 수 있도록 해두었다. -%그러나 위의 처방은 이 환경 안의 모든 로마자가 한글이라는 확신이 있을 때만 적용해야 할 것이다. -%\env{korean} 환경 안에서 로마자를 입력해야 할 일이 있을지 모르기 때문이다. +\medskip +\begin{exampleside} +\jmcc{BSG} \jmcc{@} \jmcc{UEY} \jmcc{@@} +\end{exampleside} -\subsection{훈민정음 어제 서문} +\section{밑줄 긋기} -훈민정음 어제 서문을 입력한 예를 보여두겠다. 이 예문은 ``\href{http://wiki.ktug.org/wiki/wiki.php/%ED%9B%88%EB%AF%BC%EC%A0%95%EC%9D%8C%EC%96%B8%ED%95%B4}{정본 훈민정음 언해 전자문서화 프로젝트}''의 결과물을 바탕으로 하였다. +\leavevmode\marginpar{\fbox{\footnotesize v0.5.1}}% +밑줄을 긋는 명령 \cmda{\underline}의 인자로 \cs{jamoword}가 오는 것은 문제가 없다. + +\begin{exampleside} +\underline{\jamoword{mit/jur/gvs/gi}} +\end{exampleside} + +그러나 이 명령은 행자르기가 이루어지지 않는다. \textsf{ulem} 패키지의 \cs{uline}을 +쓰면 이 문제를 해결할 수 있으나, +이 패키지의 현재 버전(1.0)은 \textsf{ulem} 패키지와 충돌이 있다. \XeLaTeX 으로 +\koTeX 패키지를 활용하는 상황에서 \textsf{ulem}은 오류를 보이거나 의도하지 않은 결과를 +산출할 것이다. (RRK 입력 방법에서도 동일하다.) + +Lua\LaTeX, 즉 \textsf{luatexko}를 이용하는 경우에는 \textsf{ulem} 없이도 ulem 명령들, +\verb|\uline| 등을 사용할 수 있으며 이 경우에는 에러 없이 잘 동작한다. 그러므로 +\cs{uline}과 같은 ulem 명령을 사용하여야 한다면 Lua\LaTeX 으로 컴파일하는 것이 좋다. + +그러나 부득이하여 \XeLaTeX 으로 컴파일하여야 하는 경우이고 밑줄 등을 구현하여야 하는 때라면 +\cmda{\jamoul} 명령을 이용할 수 있다. 물론 \textsf{ulem} 패키지 등은 preamble에서 +선언되어 있어야 한다.\footnote{Lua\LaTeX 과 \koTeX 을 쓸 때는 \textsf{ulem} 패키지를 +별도로 로드하지 않는다.} \begin{boxedverbatim} -\begin{jamotext} - 世syeix;宗joq/御qex;製jyeix; - 訓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: jei 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;mur;ye/dvrb; 字jj@x;r@r; m@iq/g@;no/ni; - sa:ram/ma:da; h@i:xxye; su:bxi; ni/gye; nar;ro; bsu;mei; - 便bbyen/安fan/kvi; h@/go;jye; h@rf sd@/r@/mi;ni/ra; -\end{jamotext} + \jamoul{<ulem command name>}{jamo text} \end{boxedverbatim} -\begin{quote} +\texttt{<ulem command name>}은 ulem 명령의 이름을 백슬래시 없이 지정한다는 뜻이다. +다음 예를 보라. + +\ifxetex +\begin{exampleside} +\jamoword{go/ji nuns/mv/rvr sbv/ri/gey/ko} +\jamoul{uline}{ye/hvi/ye/syu/mvr svr/ho/ni sai} +\jamoul{uwave}{m@/@/m@r} +\jamoword{nor/rai/no/ra} +\end{exampleside} +\else\ifluatex +\begin{exampleside} +\jamoword{go/ji nuns/mv/rvr sbv/ri/gey/ko} +\uline{\jamoword{ye/hvi/ye/syu/mvr svr/ho/ni sai}} +\uwave{\jamoword{m@/@/m@r}} +\jamoword{nor/rai/no/ra} +\end{exampleside} +\fi\fi +%\textsf{oblivoir-misc}의 \cmda{\texthl}도 같은 방법으로 할 수 있다: +%\verb|\jamoul{texthl}{nuns/mvr/r@r sbv/ri/gey/ko}| +%\jamoul{texthl}{nuns/mvr/r@r sbv/ri/gey/ko} + +\cs{jamoul}을 이용하여 밑줄을 긋는 기능은 RRK 입력방법과 \texttt{frkim}에서는 구현되지 않았다. +이 때에는 \textsf{luatexko}의 ulem 명령을 사용하여야 할 것이다. + +\section{문장 부호, 한자와 음절 한글} + +\cmda{\jamoword} 명령과 \env{jamotext} 환경 안에 오는 인자는 다음과 같은 문자에 대하여 예약이 되어 있다. +\begin{itemize}\firmlist +\item 알파벳 문자 --- 한글 자모 문자에 대응한다. +\item \texttt{;}, \texttt{:}, \texttt{/} --- 이 세 개의 부호는 성조표지, 음절완성을 표시하기 위하여 예약되어 있다. +\item \texttt{|} --- 이 한 개의 부호문자는 내부적으로 사용하도록 예약되어 있다. +\end{itemize} +이를 제외한 문자는 입력한 대로 찍힌다. 즉 한글 완성형 음절 문자나 한자 및 숫자와 문장부호가 모두 그대로 출력된다. 예: \verb|\jamoword{``/u/ri/na/ra/"}| \jamoword{``/u/ri/na/ra/''}.\footnote{% + 여기서 \texttt{`}\texttt{`} 입력이 여는 따옴표로 나오는 이유는 \texttt{pmfont}로 + 지정하는 폰트에 기본적으로 \texttt{Ligatures=TeX} feature 옵션이 주어지기 때문이다. + \texttt{pmfont} 옵션에 의하지 않고 별도로 폰트를 설정할 때 이 점을 알아두어야 한다.} +모든 문장 부호는 모두 음절 분리 부호에 의하여 분리되어 있어야 한다는 점에 주의하라. + +콜론, 세미콜론, 슬래시는 각각 \cmda{\ColonMark}, \cmda{\SemiColonMark}, \cmda{\SlashMark} 명령을 사용할 수 있게 해두었다. 이밖에 \cmda{\CntrdotMark}는 가운뎃점을 식자한다. + +매크로를 쓸 수 없는 것이 원칙이기는 하나, +protect된 단일 매크로는 그대로 출력된다. 그러나 인자를 취하는 매크로는 오류가 발생할 것이므로 +인자 범위 밖에 두도록 하라. + +\begin{exampleside} +\jamoword{15 세기 표기\ColonMark{} 國之語音, 우리나라의 말이 +$\Rightarrow$ na/ras/mar/ss@/mi} +\end{exampleside} + + +%RRK 입력 방식이 활성화되면 매크로 사용은 더욱 제한된다. \cmda{\ColonMark}와 같은 임시 명령도 동작하지 않는다. + +\medskip + +음절문자뿐 아니라 자모 한글의 입력도 그대로 출력된다. 어디선가 옛한글% +\footnote{1933년 이전 표기법의 한글을 가리킨다. +유니코드의 한글 음절 문자 영역에서 표현되지 않는 한글을 통칭하는 것이나 +현대 한국어 중에서 제주어를 기록할 때도 쓰이고, 워드 프로세서 \jamoword{h@n/gvr}의 +이름을 적을 때도 쓰이기 때문에 그리 `옛' 것은 아니다. +이 글에서는 관행을 따라 옛한글이라고 부르기로 한다.} +텍스트를 복사해와서 넣을 때 유용할지도. +다음 예에서 이 패키지의 입력 방식과 첫가끝 입력이 혼용되어 있는 것을 볼 수 있다. + +\medskip +\begin{exampleside} +\jamoword{b@/r@/mi sb@/r@/mye ha/n@r/hi 놉고 나ᄇᆡ 됫ᄑᆞ라미 슬프니} +\end{exampleside} + +\env{jamotext} 환경 안에서 강제 개행 명령(\verb|\\|)을 쓸 때 주의할 점이 있다. +예를 들어 다음과 같은 입력 +\begin{verbatim} + na/ras/mar/ss@/mi\\ + 中dyuf/國guig/ei dar/a +\end{verbatim} +여기서 `\verb|mi\\|' 부분은 음절로서 완성되지 않는다. 왜냐하면 +슬래시(\verb|/|)를 생략할 수 있는 것은 space 직전이어야 하기 때문이다. +그러므로 +\begin{verbatim} + na/ras/mar/ss@/mi \\ + 中dyuf/國guig/ei dar/a +\end{verbatim} +이와 같이 space를 하나 두거나 +\begin{verbatim} + na/ras/mar/ss@/mi/\\ + 中dyuf/國guig/ei dar/a +\end{verbatim} +슬래시(성조표지)를 생략하지 않아야 한다. +% 대체로 스페이스를 하나 두는 쪽이 안전하다. +%%% +%%%\subsection{활용} +%%% +%%%특정 언어 패키지나 입력기의 제약 없이 한글 글꼴을 지정하는 것만으로 +%%%현대 한글과 옛한글을 모두 표현할 수 있다는 것이 \pkg{pmhanguljamo}의 장점이다. +%%% +%%%\koTeX\ 패키지와 함께 쓸 때와 그렇지 않을 때를 나누어서 간단히 사용법을 보이겠다. +%%% +%%%\subsubsection{\koTeX\ 문서} +%%%만약 \koTeX\ (\pkg{xetexko} 또는 \pkg{luatexko})과 함께 사용하는 경우라면 본문 한글 글꼴을 +%%%다음과 같이 지정한다. +%%% +%%% +%%%\begin{boxedverbatim} +%%% \setmainhangulfont{Noto Serif KR}[Script=Hangul] +%%%\end{boxedverbatim} +%%% +%%%또는 \texttt{pmfont} 옵션을 지정한다. 본문과 다른 폰트를 쓰게 하려 할 때에도 +%%%이와 같이 한다. \texttt{pmfont} 옵션으로 지정되는 글꼴에는 \texttt{Script=Hangul}이 +%%%자동으로 설정되므로 폰트 이름(또는 폰트 파일 이름)만을 주면 된다. +%%% +%%%\begin{boxedverbatim} +%%% \usepackage[pmfont={HCR Batang LVT}]{pmhanguljamo} +%%%\end{boxedverbatim} +%%% +%%%\ref{sec:summary}절에서 보인 샘플을 참고하라. +%%% +%%%\subsubsection{\koTeX 이 아닐 때} +%%% +%%%\koTeX\ 문서가 아닐 때는 \pkg{fontspec} 패키지를 이용한다. main font를 위의 글꼴 중의 하나로 하거나(이 때에도 \texttt{[Script=Hangul]} 옵션을 반드시 지정하여야 한다.), +%%%\cmda{\newfontfamily}로 글꼴 명령을 만들어 쓰거나, +%%%아니면 %한글이 필요한 부분에만 \cmda{\fontspec}으로 글꼴을 지정해주는 것으로 될 것이다. +%%%%\fref{fig:sample}\는 \pkg{article} 문서의 한 예이다. +%%%\texttt{pmfont} 옵션으로 글꼴을 지정하면 될 것이다. +%%%다음은 \pkg{article} 문서의 한 예이다.\footnote{폰트에 부여하는 +%%%옵션에 관하여 각주~\ref{fn:fontoption}\을 볼 것.} +%%%다만 이와 같이 한글 지원 패키지가 전혀 없는 상태에서는 글자 사이의 행나눔이나 양끝맞추기 등 한글 문장 식자에 꼭 필요한 몇 가지 기능이 구현되지 +%%%않을 것이다. 대체로 몇 자 정도의 한글을 넣어야 하는 때에 유용하리라 본다. +%%% +%%%%\begin{figure} +%%%%\centering +%%%%\begin{boxedminipage}{\dimexpr\textwidth-2.5cm\relax} +%%%\begin{exampleonly} +%%%\documentclass{article} +%%%\usepackage{fontspec} +%%%\usepackage[pmfont={Noto Serif KR}]{pmhanguljamo} +%%%\begin{document} +%%%Say `Hello' in Korean, +%%%\jamoword{an/nyex/ha/sey/yo}. +%%%\end{document} +%%%\end{exampleonly} +%%%%\end{boxedminipage} +%%%%\caption{article에서 pmhanguljamo을 쓰는 예}\label{fig:sample} +%%%%\end{figure} +%%% +%%%\bigskip +%%% +%%%\pkg{polyglossia}와 함께 사용하는 것도 잘 된다. +%%%%\footnote{\pkg{polyglossia}는 \XeLaTeX 에서만 사용 가능하다.} +%%%다음은 이 경우의 한 설정 방법이다. +%%%(이 보기에서는 한국어를 other language로 설정하고 있는데 만약 main language로 설정한다면 +%%%\env{korean} 환경 안이 아니라도 한글 폰트가 적용된다.) +%%%\pkg{polyglossia}를 사용하여 \env{korean} 환경에서 +%%%쓰게 되면 한국어 조판에 필요한 상당한 지원이 이루어진다. +%%% +%%%\pkg{polyglossia}에서 한국어 설정을 행한 경우에는 \cmda{\hangulfont}로 +%%%한글 식자를 행하므로 별도로 \texttt{pmfont}를 설정하지 않아도 된다. +%%%\cmda{\hangulfont}를 지정할 때에 \texttt{[Script=Hangul]}을 빼먹지 않도록 한다. +%%%그러나 한국어가 mainlanguage라면 \texttt{pmfont}를 이용하여 +%%%자모 식자를 하도록 강제할 수 있다. +%%% +%%% +%%%만약에 \env{korean} 환경이 시작되면 그 안에서는 (무조건) pm 자모 입력 모드가 되도록 하려면 +%%%다음 코드를 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} 환경 안에서 로마자를 입력해야 할 일이 있을지 모르기 때문이다. + +\section{활용 예문} + +\subsection{훈민정음 어제 서문} + +훈민정음 어제 서문을 입력한 예를 보여두겠다. 이 예문은 ``\href{http://wiki.ktug.org/wiki/wiki.php/%ED%9B%88%EB%AF%BC%EC%A0%95%EC%9D%8C%EC%96%B8%ED%95%B4}{정본 훈민정음 언해 전자문서화 프로젝트}''의 결과물을 바탕으로 하였다. + +\begin{examplebelow} \begin{jamotext} - 世syeix;宗joq/御qex;製jyeix; - 訓hun;民min/正jyeq;音fvm + 世syeiq;宗jof/御feq;製jyeiq; + 訓hun;民min/正jyef;音xvm 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: jei 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;mur;ye/dvrb; 字jj@x;r@r; m@iq/g@;no/ni; - sa:ram/ma:da; h@i:xxye; su:bxi; ni/gye; nar;ro; bsu;mei; - 便bbyen/安fan/kvi; h@/go;jye; h@rf sd@/r@/mi;ni/ra; + 中dyuf/國guig;ei; dar/a; + 文mun/字jj@q;oa;ro; se/rv/ s@/m@s/di; a/ni;h@r/ss@i; + i;ren jyen/c@;ro; e/rin; 百b@ig;姓syef;i; + ni/rv/go;jye; horx; bai; i/sye;do; + m@/c@m;nai: jei bdv;dvr; si/re; pye/di; mod:h@rx no;mi; ha/ni;ra; + + nai; i;r@r; 爲uiq;h@;ya; e:yes/bi; ne/gye; + sai;ro; sv;mur;ye/dvrb; 字jj@q;r@r; m@if/g@;no/ni; + sa:ram/ma:da; h@i:qqye; su:bqi; ni/gye; nar;ro; bsu;mei; + 便bbyen/安xan/kvi; h@/go;jye; h@rx sd@/r@/mi;ni/ra; \end{jamotext} -\end{quote} +\end{examplebelow} + +%\begin{quote} +%\begin{jamotext} +% 世syeix;宗joq/御qex;製jyeix; +% 訓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: jei 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;mur;ye/dvrb; 字jj@x;r@r; m@iq/g@;no/ni; +% sa:ram/ma:da; h@i:xxye; su:bxi; ni/gye; nar;ro; bsu;mei; +% 便bbyen/安fan/kvi; h@/go;jye; h@rf sd@/r@/mi;ni/ra; +%\end{jamotext} +%\end{quote} + +\subsection{\bnm{문장강화} 예문} + +\begin{examplebelow} +\jamoword{sai/mar/vr man/dvr/go sai/mar/vr ssv/nvn/ges/vn yu/haiq/i +a/ni/ra yu/haiq/i/saq em/sug/ha/gei saiq/hoar/ei pir/yo/ha/ni/gga +na/ta/na/nvn sa/sir/im/vr i/hai/hai/ya har/ges/i/da/. +ke/qpi/\textemdash/rvr meg/nvn saiq/hoar/bu/te/ga saiq/gi/go} +\dotemph{\jamoword{pe/me/nein/tv}}\jamoword{sig/v/ro +me/ri/rvr ji/ji/nvn saiq/hoar/bu/te/ga saiq/gi/ni/gga ge/gi/ei +jeg/vq/han mar jvg} \snm{\dotemph{\jamoword{ke/qpi/\textemdash}}} +\snm{\dotemph{\jamoword{pe/me/nein/tv}}}\jamoword{ga +saiq/gi/nvn/ges/i/da/.} +\end{examplebelow} + +이 예시의 \cs{snm}은 \pkg{oblivoir} 명령이고 \cs{dotemph}는 \koTeX\ 명령이다. + + +\chapter{method=rrk}\label{chap:rrk} \section{표준 로마자 표기법 전자법 입력}\label{sec:rrk} @@ -890,32 +1134,39 @@ RRK는 이 문서의 영어 명칭인 \emph{Revised Romanization of Korean}의 전자법 입력은 오직 현대어에만 적용된다. 따라서 옛한글은 이 방법으로 입력할 수 없다. (아래아 입력을 가능하게 한 것은 아래를 참조.) -\subsection{RRK 전자 규칙} +\section{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} +\ttfamily +\begin{tblr}{ + colspec={llllllll}, + hline{1,2,Y,Z}={azure3}, + vline{3,5,7}={azure3}, +} +\SetCell[c=8]{c}{자음}\\ +ㄱ & g & ㄲ & kk & ㅋ & k & ㄷ & d \\ +ㄸ & tt & ㅌ & t & ㅂ & b & ㅃ & pp \\ +ㅍ & p & ㅈ & j & ㅉ & jj & ㅊ & ch \\ +ㅅ & s & ㅆ & ss & ㅎ & h & & \\ +ㄴ & n & ㅁ & m & ㅇ & ng & ㄹ & l \\ +\SetCell[c=8]{c}{\phantom{a}} +\end{tblr}\hfil +\begin{tblr}{ + colspec={llllllll}, + hline{1,2,Z}={azure3}, + vline{3,5,7}={azure3} +} +\SetCell[c=8]{c}{모음} \\ +ㅏ & a & ㅓ & eo & ㅗ & o & ㅜ & u \\ +ㅡ & eu & ㅣ & i & ㅐ & ae & ㅔ & e \\ +ㅚ & oe & ㅟ & wi & & & & \\ +ㅑ & ya & ㅕ & yeo & ㅛ & yo & ㅠ & yu \\ +ㅒ & yae & ㅖ & ye & ㅘ & wa & ㅙ & wae \\ +ㅝ & wo & ㅞ & we & ㅢ & ui & & \\ +\end{tblr} \end{table} -\begin{table}[h] -\centering -\begin{tabular}{ll|ll|ll|ll|ll|ll} -\hline -\multicolumn{12}{l}{모음} \\ \hline -ㅏ & a & ㅓ & eo & ㅗ & o & ㅜ & u & ㅡ & eu & ㅣ & i\\ -ㅐ & ae & ㅔ & e & ㅚ & oe & ㅟ & wi & & & & \\ \hline -ㅑ & ya & ㅕ & yeo & ㅛ & yo & ㅠ & yu & ㅒ & yae & ㅖ & ye \\ -ㅘ & wa & ㅙ & wae & ㅝ & wo & ㅞ & we & ㅢ & ui & & \\ \hline - \end{tabular} - \end{table} - \begin{enumerate}[(1)] \firmlist \item 단어의 첫소리 `ㅇ'은 적지 않는다. 그밖의 초성 이응은 \verb|-|로 적는다. \\ @@ -940,8 +1191,9 @@ RRK는 이 문서의 영어 명칭인 \emph{Revised Romanization of Korean}의 \texttt{;}, \texttt{:} 이 여섯 개에 한하여 인자 범위 안에서 입력할 수 있다. 다른 것은 오지 못한다. 특히 줄표(\texttt{-})는 인자 범위 안에 넣으면 안 된다.\\ \verb|\jamoword{swimpyo, machimpyo. a! geulae? olhda.}| \jamoword{swimpyo, machimpyo. a! geulae? olhda.} \\ -따옴표의 경우, \LaTeX\ 따옴표는 인자 범위 밖에 두어야 한다. 그런데 소위 “스마트 따옴표”를 이용하여 유니코드 따옴표를 입력한다면 음절 분리 부호를 이용하여 다음과 같이 할 수 있다. \\ -\verb|\jamoword{“/ulinala/”}| \jamoword{“/ulinala/”} \\ +따옴표는 분리부호를 두면 된다. \verb|\jamoword{``/ulinala/''}| \jamoword{``/ulinala/''}. +%그런데 소위 “스마트 따옴표”를 이용하여 유니코드 따옴표를 입력한다면 음절 분리 부호를 이용하여 다음과 같이 할 수 있다. \\ +%\verb|\jamoword{“/ulinala/”}| \jamoword{“/ulinala/”} \\ 이 때의 음절 분리 부호는 하이픈 부호로 대치할 수 없다. \item 현대어만 입력할 수 있는 것이 원칙이지만 이 패키지는 편의를 위해 아래아(와 쌍아래아)를 식자할 수 있게 하였다. @@ -956,7 +1208,7 @@ RRK는 이 문서의 영어 명칭인 \emph{Revised Romanization of Korean}의 \verb|\jamoword{ri-eul li-eul}|. \jamoword{ri-eul li-eul}. \end{enumerate} -\subsection{현대문 RRK 입력 예제} +\section{현대문 RRK 입력 예제} \begin{boxedverbatim} \begin{verse} @@ -978,16 +1230,16 @@ ijeneun hollo nam-a ttatteus-i gidalili. \end{jamotext} \end{verse} -비교를 위하여 이 패키지의 고유한 pm 입력 방식으로 제시해보면 다음과 같다. - -\begin{verbatim} -nai sa/rax/ha/ri si/uer/vi gax/mur/vr \\ -seg/yax/i jit/e/ga/nvn pu/rvn mo/rai/tob \\ -ji/nan nar ga/jyess/den svr/pvn ye/jex/dvr/vr/, a/dvg/han gi/dai/rvr \\ -i/jey/nvn hor/ro nam/a dda/ddvs/i gi/da/ri/ri/. -\end{verbatim} +%비교를 위하여 이 패키지의 고유한 pm 입력 방식으로 제시해보면 다음과 같다. +% +%\begin{verbatim} +%nai sa/rax/ha/ri si/uer/vi gax/mur/vr \\ +%seg/yax/i jit/e/ga/nvn pu/rvn mo/rai/tob \\ +%ji/nan nar ga/jyess/den svr/pvn ye/jex/dvr/vr/, a/dvg/han gi/dai/rvr \\ +%i/jey/nvn hor/ro nam/a dda/ddvs/i gi/da/ri/ri/. +%\end{verbatim} -\subsection{RRK 입력으로 20세기 초반 문헌 조판} +\section{RRK 입력으로 20세기 초반 문헌 조판} 원칙적으로 RRK 입력은 현대 한글 문자, 즉 1933년 이후 표기법만을 지원하지만 1933년의 `한글마춤법통일안'이 제정되기 직전 시기의 문헌을 이 입력 방법으로 일부 @@ -1049,16 +1301,351 @@ nog-eumbangcho ugeojyeo geumjandi jwaleuleug sgal-in jye \end{jamotext} \end{quote} -이런 종류의 문헌을 조판하려면 당연히 \ref{sec:font}절에서 설명한 바, +이런 종류의 문헌을 조판하려면 당연히 \ref{chap:fonts}장에서 설명한 바, 옛한글을 지원하는 글꼴이어야 한다. -\section{제주어} -현대 제주어를 식자하려면 아래아(\jmcc{W})가 필요하다. 이 패키지를 +\chapter{method=frkim}\label{chap:frkim} + +\ExplSyntaxOn +\cs_undefine:N \l_inputword_seq +\cs_undefine:N \l_inputpar_seq +\cs_undefine:N \jamotext +\cs_undefine:N \endjamotext +\cs_undefine:N \jamo_word:nn +\cs_set_eq:NN \frkhangulfont \opt_pmfont_tl +\cs_set_eq:NN \frkhangulfontfeature \opt_pmfontfeature_tl +\input{pmhanguljamo-frkim.code.tex} +\ExplSyntaxOff + +이 장은 원래 독립적으로 작성하였던 문서였다. + +\section{후쿠이 레이 로마자 전사법과 \pkg{hangul\protect\TeX}} + +\href{https://ja.wikipedia.org/wiki/%E7%A6%8F%E4%BA%95%E7%8E%B2}{\hg{후쿠이 레이(福井玲)}} \hg{교수가 +고안한 한국어(조선어) 로마자 표기법을 ``후쿠이 레이 로마자 전사법\rq\rq 이라 한다.}\footnote{\url{http://www.tufs.ac.jp/ts/personal/choes/korean/middle/Nfukui.html}} +우리나라의 국가 표준인 한국어 로마자 표기법과는 그 목적을 달리하여 학술적 목적에 쓰기 위한 것이다. +한국어의 `음성\rq 이 아니라 `문자 표기\rq 를 +로마자로 나타내는 것이라서 소위 `전자법(轉字法)\rq 과 그 목적이 같다. 한국어 한글 표기의 철자를 축자적으로(\emph{literally}) +로마자 표기하는 것이다. + +이 표기법은 현대 한국어와 중세 한국어 한글 표기를 모두 포괄한다. + +축자적 표기법이기 때문에 이를 한국어 입력의 대응 문자로 쓸 수 있다. 실제로 이를 \TeX 으로 구현한 것이 +후쿠이 레이 교수 자신이 만든 hangul\TeX{} (1993)이라는 것이었다.\footnote{\url{http://www.vector.co.jp/vpack/filearea/dos/writing/tex/koreatex/index.html}. 이 한글 매크로 패키지의 이름은 \jpwrd{ハングル\,TeX}이다. 이를 Korean\TeX 이라고 하기도 했던 모양이나 이 글에서는 `hangul\TeX'이라고 지칭한다. 현재 찾아볼 수 있는 1.2.1 버전은 1994년 4월에 공개되었던 것이며 \LaTeX{} 2.0.9에서 동작했다.} +필자가 이를 \LaTeXe 용으로 수정하여 테스트한 바도 있다.\footnote{frk\TeX 에 대하여는 \url{http://faq.ktug.org/faq/pLaTeX}.} + +\section{사용법} + +\subsection{패키지 활성화와 명령} + +이 패키지는 단독으로 로드할 수 있다. + +\begin{exampleonly} +\usepackage[<options>]{pmhanguljamo-frkim} +\end{exampleonly} + +또는 pmhanguljamo 패키지의 옵션으로 부를 수 있다(\pkg{pmhanguljamo} version 0.6 이상). + +\begin{exampleonly} +\usepackage[method=frkim,<options>]{pmhanguljamo} +\end{exampleonly} + +\verb|<options>| 자리에 올 수 있는 옵션은 다음과 같고, 각 내용은 해당 +절에서 설명한다. +\begin{description} +\item [\ttfamily zeroisx] 초성의 zero 자음을 \verb|x|로 표현하게 하는 것이다. default는 false. +\item [\ttfamily hangulfont] \cs{hg} 명령으로 식자되는 한글 폰트를 지정한다. +\item [\ttfamily hangulfontfeature] 한글 폰트에 주어지는 feature이다. +\item [\ttfamily frcccmds] 호환 자모 식자를 위한 명령을 미리 activate하도록 하는 옵션이다. +\end{description} + +\bigskip + +이 패키지의 핵심 명령은 다음 두 가지이다. +\begin{description} +\item [\cs{hg}] 한글 자모를 알파벳으로 입력하는 명령이다. \cs{jamoword}와 같다. +\item [\cs{hangul}, \cs{endhangul}] 여러 문단에 대하여 \cs{hg}를 실행하는 것과 같다. +\item [\env{jamotext}] 환경 형식으로 쓸 수 있다. +\end{description} + +\cs{hg}와 \cs{hangul}은 \pkg{hangul\TeX} 호환 명령이다. 예전 \pkg{hangul\TeX} 또는 +\pkg{frktex}으로 입력된 텍스트를 수정없이 식자하기 위하여 작성된 것으로서, 다른 입력 방식에서는 +제공하지 않는다. 한편, \cs{jamoword}와 \env{jamotext}는 \texttt{method=frkim}에서도 +동작한다. + +\pkg{pmhanguljamo}의 기본 입력 방식인 \texttt{method=pm}에 비하여, 아스키 에스케이프 트릭이 없으며 \XeLaTeX 에서의 밑줄 긋기가 원활하지 않다\footnote{밑줄이 반드시 필요하면 \LuaLaTeX 으로 컴파일하라.}는 차이가 있다. + +\bigskip + +다음 명령들은 편의를 위하여 제공하는 부수 명령들이며, 각각 해당 절에서 설명한다. +\begin{description} +\item [\cs{frcc}] 한글 호환 자모 한 개를 식자하는 명령이다. 인자로는 한글 자모를 나타내는 기호가 온다. 이 명령은 \cs{hg} 명령의 인자 안에서 쓰이면 안 되고 반드시 \cs{hg}의 인자 범위 밖에 놓여야 한다. +\item [\cs{rq}] right quote를 인쇄하는 명령이다. \cs{hg} 인자 내부에 닫는 따옴표를 쓸 필요가 있으면 이 매크로를 사용한다. +\item [\cs{zeroisx}, \cs{zeroisrq}] 초성의 zero 자음을 어떤 부호로 식자할 것인지를 나타낸다. \cs{zeroisrq} 상태가 디폴트이다. +\item [\cs{frdash}, \cs{frendash}, \cs{fremdash}] \verb|-|(dash) 부호를 특별하게 처리하기 때문에 이를 대용하기 위하여 마련한 명령이다. +\item [\cs{frkhangulfont}] 자모 한글을 식자하는 폰트이다. Noto Serif KR 폰트가 디폴트이다. +\item [\cs{frkhangulfontfeature}] \cs{hg} 명령의 인자로 주어지는 한글을 식자하기 위한 \cs{frkhangulfont}에 부여되는 font feature이다. ``{\ttfamily Script=Hangul,Renderer=OpenType,Ligatures=TeX}''이 디폴트로 선언되어 있다. +\end{description} + + +\subsection{한글 입력 체계} + +\begin{table}[h] +\centering\small +\caption{\pkg{hangul\TeX}\hg{'yi hangyr romaja dai'yq giucig}}\label{tab:ktex} +\ttfamily +\begin{tblr}{ + colspec={llllllllll}, + hline{1,Z}={1pt}, + hline{2-Y}={\normalrulethickness}, + vline{3,5,7,9}={\normalrulethickness}, +} +\SetCell[c=10]{c,bg=azure5,fg=white}자음 &&&&&&&&&\\ +ㄱ & g & ㄴ & n & ㄷ & d & ㄹ & r & ㅁ & m \\ +ㅂ & b & ㅅ & s & ㅇ & 'x & ㅇ & q & ㅈ & j \\ +ㅊ & c & ㅋ & k & ㅌ & t & ㅍ & p & ㅎ & h \\ +ㄲ & G & ㄸ & D & ㅃ & B & ㅆ & S & ㅉ & J \\ +ㅸ & v & ㅿ& z & ㆁ & Q & ㆆ & X & & \\ +\SetCell[c=10]{l} &&&&&&&&& \\ +\end{tblr} +\hfil +\begin{tblr}{ + colspec={llllllll}, + hline{1,Z}={1pt}, + hline{2-Y}={\normalrulethickness}, + vline{3,5,7,9}={\normalrulethickness}, +} +\SetCell[c=8]{c,fg=white,bg=azure5}모음 &&&&&&&\\ +ㅏ & a & ㅓ & e & ㅗ & o & ㅜ & u \\ +ㅡ & y & ㅣ & i & ㆍ & @ & ㅑ & ia \\ +ㅕ & ie & ㅛ & io & ㅠ & iu & ㅐ & ai \\ +ㅔ & ei & ㅒ & iai & ㅖ & iei & ㅘ & oa \\ +ㅙ & oai & ㅚ & oi & ㅝ & ue & ㅞ & uei \\ +ㅟ & ui & ㅢ & yi & ㆎ & @i & & \\ +\end{tblr} +\end{table} + +이 패키지는 \tref{tab:ktex}에 보인 \pkg{hangul\TeX}의 입력 방식을 채택하고 있으며, +한글 문자에 해당하는 부분을 \cs{hg} 명령의 인자로 전달하는 것도 같다. +여기에 다음과 같은 몇 가지 부수적인 규칙을 추가하였다. + +\begin{enumerate}[\quad(1)] +\item 초성 위치에 오는 `\texttt{ㅇ}' 즉 zero 자음을 right quote(\texttt{'})로 +표현하는 것이 디폴트이다. 이럴 경우에 right quote 자리에 \cs{rq} 명령을 쓸 수 있다. +만약 right quote를 써야 할 일이 많아서 zero 자음을 \texttt{x}로 대용하고 싶다면 +\cs{zeroisx}를 선언한다. \cs{zeroisrq} 명령으로 이를 되돌릴 수 있다. 이상은 \pkg{hangul\TeX}에서와 동일하다. +\verb|\hg{u'eq}| \hg{u'eq}, \verb|\zeroisx\hg{xuxeq}| \hg{xuxeq}. + +\activatefrcccmds +\item 받침(종성) `\texttt{ㅇ}'은 \texttt{q}로 쓴다. 옛이응(\texttt{\frccQ})은 \texttt{Q}. 초성 자리에 올 때에도 같다. + +\item 단어의 첫머리에 오는 zero 자음은 생략할 수 있다. 즉 \texttt{'annieq}과 \texttt{annieq}은 그 결과가 같다($\implies$\hg{annieq}). 그러나 단어 중간의 초성 \texttt{ㅇ}은 생략할 수 없다. + +\item \pkg{hangul\TeX}에서는 자음이나 모음만을 \cs{hg} 명령으로 표현할 수 있었으나 이 패키지에서는 반드시 모음이 존재하여 음절을 채워야 한다. 그래서 하나의 초성 또는 중성만을 표현하려면 중성 또는 초성을 filler 문자로 채워주어야 하는데, 초성 filler는 \texttt{w}, 중성 filler는 \texttt{*} 문자를 쓴다. (이것은 \pkg{pmhanguljamo}에서와 같다.) \verb|\hg{g*}| $\implies$ \hg{g*}, \verb|\hg{wa}| $\implies$ \hg{wa}. 모음만을 표시하려 할 때 초성 필러를 써야 하는 이유는 모음으로 시작하는 단어에 +zero 자음 \texttt{ㅇ}을 넣는 규칙 때문이다. + +\item \pkg{hangul\TeX}에 비하여 좀더 확장된 옛한글 표현을 지원한다. 옛한글 입력과 관련하여 초성에 복자음이 오는 경우에, 그 복자음은 (단어 첫머리가 아니라면) 반드시 \verb|-|로 그 시작 위치를 밝혀주어야 한다. 단어의 첫머리 자리에서는 이것을 생략할 수 있다. \verb|\hg{gy bsgyi}| $\implies$ \hg{gy bsgyi}, \verb|\hg{gy-bsgyi'iei}| $\implies$ \hg{gy-bsgyi'iei}. 이 대시 부호를 생략하면 다음과 같이 잘못된 결과가 나타난다. \hg{gybsgyi'iei}. + +\item 문장 중에 \verb|-|(dash)를 프린트해야 한다면 \cs{frdash} 명령을 쓴다.\\ \verb|\hg{ga\frdash na\frendash da\fremdash ra}| $\implies$ \hg{ga\frdash na\frendash da\fremdash ra} + +\item 옛한글의 방점(성조점)은 지원하지 않는다. 더 자세한 사항은 \pageref{para:bangjeom} 페이지를 볼 것. + +\item 제주어 표기를 위한 `\hg{w@@}'를 추가하였다. 이 글자는 \verb|@@|로 쓴다. 예: \verb|\hg{@@nam'yn}| $\implies$ \hg{@@nam'yn}. + +\item 숫자, 한자 등 알파벳이 아닌 문자와 인자를 취하지 않는 protected 매크로는 투명하게 전달되고 처리된다. 다만 인자를 취하는 명령은 그렇지 않으므로 주의를 요한다. + +\end{enumerate} + +\section{용례} + +\paragraph{현대 한글} 현대 한글의 입출력 예를 보인다. + +\begin{examplebelow} +\hg{caig'yr hanguen gajigo iS'eSji'io. Gaman pioji'ei + sonbadagmanhan jag'yn caig'iji'io. cesjaq'yr nemgimien + nun'i nairigon haji'io.} + +\hg{baramdo jamdyn supsog, jamdyn hiensasinamudyr tumieqhan + murgoanman Gai'e iS'eSji'io. gajaq kygo uramhan sasinamu + mit'ei daqsin'yn memcu'eSji'io. daqsin'i namuduqci'ei + dyq'yr gidaija biroso nun'i nairigi sijaghaiSji'io. + edi'eidyn dahgiman hamien nog'aberinyn nun. + gyDaiJym haise Gocnun'i Gai'enaSgeiSji'io.} +\end{examplebelow} + +\cs{hangul}을 이용하여 입력한 예. + +\begin{examplebelow} +\hangul +nydas'ebs'i hoiram'i morgo'on pamun'yn 'yi'oiro simgaghan +ges'i'ese goanrigoa samusir'yi 'ohu najer'yr 'oanjenhi +gierDannai noh'aSda. goanrigoa jig'uendyr'i GiriGiri mo'ie +juqgunanbaq'yro Sod'a noh'yn mardyr'yn doro ju'uedam'a +bomien daicuq 'ui'oa gat'yn nai'ioq'i doigeiSnyndei, +murron gy ga'undeinyn mindosig'i Siburiedain burpieqdo +saqdaq bubun'yr cajihago 'iS'eSda. + +mindosig'yn juro 'os'i nargairanyn jenrai'yi sogdam'yr +dyr'e gyren joqriu'yi nargairyr dargonyn seisaq'yr huerhuer +nar'adanir su 'ebs'ym'yr nunu'i gaqjohanyn pien'i'eSda. +gy'yi mar'yn sasaiqhoar'i 'ebs'ejinyn seim'iranyn coqgag +sa'uen 'ugihoan'yi jujaqgoa majbaro toqhaiSda. +\endhangul +\end{examplebelow} + +위의 예문은 \emph{hangulTeX}의 사용설명서에 있던 예문을 그대로 가져온 것이다. +이 패키지의 방식으로는 단어 첫머리의 quote를 다 생략할 수 있으니 조금 더 수고가 줄어든다. + +\paragraph{\cs{rq}의 사용} + +닫는 따옴표는 \cs{rq} 매크로를 써야 한다. \cs{zeroisx}는 기억을 위한 코드일 뿐이고 +내부적으로 사실상 \verb|x|와 \verb|'|를 거의 동일하게 취급하기 때문이다. +그러나 되도록 따옴표와 같은 문장부호는 \cs{jamoword}(=\cs{hg}) 명령 밖에 두는 것이 좋다. + +\begin{examplebelow} +\hg{``'erin'inyn nara'yi bobai'ibnida\rq\rq{} sopa +`baqjeqhoan\rq{} sensaiqnim'i hasin marSym'ida.} +\end{examplebelow} + +\paragraph{19세기--1933년 이전 표기법} +주로 `아래아'와 몇 가지 복자음이 쓰이는 문헌의 예이다. + +\begin{examplebelow} +\hg{nagpo'yi sdar'irnienni bando jinsaq oggieq gasda + goaqhanjien'yisie jiegsoqja masna mijinjieqhoi + h@'orca'yi simanh@mi joiga doi'ia siaqjiei d@irohasa + jintoi'yi n@icisim@i gar ba'yr mornadeni du'iusan + sir'ieqgieisie bu'in-sd@ig'yro jisih@giro oassa'oni + e'iebbi iegisosie} +\end{examplebelow} + +\paragraph{성조점이 있는 옛한글}\label{para:bangjeom} + +\texttt{[method=pm]}에서와 달리 성조점(방점)을 직접 지원하지는 않지만 이를 활용하고자 한다면 다음과 같은 방법이 +가능하다. \verb|:|와 \verb|;| 두 글자의 catcode를 바꾸는 것이므로 텍스트에 이 부호가 +들어 있지 않아야 한다는 점에 주의해야 한다. %이 부호의 사용은 \pkg{pmhanguljamo}에서와 같다. + +\begin{examplebelow} +\catcode`\:=\active \catcode`\;=\active +\def:{\char"302F}\def;{\char"302E} +\hg{naras;mar:S@mi; 中diuQ國guig;'ei; dar'a; + 文mun字J@q;'oa;ro; sery s@m@sdi; ani;h@rS@i; + i;ren jienc@;ro; erin; 百b@ig;姓sieQ;'i nirygo;jie; + horX; bai; isie;do m@c@m;nai: jei bdy;dyr + sire; piedi; mod:h@rX no;mi; hani;ra.} +\end{examplebelow} + +\paragraph{호환 자모를 사용하는 경우} + +호환 자모는 \cs{frcc} 명령으로 식자할 수 있으나 \cs{hg} 인자 범위 밖에 놓여야 한다는 사실을 기억하자. 다음 예를 보라. + +\begin{examplebelow} +\hg{niei 洞庭(doqjeq)}\frcc{s}\ \hg{myryr dyddani},\\ +\hg{on@r 岳陽樓('ag'iaqru)'yi or'ora}. +\end{examplebelow} + +또는, \cs{hg} 명령의 인자 안에 ``인자를 취하지 않는 단독 매크로''가 오는 것은 문제없음을 이용하여, 자주쓰는 몇 가지 호환 자모를 미리 하나의 매크로로 정의하여 쓰는 방법도 있다. +\cs{activatefrcccmds}를 선언하면 이런 종류의 매크로를 한꺼번에 만들어준다. +패키지 옵션으로 \verb|[frcccmds]|를 부여하면 문서의 처음부터 \cs{activatefrcccmds} 상태가 된다. + +\begin{examplebelow} +\activatefrcccmds +\hg{m@iQj@\frcci\ g@r'@siad@i}\\ +\hg{\frccg n@n emSorini}\\ +\hg{g*n@n emSorini} +\end{examplebelow} + +위의 마지막 예는 호환 자모를 쓰지 않고 낱자를 나타낸 것이다. 대체로 이것으로 된다고 생각하기 때문에 \cs{activatefrcccmds}를 +디폴트로 활성화시켜 두지 않은 것이다. + +\section{폰트} + +\paragraph{\pkg{pmhanguljamo}에서 옵션으로 부르는 경우} +\texttt{[pmfont]}로 설정한 폰트가 \cs{frkhangulfont}가 된다. + +\paragraph{단독 패키지로 로드한 경우} + +다른 글꼴로 식자하려 한다면 +패키지 옵션으로 \verb|[hangulfont=<fontname>]|\allowbreak 을 부여한다. + +\paragraph{문서 중에서} + +\cs{setpmhangulfont}를 이용하면 폰트와 폰트 속성을 모두 바꿀 수 있다. +(단독 패키지를 로드하였다면 간단히 \cs{frkhangulfont} 매크로를 재정의하여도 된다.) + +\begin{examplebelow} +\setpmhangulfont{HCR Dotum LVT}[Color=azure3,FakeStretch=0.7] +\hg{g@r@mi p@r@ni sai de'ug h@i'o / + moihi pereh@ni gosbici byrbydn@n d@sdoda / + orsbomi bond@in sdo dinagan@ni / + eny nari i doragar h@i'o} +\end{examplebelow} + + +\chapter{입력 방법 요약} + +세 가지 입력 방법은 서로 비슷한 듯하지만 조금씩 다르다. 조견표를 작성해둔다. + +\section*{자음} + +\def\AST{\textsuperscript{*}} +\def\DAG{\textsuperscript{$\dag$}} + +\activatefrcccmds +\begin{tblr}{ + colspec={llllllllllll}, + hline{1,2,Y}={\normalrulethickness}, + vline{5,9}={1pt}, + vline{2,6,10}={dotted}, + row{odd}={azure8}, +} +\SetRow{fg=white,bg=azure2,font=\bfseries} +자모 & pm & rrk & frkim & 자모 & pm & rrk & frkim & 자모 & pm & rrk & frkim \\ +ㄱ & g & g & g & ㄲ & gg & kk & G & ㄴ & n & n & n \\ +ㄷ & d & d & d & ㄸ & dd & tt & D & ㄹ & r & l\AST & r \\ +ㅁ & m & m & m & ㅂ & b & b & b & ㅃ & bb & pp & B \\ +ㅅ & s & s & s & ㅆ & ss & ss & S & ㅇ(초) & (q)\DAG & -\DAG & '\DAG \\ +ㅇ(종) & q & ng & q & ㅈ & j & j & j & ㅉ & jj & jj & J \\ +ㅊ & c & ch & c & ㅋ & k & k & k & ㅌ & t & t & t \\ +ㅍ & p & p & p & ㅎ & h & h & h & \frccQ & f & & Q \\ +\frccz & z & & z & \frccX & x & & X & \frccv & bq & & v \\ +\SetCell[c=12]{l}{\small\AST\ 초성 자리에서 l 대신 r을 쓸 수 있음\quad +\DAG\ 어두에 생략 가능} &&&&&&&&&&& \\ +\end{tblr} + +\section*{모음} + +\begin{tblr}{ + colspec={llllllllllll}, + hline{1,2,Y}={\normalrulethickness}, + vline{5,9}={1pt}, + vline{2,6,10}={dotted}, + row{odd}={azure8}, +} +\SetRow{fg=white,bg=azure2,font=\bfseries} +자모 & pm & rrk & frkim & 자모 & pm & rrk & frkim & 자모 & pm & rrk & frkim \\ +ㅏ & a & a & a & ㅐ & ay\AST & ae & ai & ㅑ & ya & ya & ia \\ +ㅒ & yay\AST & yae & iai & ㅓ & e & eo & e & ㅔ & ey\AST & e & ei \\ +ㅕ & ye & yeo & ie & ㅖ & yey\AST & ye & iei & ㅗ & o & o & o \\ +ㅘ & oa & wa & oa & ㅙ & oay\AST & wae & oai & ㅚ & oy\AST & oe & oi \\ +ㅛ & yo & yo & io & ㅜ & u & u & u & ㅝ & ue & wo & ue \\ +ㅞ & uey\AST & we & uei & ㅟ & uy\AST & wi & ui & ㅠ & yu & yu & iu \\ +ㅡ & v & eu & y & ㅢ & vy\AST & ui & yi & ㅣ & i & i & i \\ +\jmcc{AA} & @ & @\DAG & @ & \jmcc{AAI} & @i & @i\DAG & @i & \jmcc{AAA} & @@ & @@\DAG & @@ \\ +\SetCell[c=12]{l}{\small \AST\ 말미의 y는 i로 대신할 수 있음(ay=ai, ey=ei, \ldots) \\ +\DAG\ 국가 표준 로마자 표기법에는 없음} & &&&&&&&&&& \\ +\end{tblr} + + + +\chapter{제주어} + +현대 제주어를 표기하려면 아래아(\jmcc{W})가 필요하다. 이 패키지를 이용하여 제주어를 식자하는 예를 보이겠다. \begin{boxedverbatim} -\jamoword{bu/jeis/jib/i/nan jox/nvm/der h@n x@@/nam/vn d@r/ax sar/gog/.} +\jamoword{bu/jeis/jib/i/nan joq/nvm/der h@n @@/nam/vn d@r/aq sar/gog/.} \end{boxedverbatim} RRK 입력 방식으로는 다음과 같이 된다. @@ -1067,8 +1654,16 @@ RRK 입력 방식으로는 다음과 같이 된다. \jamoword{bujesjib-inan jongneumdeol h@n @@nam-eun d@l-ang salgog.} \end{boxedverbatim} +frkim 방식으로는, + +\begin{boxedverbatim} +\jamoword{bujeisjib'inan joqnymder h@n @@nam'yn d@r'aq sargog.} +\end{boxedverbatim} + +다음과 같은 결과를 얻는다. + \begin{quote} -\jamoword{bujesjib-inan jongneumdeol h@n @@nam-eun d@l-ang salgog.} +\jamoword{bujeisjib'inan joqnymder h@n @@nam'yn d@r'aq sargog.} (부잣집이니까 종놈들 한 여남은 데리고 살고) \end{quote} @@ -1077,21 +1672,23 @@ RRK 입력 방식으로는 다음과 같이 된다. 때문이다. 그것을 꺼내쓰기 위해서는 폰트의 사용자 영역을 열어놓고 필요한 글자를 가져다 쓰는 수밖에 없다. 폰트 설계가 만족스럽지 않다고밖에 말할 수 없겠다. +\chapter{결어와 후기} + \section{贅辭} 이 패키지를 만들게 된 사연이 이러하다. Kubuntu 리눅스에서 옛한글이 사용되는 문서를 작성할 일이 있었다. \texttt{fcitx} 입력기가 기본으로 설치되어 있었는데 옛한글 입력이 되는 입력기를 설정하는 문제로 골머리를 썩이는 경험을 하게 된 것이다. 세벌식 자판 배열은 이미 잊은 지 오래. \texttt{nabi}는 크롬이나 -QT에서 뭔가 이상하게 동작하거나 아예 한글 입력이 안 되거나\ldots\ldots. +QT에서 뭔가 이상하게 동작하거나 아예 한글 입력이 안 되거나\obellipsis. \LaTeX\ 문서인데 굳이 입력기가 필요한가 생각이 들어 간단히 로마자 대응 입력(transliteration)으로 한글과 옛한글을 입력하도록 하면 이 문제로 시간낭비하지 않아도 되지 않을까 싶어 시작하게 된 일이었다. -(그리고 입력기 설치보다 더 많은 시간과 {\hangulfontspec{Noto Serif KR}[Script=Hangul]\jamotextcmd{ke}\jamotextcmd{xpi}}--\footnote{이 표기를 -이태준 (1940), \ccnm{文章講話} (경성 종로, 文章社), p.~23에서 보았다. `{\hangulfontspec{Noto Serif KR}[Script=Hangul]\jamotextcmd{pxi}}'가 +(그리고 입력기 설치보다 더 많은 시간과 {\hangulfontspec{Noto Serif KR}[Script=Hangul]\jamotextcmd{ke}\jamotextcmd{qpi}}\textemdash\footnote{이 표기를 +이태준 (1940), \ccnm{文章講話} (경성 종로, 文章社), p.~23에서 보았다. `{\hangulfontspec{Noto Serif KR}[Script=Hangul]\jamotextcmd{pqi}}'가 아니라 -`{\hangulfontspec{Noto Serif KR}[Script=Hangul]\jamotextcmd{xpi}}'이다. 부록의 \fref{fig:mun} 참조. +`{\hangulfontspec{Noto Serif KR}[Script=Hangul]\jamotextcmd{qpi}}'이다. 부록의 \fref{fig:mun} 참조. 인쇄 상태로 미루어보면 -`{\hangulfontspec{Noto Serif KR}[Script=Hangul]\jamotextcmd{xpi}}'자 활자가 있었던 것 같지는 않고 `피'를 식자한 후에 왼편에 +`{\hangulfontspec{Noto Serif KR}[Script=Hangul]\jamotextcmd{qpi}}'자 활자가 있었던 것 같지는 않고 `피'를 식자한 후에 왼편에 조그마한 고리를 달아 인쇄한 것으로 보인다. 한편, 정약용의 원본에 지석영이 영어 단어와 음을 붙여 발행했다고 하는 \ccnm{아학편} (1909)에서도 이와 같은 표기법이 쓰이고 있다.}% 를 소비하였다.) @@ -1127,7 +1724,22 @@ Expl3는 내가 원하는 일을 너무나 간단하게 구현할 수 있게 해 해결되어 있는 현재 상황이 믿어지지 않을 정도이다. 모든 한글을 잘 표현하는 좋은 폰트를 가지게 된 것은 무엇보다 반가운 일이다. 그런 폰트가 더 많아지기를 바란다. +\subsection*{frkim 방식에 대한 첨언} +필자는 \pkg{pmhanguljamo}를 만들고 꽤 만족하고 있었다. 그런데 이 패키지의 표준 입력 방식은 +흔히 알려진 로마자 표기법을 어느 것도 따르지 않는 것으로 +모든 음절을 `/'로 구분하게 하는 것이 (그 장점에도 불구하고) 번거롭게 여겨지는 바가 없지 않았다. +이에 대한 대책으로 표준 로마자 표기법의 전자법을 사용하게 한 RRK 방식이 구현되어 있으나 그 입력 방식을 필자 자신이 그다지 즐겨하지 않는 데다가 현대 한글만을 표현할 수 있다는 표현상의 제약이 존재하였다. + +그러던 차, \pkg{hangul\TeX}에 다시 주목하게 되었는데, 나는 이 한글--로마자 대응을 expl3로 다시 써보려고 하였고 그 과정에서 +이 패키지가 나오게 되었다. 처음의 목표는 \pkg{hangul\TeX}을 똑같이 따라하는 것이었으며 +상당히 쉽게 구현할 수 있었다. 그 결과는 \href{http://www.ktug.org/xe/index.php?mid=KTUG_open_board&document_srl=261141}{KTUG::261141(2022/11/30)}에 발표하고 있다. +이 발표에서 옛한글을 \pkg{hangul\TeX} 방식으로 입력하는 데 대해 언급한 것이 있는데 그 부분을 +보충하여 이 패키지를 완성한 것이다. + +대체로 세 가지가 갖추어진 현재, frkim이 가장 효율적이다. pm 방식은 현재 유니코드로 조합할 수 있는 +모든 문자가 다 가능하다는 점과 아스키 에스케이핑같은 몇 가지 유용한 기능이 있으므로 이 패키지의 표준 +입력 방식의 지위를 내놓지는 않겠지만, 아마도 나 자신 일상적으로는 frkim을 쓰지 않을까 싶다. \section{변경 이력} @@ -1160,9 +1772,18 @@ Expl3는 내가 원하는 일을 너무나 간단하게 구현할 수 있게 해 \textbullet\ v0.5 (2022/09/02): 패키지 옵션 \texttt{pmfont} 추가. jamotext 환경 내에서 아스키 에스케이핑. -\textbullet\ v0.5.1 (2022/09/06): 버그 수정 및 ulem. 패키지 옵션 \texttt{pmfontfeature}. +\textbullet\ v0.5.1 (2022/09/06): 버그 수정 및 ulem. 패키지 옵션 \texttt{pmfontfeature}. \textbullet\ v0.5.2 (2022/09/07): \texttt{pmhanguljamo-kdoc.pdf} 문서의 오류 수정. \cmda{\jamoul} 버그 수정. + + +\textbullet\ v0.6 (2022/11/30): \texttt{frkim.sty}의 작성 + +\textbullet\ v0.7.1 (2022/12/25): \texttt{frkim}과 통합 및 q/f/x의 대응 문자를 바꿈. + +\textbullet\ v1.0 (2023/02/18): version 1.0으로 릴리스. + + %%% APPENDICES \ExplSyntaxOn \int_new:N \l_appsec_int @@ -1192,7 +1813,7 @@ Adobe사의 \href{https://source.typekit.com/source-han-serif/kr/}{본명조(Sou \item[KoPubWorld] KoPubWorld 바탕, KoPubWorld 돋움. \href{https://www.kopus.org/biz-electronic-font2/}{한국출판인회의}. \item[맑은 고딕] Windows 8 이후 한글 Windows 폰트. 마이크로소프트. \item[은 글꼴] 은 바탕 \TeX\,Live 배포 서체. -\item[한컴 훈민정음 세로쓰기체] 한컴 배포 서체. +%\item[한컴 훈민정음 세로쓰기체] 한컴 배포 서체. \end{description} \ifXeTeX @@ -1211,6 +1832,8 @@ Adobe사의 \href{https://source.typekit.com/source-han-serif/kr/}{본명조(Sou \hologo{LuaLaTeX}으로 컴파일하는 경우를 위한 메모. +(이 메모는 version 0.1 당시의 것으로 현재는 큰 의미가 없다.) + 우선 LuaHB\TeX 의 \LaTeX\ 포맷을 이용하는 것이 좋다. \pkg{harfbuzz} 라이브러리를 활용하므로 더 바람직한 결과를 얻을 수 있을 것으로 기대한다. 이 패키지는 LuaHB\TeX\ 1.11.2를 기준으로 테스트하였다. diff --git a/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-frkim.code.tex b/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-frkim.code.tex new file mode 100644 index 00000000000..4896ee994fe --- /dev/null +++ b/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-frkim.code.tex @@ -0,0 +1,554 @@ +%% code part of frkim +%% v0.6 +\char_set_catcode_other:N \@ + +\clist_const:Nn \c_hgvow_clist { a, e, o, u, y, i, @, * } + +\tl_new:N \g_cho_tl +\tl_new:N \g_jun_tl +\tl_new:N \g_jon_tl + +\tl_new:N \l_currtk_tl +\int_new:N \l_cflag_int + +%\bool_new:N \opt_zeroisx_bool + +\NewDocumentCommand \zeroisx {} +{ + \bool_set_true:N \opt_zeroisx_bool +} + +\NewDocumentCommand \zeroisrq {} +{ + \bool_set_false:N \opt_zeroisx_bool +} + +\cs_if_exist:NT \rq { + \let\originalrq\rq + \cs_undefine:N \rq +} + +\NewDocumentCommand \rq {} +{ + \symbol{"0027} +} + +%\NewDocumentCommand \frkhangulfont {} { +% Noto~Serif~KR +%} +% +%\NewDocumentCommand \frkhangulfontfeature {} { +% Script=Hangul, Renderer=OpenType, Ligatures=TeX +%} +\DeclareDocumentCommand \setpmhangulfont { o m o } +{ + \IfValueTF { #1 } + { + \tl_set:Nn \frkhangulfontfeature { #1 } + \IfValueT { #3 } + { + \tl_put_right:Nn \frkhangulfontfeature { , #3 } + } + } + { + \IfValueT { #3 } + { + \tl_set:Nn \frkhangulfontfeature { #3 } + } + } + + \tl_set:Nn \frkhangulfont { #2 } +} + +\NewDocumentCommand \hg { m } +{ + \group_begin: + + \cs_if_exist:NTF \hangulfontspec + { + \exp_last_unbraced:NNf \hangulfontspec [ \frkhangulfontfeature ] { \frkhangulfont } + } + { + \exp_last_unbraced:NNf \fontspec [ \frkhangulfontfeature ] { \frkhangulfont } + } + + \regex_split:nnN { \s } { #1 } \l_tmpa_seq + + \seq_map_indexed_inline:Nn \l_tmpa_seq + { + \_process_word:n { ##2 } + + \int_compare:nT { ##1 < \seq_count:N \l_tmpa_seq } + { {}~ } + } + + \group_end: + +} + +\cs_new:Npn \_process_word:n #1 +{ + \tl_set:Nn \l_aword_tl { #1 } + \clear_all_var: + \tl_map_function:NN \l_aword_tl \_main_fn:n + %%% 마지막에 끝난 조건에 따라 + \int_case:nn { \l_cflag_int } + { + { 1 } {%% 모음으로 끝남 + \tl_gput_right:NV \g_jun_tl \l_currtk_tl + \build_syl: + } + { 3 } {%% 자음으로 끝남 + \tl_gput_right:NV \g_jon_tl \l_currtk_tl + \build_syl: + } + } +} + +\cs_new:Nn \clear_all_var: +{ + \tl_gclear:N \g_cho_tl + \tl_gclear:N \g_jun_tl + \tl_gclear:N \g_jon_tl + + \tl_clear:N \l_currtk_tl + + \int_zero:N \l_cflag_int +} + +\tl_new:N \l_delayedtoken_tl + +\cs_new:Npn \_main_fn:n #1 +{ + \regex_match:nnTF { ['@a-zA-Z\*] } { #1 } + { + \clist_if_in:NnTF \c_hgvow_clist { #1 } + { + \_proc_vowel:n { #1 } + } + { + \_proc_const:n { #1 } + } + } + { + \str_if_eq:nnTF { #1 } { - } + { + \_proc_dash: + } + { + \int_compare:nTF { \l_cflag_int == 0 } + { + #1 + } + { + \tl_put_right:Nn \l_delayedtoken_tl { #1 } + } + } + } +} + +\cs_new:Npn \_proc_dash: +{ + \int_case:nn { \l_cflag_int } + { + { 0 } { } + { 1 } { \tl_gput_right:NV \g_jun_tl \l_currtk_tl \build_syl: } + { 3 } { \tl_gput_right:NV \g_jon_tl \l_currtk_tl \build_syl: } + } + + \int_zero:N \l_cflag_int + \tl_clear:N \l_currtk_tl +} + +\cs_new:Npn \_proc_vowel:n #1 +{ + \int_case:nn { \l_cflag_int } + { + { 0 } {%%% 직전이 0이면 초성 확정 + \tl_if_empty:NT \l_currtk_tl %%% 어두에 모음 => 초성을 'ㅇ'으로 + { + \tl_set:Nn \l_currtk_tl { x } + } + + \tl_gset:NV \g_cho_tl \l_currtk_tl + \tl_set:Nn \l_currtk_tl { #1 } + + \int_set:Nn \l_cflag_int { 1 } + } + { 1 } {%%% 직전이 모음이면 모음 모음 + \tl_gput_right:NV \g_jun_tl \l_currtk_tl + \tl_set:Nn \l_currtk_tl { #1 } + \int_set:Nn \l_cflag_int { 1 } + } + { 3 } {%%% 직전이 자음이면 직전 토큰은 다음 음절의 초성임 + %%% 이전 문자를 출력 + \build_syl: + %%% 초성 확정 + \tl_gset:NV \g_cho_tl \l_currtk_tl + \tl_set:Nn \l_currtk_tl { #1 } + \int_set:Nn \l_cflag_int { 1 } + } + } +} + +\cs_new:Npn \_proc_const:n #1 +{ + \int_case:nn { \l_cflag_int } + { + { 0 } {%%% 어절의 시작. 초성 생략 규칙이 없으므로 무조건 초성임. + %%% 어절의 시작이 아니면? + \tl_put_right:Nn \l_currtk_tl { #1 } + \int_set:Nn \l_cflag_int { 0 } + } + { 1 } {%%% 직전이 모음이면 중성 확정 + \tl_gput_right:NV \g_jun_tl \l_currtk_tl + \tl_set:Nn \l_currtk_tl { #1 } + \int_set:Nn \l_cflag_int { 3 } + } + { 3 } {%%% 직전이 자음이면 종성 모음 + \tl_gput_right:NV \g_jon_tl \l_currtk_tl + \tl_set:Nn \l_currtk_tl { #1 } + \int_set:Nn \l_cflag_int { 3 } + } + } +} + +%%% +%%%%%%%%% DICTIONARIES +\prop_const_from_keyval:Nn \c_frkcho_prop +{ + g = \char"1100, + G = \char"1101, + n = \char"1102, + d = \char"1103, + D = \char"1104, + r = \char"1105, + m = \char"1106, + b = \char"1107, + B = \char"1108, + s = \char"1109, + S = \char"110A, + x = \char"110B, + j = \char"110C, + J = \char"110D, + c = \char"110E, + k = \char"110F, + t = \char"1110, + p = \char"1111, + h = \char"1112, + Q = \char"114C, + z = \char"1140, + X = \char"1159, + v = \char"112B, +%%%% + bs = \char"1121, + bd = \char"1120, + bs = \char"1121, + bsg = \char"1122, + bsd = \char"1123, + bsj = \char"1126, + sg = \char"112D, + sd = \char"112F, + sr = \char"1130, + sb = \char"1132, + sj = \char"1136, + sc = \char"1137, + sk = \char"1138, + st = \char"1139, + sp = \char"113A, +%%% fillet + w = \char"115F, +} + +\prop_const_from_keyval:Nn \c_frkjung_prop +{ + a = \char"1161, + ai = \char"1162, + ia = \char"1163, + iai = \char"1164, + e = \char"1165, + ei = \char"1166, + ie = \char"1167, + iei = \char"1168, + o = \char"1169, + oa = \char"116A, + oai = \char"116B, + oi = \char"116C, + io = \char"116D, + u = \char"116E, + ue = \char"116F, + uei = \char"1170, + ui = \char"1171, + iu = \char"1172, + y = \char"1173, + yi = \char"1174, + i = \char"1175, + @ = \char"119E, + @i = \char"11A1, + @@ = \char"11A2, +%%% fillet + * = \char"1160, +} + +\prop_const_from_keyval:Nn \c_frkjong_prop +{ + g = \char"11A8, + G = \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, + S = \char"11BB, + q = \char"11BC, + Q = \char"11F0, + j = \char"11BD, + c = \char"11BE, + k = \char"11BF, + t = \char"11C0, + p = \char"11C1, + h = \char"11C2, + v = \char"11E6, +%%%%% + rX = \char"11D9, + X = \char"11F9, + mg = \char"11DA, + sg = \char"11E7, + sd = \char"11E8, + sr = \char"11E9, + sb = \char"11EA, +} + +\cs_new:Nn \build_syl: +{ + \bool_if:NF \opt_zeroisx_bool + { + \regex_replace_all:nnN { ' } { x } \g_cho_tl + } + \tl_if_empty:NF \g_cho_tl + { + \prop_get:NVNT \c_frkcho_prop \g_cho_tl \l_tmpone_tl + { \tl_use:N \l_tmpone_tl } + } + \tl_if_empty:NF \g_jun_tl + { + \prop_get:NVNT \c_frkjung_prop \g_jun_tl \l_tmptwo_tl + { \tl_use:N \l_tmptwo_tl } + } + \tl_if_empty:NF \g_jon_tl + { + \prop_get:NVNT \c_frkjong_prop \g_jon_tl \l_tmpthr_tl + { \tl_use:N \l_tmpthr_tl } + } + +%%%%>>>> +%%% [\g_cho_tl|\g_jun_tl|\g_jon_tl] + + \tl_gclear:N \g_jun_tl + \tl_gclear:N \g_jon_tl + + \tl_if_empty:NF \l_delayedtoken_tl + { + \l_delayedtoken_tl + \tl_clear:N \l_delayedtoken_tl + } +} + +%%%% \frdash +\NewDocumentCommand \frdash { } +{ + \symbol{"002D} +} + +\NewDocumentCommand \frendash {} +{ + -- +} + +\NewDocumentCommand \fremdash {} +{ + --- +} + +\prop_const_from_keyval:Nn \my_compjamo_prop +{ + !g = \char"3131, + !G = \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, + !B = \char"3143, + !bs = \char"3144, + !s = \char"3145, + !S = \char"3146, + !q = \char"3147, + !j = \char"3148, + !J = \char"3149, + !c = \char"314A, + !k = \char"314B, + !t = \char"314C, + !p = \char"314D, + !h = \char"314E, + !a = \char"314F, + !ai = \char"3150, + !ia = \char"3151, + !iai = \char"3152, + !e = \char"3153, + !ei = \char"3154, + !ie = \char"3155, + !iei = \char"3156, + !o = \char"3157, + !oa = \char"3158, + !oai = \char"3159, + !oi = \char"315A, + !io = \char"315B, + !u = \char"315C, + !ue = \char"315E, + !eui = \char"315E, + !ui = \char"315F, + !yi = \char"315F, + !iu = \char"3160, + !y = \char"3161, + !yi = \char"3162, + !i = \char"3163, + !rX = \char"316D, + !bg = \char"3172, + !bsg = \char"3174, + !bsd = \char"3175, + !v = \char"3178, + !sg = \char"317A, + !sd = \char"317C, + !sb = \char"317D, + !sj = \char"317E, + !z = \char"317F, + !Q = \char"3181, + !hh = \char"3185, + !X = \char"3186, + !@ = \char"318D, + !@i = \char"318E, +} + +\NewDocumentCommand \frcc { m } +{ + \space\unskip + \prop_get:NnNT \my_compjamo_prop {!#1} \l_tmpa_tl + { \tl_use:N \l_tmpa_tl } +} + +\NewDocumentCommand \activatefrcccmds { } +{ + \clist_set:Nn \l_tmpa_clist { g, G, n, d, D, r, m, b, B, s, S, q, Q, j, J, c, k, t, p, h, z, X, v, a, ai, ia, iai, e, ei, ie, iei, o, oi, io, oa, oai, u, ui, iu, ue, uei, i, y, yi, @} + \clist_map_inline:Nn \l_tmpa_clist + { + \cs_set:cn { frcc ##1: } { \frcc{##1} } + \cs_set_eq:cc { frcc ##1 } { frcc ##1: } + } +} + +%%% hangul +\cs_set_eq:NN \endhangul \scan_stop: +\cs_new:Npn \hangul_start:w #1 \endhangul +{ \seq_set_split:Nnn \l_tmpa_seq { \par } { #1 } + \seq_map_inline:Nn \l_tmpa_seq { \hg{##1} \par } } +\NewDocumentCommand \hangul {} +{ \hangul_start:w } + +%%% activatefrcccmds +\bool_if:NT \opt_frcccmds_bool +{ + \AtBeginDocument { \activatefrcccmds } +} + +%%% compatibility +\cs_set_eq:NN \jamoword \hg + +\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_map_indexed_function:NN \l_inputpar_seq \jamo_word:nn +% \seq_set_split:Nnn \l_inputword_seq { ~ } { #1 } +% \seq_map_indexed_inline:Nn \l_inputword_seq +% { +% \jamotextcmd { ##2 } +% \int_compare:nT { ##1 < \seq_count:N \l_inputword_seq } +% { \space } +% } +}{} + +\cs_new:Npn \jamo_word:nn #1 #2 +{ +% \jamoword { #2 } + \seq_set_split:Nnn \l_inparpar_seq { ~ } { #2 } + + \seq_map_indexed_inline:Nn \l_inparpar_seq + { + \regex_match:nnTF { ^\!\{ } { ##2 } + { + \tl_set:Nn \l_tmpa_tl { ##2 } + \regex_match:nnTF { ^\!\{(.+?)\}$ } { ##2 } + { + \regex_replace_once:nnN { ^\!\{(.+?)\}$ } { \1 } \l_tmpa_tl + \l_tmpa_tl + } + { + \tl_set_eq:NN \l_tmpb_tl \l_tmpa_tl + \regex_replace_once:nnN { ^\!\{(.+?)\}(.*)$ } { \1 } \l_tmpa_tl + \l_tmpa_tl + \regex_replace_once:nnN { ^\!\{(.+?)\}(.*)$ } { \2 } \l_tmpb_tl + \exp_args:No \jamoword { \l_tmpb_tl } + } + } + { + \jamoword{ ##2 } + } + + \int_compare:nT { ##1 < \seq_count:N \l_inparpar_seq } + { \space } + } + + \int_compare:nT { #1 < \seq_count:N \l_inputpar_seq } + { \par } +} + +% +%\NewDocumentEnvironment { jamotext } { +b } +%{ +% \seq_set_split:Nnn \l_tmpa_seq { \par } { #1 } +% \seq_map_indexed_inline:Nn \l_tmpa_seq +% { +% \hg{ ##2 } +% \int_compare:nT { ##1 < \seq_count:N \l_tmpa_seq } +% { \par } +% } +%}{} + + +\endinput diff --git a/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-frkim.sty b/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-frkim.sty new file mode 100644 index 00000000000..71713f13fbc --- /dev/null +++ b/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-frkim.sty @@ -0,0 +1,38 @@ +%% +%% frkim.sty: part of pmhanguljamo v1.0 +%% +%% Fukui Rei's Korean Romanization Method. +%% +%% Nova de Hi, 2022/11/29 +%% +\ProvidesExplPackage + {pmhanguljamo-frkim} + {2023/02/16} + {v0.5} + {Korean ROMAJI Input Method: Fukui Rei's HangulTeX} + +\RequirePackage{l3keys2e} + +\keys_define:nn { frkim } +{ + zeroisx .bool_set:N = \opt_zeroisx_bool, + frcccmds .bool_set:N = \opt_frcccmds_bool, +% tonemarks .bool_set:N = \opt_tonemarks_bool, + hangulfont .tl_set:N = \frkhangulfont, + hangulfontfeature .tl_set:N = \frkhangulfontfeature, +} + +\keys_set:nn { frkim } +{ + zeroisx = false, + frcccmds = false, +% tonemarks = false, + hangulfont = {NotoSerifKR-Regular.otf}, + hangulfontfeature = {Ligatures=TeX,Renderer=OpenType,Script=Hangul}, +} + +\ProcessKeysOptions { frkim } + +\input{pmhanguljamo-frkim.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-rrk.sty b/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-rrk.sty index 47fb415449d..0c1d022c3e9 100644 --- a/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-rrk.sty +++ b/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo-rrk.sty @@ -1,5 +1,5 @@ % -% subroutines of pmhanguljamo.sty +% subroutine codes of pmhanguljamo.sty % v0.3.2 (2020/02/05) % v0.3.3 (2020/03/09) % v0.3.4 (2020/03/15) @@ -7,6 +7,7 @@ % v0.5 (2022/09/02) % v0.5.1 (2022/09/06) % v0.5.2 (2022/09/07) +% v1.0 (2023/01/18) % \seq_new:N \l_textjm_seq @@ -44,7 +45,7 @@ } \int_compare:nT { ##1 < \seq_count:N \l_inparpar_seq } - { \space } + { \c_space_token } } \int_compare:nT { #1 < \seq_count:N \l_textjm_seq } @@ -103,7 +104,7 @@ } \int_compare:nT { \seq_count:N \l_tmpa_seq > ##1 } { - \space + \c_space_token } } \group_end: diff --git a/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo.sty b/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo.sty index 0dbcac43f49..df166802e86 100644 --- a/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo.sty +++ b/Master/texmf-dist/tex/latex/pmhanguljamo/pmhanguljamo.sty @@ -2,7 +2,7 @@ %% %% Poorman's Hangul Jamo Input Method. %% -%% (C) 2020-2022 Kangsoo Kim +%% (C) 2020-2023 Kangsoo Kim %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -16,150 +16,304 @@ %% %% The Current Maintainer of this work is Kangsoo Kim %% -%% This work consists of the style files --- pmhanguljamo.sty, pmhanguljamo-rrk.sty, -%% and the documentation files pmhanguljamo-doc.tex and pmhanguljamo-doc.pdf. +%% This work consists of the style files --- +%% pmhanguljamo.sty, pmhanguljamo-rrk.sty, pmhanguljamo-frkim.sty, +%% pmhanguljamo-frkim.code.tex %% \RequirePackage{xparse} \ProvidesExplPackage {pmhanguljamo} - {2022/09/07} - {v0.5.2} + {2023/02/19} + {v1.0} {Poorman's Hangul Jamo Input Method} \RequirePackage{l3keys2e} \bool_new:N \opt_usepmfont_bool +\bool_new:N \opt_rrkopt_bool +\bool_new:N \opt_frkim_bool + \tl_new:N \opt_pmfont_tl \tl_new:N \opt_pmfontfeature_tl +\tl_new:N \opt_unknown_tl +\tl_clear:N \opt_unknown_tl \keys_define:nn { pmhanguljamo } { + method .code:n = { + \str_case:nn { #1 } + { + { pm } { \bool_set_false:N \opt_rrkopt_bool + \bool_set_false:N \opt_frkim_bool } + { rrk } { \bool_set_true:N \opt_rrkopt_bool + \bool_set_false:N \opt_frkim_bool } + { frkim } { \bool_set_false:N \opt_rrkopt_bool + \bool_set_true:N \opt_frkim_bool } + } + }, + compat .tl_set:N = \opt_compat_tl, rrk .bool_set:N = \opt_rrkopt_bool, RRK .bool_set:N = \opt_rrkopt_bool, pmfont .code:n = { \bool_gset_true:N \opt_usepmfont_bool \tl_gset:Nn \opt_pmfont_tl { #1 } }, - pmfontfeature .tl_set:N = \opt_pmfontfeature_tl + pmfontfeature .tl_set:N = \opt_pmfontfeature_tl, +%%% version 0.6+, frkim. + frkim .bool_set:N = \opt_frkim_bool, + zeroisx .bool_set:N = \opt_zeroisx_bool, + frcccmds .bool_set:N = \opt_frcccmds_bool, + hangulfont .tl_set:N = \opt_pmfont_tl, + hangulfontfeature .tl_set:N = \opt_pmfontfeature_tl, + unknown .code:n = { \tl_put_right:Nn \opt_unknown_tl { #1, } } } \ProcessKeysOptions { pmhanguljamo } +%%%% presets + +\bool_new:N \g_compat_bool + +\str_if_eq:eeTF { \opt_compat_tl } { 0.5 } +{ + \bool_gset_true:N \g_compat_bool +} +{ + \bool_gset_false:N \g_compat_bool +} + + \NewDocumentCommand \jmcc { m } { \prop_item:Nn \c_compjamo_prop { #1 } } -\prop_const_from_keyval:Nn \c_compjamo_prop +\bool_if:NTF \g_compat_bool { - 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 + \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 + } +} +{ + \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, + Q = \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, + RX = \char"316D, + MB = \char"316E, + MS = \char"316F, + MZ = \char"3170, + MQ = \char"3171, + BG = \char"3172, + BD = \char"3173, + BSG = \char"3174, + BSD = \char"3175, + BJ = \char"3176, + BT = \char"3177, + BQ = \char"3178, + BBQ = \char"3179, + SG = \char"317A, + SN = \char"317B, + SD = \char"317C, + SB = \char"317D, + SJ = \char"317E, + Z = \char"317F, + QQ = \char"3180, + F = \char"3181, + FS = \char"3182, + FZ = \char"3183, + PQ = \char"3184, + HH = \char"3185, + X = \char"3186, + YOYA = \char"3187, + YOYAY = \char"3188, + YOI = \char"3189, + YUYE = \char"318A, + YUYEY = \char"318B, + YUI = \char"318C, + W = \char"318D, + AA = \char"318D, + WI = \char"318E, + AAI = \char"318E, + @ = \char"318D, + @I = \char"318E, + @@ = \double_arae_a, + WW = \double_arae_a, + AAA = \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 } @@ -206,7 +360,23 @@ } } -%%%% if RRK is given, then input pmhanguljamo-rrk.sty +%%% method=frkim +%%% loads frkim codes and exit +\bool_if:NT \opt_frkim_bool +{ + \tl_set_eq:NN \frkhangulfont \opt_pmfont_tl + \tl_if_empty:NT \frkhangulfont { + \tl_set:Nn \frkhangulfont { NotoSerifKR-Regular.otf } + } + \tl_set_eq:NN \frkhangulfontfeature \opt_pmfontfeature_tl + \tl_if_empty:NT \frkhangulfontfeature { + \tl_set:Nn \frkhangulfontfeature { Ligatures=TeX,Renderer=OpenType,Script=Hangul } } + + \input{pmhanguljamo-frkim.code.tex} + \endinput +} + +%%%% if method=rrk, then input pmhanguljamo-rrk.sty %%%% and stop. \bool_if:NT \opt_rrkopt_bool @@ -279,7 +449,7 @@ } \int_compare:nT { ##1 < \seq_count:N \l_inparpar_seq } - { \space } + { \c_space_token } } \int_compare:nT { #1 < \seq_count:N \l_inputpar_seq } @@ -300,7 +470,7 @@ } { \jamotextcmd { ##2 } } \int_compare:nT { ##1 < \seq_count:N \l_inputword_seq } - { \space } + { \c_space_token } } } @@ -341,13 +511,14 @@ %%% force allowbreak'ing hangul syllables when xetexko loaded %%% luatexko or polyglossia is of no problem. - \bool_if:NT \g_xetexko_bool { - \exp_args:Nnx \regex_match:nnT { [a-z] } { \l_cho_tl } - { - \int_compare:nF { \l_tmpa_int == 1 } - { \allowbreak } - } - } + %%% --- suppressed version 0.6, xetexko is more smart. +% \bool_if:NT \g_xetexko_bool { +% \exp_args:Nnx \regex_match:nnT { [a-z] } { \l_cho_tl } +% { +% \int_compare:nF { \l_tmpa_int == 1 } +% { \allowbreak } +% } +% } %%% print out the syllable composed \exp_args:NNx \prop_item:Nn \c_cho_prop { \l_cho_tl } \exp_args:NNx \prop_item:Nn \c_jung_prop { \l_jun_tl } @@ -372,7 +543,11 @@ } { \int_compare:nT { \tl_count:N \l_cho_tl == 0 } - { \tl_put_right:Nn \l_cho_tl { x } } + { + \bool_if:NTF \g_compat_bool + { \tl_put_right:Nn \l_cho_tl { x } } + { \tl_put_right:Nn \l_cho_tl { q } } + } \bool_set_true:N \l_jj_bool } { @@ -404,137 +579,274 @@ \NewDocumentCommand \CntrdotMark {} { · } %%%%%%%%% DICTIONARIES -\prop_const_from_keyval:Nn \c_cho_prop +\bool_if:NTF \g_compat_bool { - 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, - qg = \char"1141, %% for compatibility - 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, -%%% added version 0.4 - gd = \char"115A, - ns = \char"115B, - nj = \char"115C, - nh = \char"115D, - dr = \char"115E, -%%% 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_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, + qg = \char"1141, %% for compatibility + 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, + %%% added version 0.4 + gd = \char"115A, + ns = \char"115B, + nj = \char"115C, + nh = \char"115D, + dr = \char"115E, + %%% 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_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, + q = \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, + rq = \char"111B, + mb = \char"111C, + mq = \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, + bq = \char"112B, + bbq = \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, + sf = \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, + qg = \char"1141, + fg = \char"1141, %% for compatibility + qd = \char"1142, + qm = \char"1143, + qb = \char"1144, + qs = \char"1145, + qz = \char"1146, + qq = \char"1147, + qj = \char"1148, + qc = \char"1149, + qt = \char"114A, + qp = \char"114B, + f = \char"114C, + jq = \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, + pq = \char"1157, + hh = \char"1158, + x = \char"1159, + %%% added version 0.4 + gd = \char"115A, + ns = \char"115B, + nj = \char"115C, + nh = \char"115D, + dr = \char"115E, + %%% 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, + rbq = \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, + qr = \char"A976, + qh = \char"A977, + jjh = \char"A978, + tt = \char"A979, + ph = \char"A97A, + hs = \char"A97B, + xx = \char"A97C, + %%% Choseong Filler + w = \char"115F + } } \prop_const_from_keyval:Nn \c_jung_prop @@ -673,153 +985,306 @@ * = \char"1160 } -\prop_const_from_keyval:Nn \c_jong_prop +\bool_if:NTF \g_compat_bool { - 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, -%% added 0.4 - gn = \char"11FA, - gb = \char"11FB, - gc = \char"11FC, - gk = \char"11FD, - gh = \char"11FE, - nn = \char"11FF, -%% extended-b -%% added 0.4 - nr = \char"D7CB, - nc = \char"D7CC, - dd = \char"D7CD, - ddb = \char"D7CE, - db = \char"D7CF, -%%% - 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_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, + %% added 0.4 + gn = \char"11FA, + gb = \char"11FB, + gc = \char"11FC, + gk = \char"11FD, + gh = \char"11FE, + nn = \char"11FF, + %% extended-b + %% added 0.4 + nr = \char"D7CB, + nc = \char"D7CC, + dd = \char"D7CD, + ddb = \char"D7CE, + db = \char"D7CF, + %%% + 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_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, + q = \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, + rbq = \char"11D5, + rss = \char"11D6, + rz = \char"11D7, + rk = \char"11D8, + rx = \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, + mq = \char"11E2, + br = \char"11E3, + bp = \char"11E4, + bh = \char"11E5, + bq = \char"11E6, + sg = \char"11E7, + sd = \char"11E8, + sr = \char"11E9, + sb = \char"11EA, + z = \char"11EB, + fg = \char"11EC, + fgg = \char"11ED, + ff = \char"11EE, + fk = \char"11EF, + f = \char"11F0, + fs = \char"11F1, + fz = \char"11F2, + pb = \char"11F3, + pq = \char"11F4, + hn = \char"11F5, + hr = \char"11F6, + hm = \char"11F7, + hb = \char"11F8, + x = \char"11F9, + %% added 0.4 + gn = \char"11FA, + gb = \char"11FB, + gc = \char"11FC, + gk = \char"11FD, + gh = \char"11FE, + nn = \char"11FF, + %% extended-b + %% added 0.4 + nr = \char"D7CB, + nc = \char"D7CC, + dd = \char"D7CD, + ddb = \char"D7CE, + db = \char"D7CF, + %%% + 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, + rf = \char"D7DB, + rfh = \char"D7DC, + rq = \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, + sbq = \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, + zbq = \char"D7F4, + fm = \char"D7F5, + fh = \char"D7F6, + jb = \char"D7F7, + jbb = \char"D7F8, + jj = \char"D7F9, + ps = \char"D7FA, + pt = \char"D7FB, + %% tone markers + ; = \char"302E, + : = \char"302F, + | = {} + } } %%%% underline |