KTUG 한국 텍 사용자 그룹

Menu

KTUG :: 마당자유글 › 국어의 로마자 표기법, 마지막

nanim | 2015.06.17 17:11:41 | 메뉴 건너뛰기 쓰기

앞선 글

  • 문제: http://www.ktug.org/xe/index.php?document_srl=207243&mid=KTUG_open_board
  • 한글의 분해와 조립: http://www.ktug.org/xe/index.php?document_srl=208182&mid=KTUG_open_board
  • 전자법: http://www.ktug.org/xe/index.php?mid=KTUG_open_board&document_srl=208446
=====

이제 마지막으로, 실제 "국어의 로마자 표기법"을 구현해보겠습니다.

현행 국어의 로마자 표기법은 국어의 표준 발음법에 따라 적는 것이 원칙이고 로마자 이외의 부호는 (되도록) 사용하지 않습니다.
문제는 이 "표준 발음법"입니다. 기록된 문자와 실제 소리나는 발음이 상당히 다르고, 여러 음운현상이 끼어들기 때문에 이를 구현하기가 쉽지만은 않습니다.
제일 어려운 게 종성(받침)의 발음입니다. 어말 또는 자음 앞이냐, 음의 동화나 첨가가 인정되느냐 등에 따라 같은 글자라도 다른 소리로 적어야 하는 경우가 많습니다.

이 기능을 구현하는 데 있어 제일 먼저 떠오르는 생각은 초+중+종+초로 이어지는 string을 분석해서 종+초 부분을 상황에 따라 적절히 구성하면 되지 않겠는가 하는 것인데요, 그것도 한 가지 방법일 것입니다.
이 글에서는, 그러나, 애써 구해둔 "전자법"에 의한 표기를 살려보려고 합니다. 아이디어는 굉장히 단순합니다. 전자법에 의한 표기 문자열을 얻어둔 상태라면, 그 문자열의 특정할 수 있는 부분을 regex로 치환하자는 것이지요.

간단한 예를 들면 다음과 같습니다: `죽변'과 `곡안'을 생각하면, 앞의 것은 gb으로, 뒤의 것은 g-으로 적혀 있을 것입니다. 이 상태에서 g-는 g로 그 이외의 경우는 k로 적기로 하면 앞의 것은 kb, 뒤의 것은 g가 됩니다. 
이 아이디어를 밀고 나가기 위해, 전자법의 종성 부분을 다음처럼 넣어두겠습니다.

\dict_fn:nn { jong }
{
0=\empty,
1=K, 2=kk, 3=gs, 4=N, 5=NJ, 6=nh, 7=T, 8=L, 
9=LG, 10=lm, 11=lb, 12=ls, 13=lt, 14=lp, 15=lh,
16=m, 17=P, 18=BS, 19=S, 20=sS, 21=NG, 22=J, 23=C, 24=k,
25=t, 26=p, 27=H
}

(kk, gs, nh, lm, lb, ls, lt, lp, lh 등도 같은 방식으로 처리할 수 있겠지만 여기서는 아이디어만 보이기 위하여 이 모든 경우를 모두 구현하지 않았습니다.)
즉, 초성과 달리 종성은 일단 대문자로 써둔다는 것입니다. 그리고 다음과 같은 regex_replace를 적용합니다.

\regex_replace_all:nnN { K- } { g } \g_output_tl

나중에 K 대문자를 전부 소문자로 바꾸게 하면, 이 이외의 경우 종성 ㄱ은 모두 k로 나타날 것입니다.

참 재미나고 좋은 방법인데요, 문제는 l3regex 패키지가... 좀 속도의 문제가 있다는 거지요. 여러 개의 regex를 적용하면 아주 조금 지체가 발생합니다.
아무튼 이 강좌(?)의 목적은 아이디어를 구현하는 데 있으므로 (실용성은 차치하고) 이것으로 만족하려 합니다.
(당연하지만, 표준 발음을 옵션인자로 주면 정확한 표기를 얻을 수 있는 것은 동일합니다. 속도 문제로 구현하지 않은 말음의 처리가 문제가 되면 이 방법을 사용하십시오. 소스에 해당 사항이 있습니다.)

=====

\givenName이라는 명령은 로마자 표기법의 인명 표기 규정을 적용한 것입니다. 사용방법은 성과 이름을 세미콜론(;)으로 분리하고 필요하다면 붙임표를 쓸 수 있게 해두었습니다. \givenName{황;빛-나}

=====

첨부 파일을 컴파일하면 처음 변환되는 문자열을 먼저 보이고 최종 결과를 보여줍니다. 이 과정이 번거롭다면 소스 중에 !!!!!라고 주석이 달린 행을 주석처리하면 됩니다. 

첨부파일 참조: RR-f.tex
샘플의 컴파일 결과: RR-f.pdf

=====

이것으로 제1차 라텍 스터디를 마칩니다. 감사합니다.

첨부 [2]

댓글 [7]

댓글 쓰기

목록 삭제

KTUG 한국 텍 사용자 그룹