KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.

  • 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
  • Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
  • TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
  • MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
  • 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
    • 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
  • 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.

자유글 국어의 로마자 표기법, 마지막

2015.06.17 17:11

nanim 조회 수:4234 추천:1

앞선 글

  • 문제: 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차 라텍 스터디를 마칩니다. 감사합니다.

번호 제목 글쓴이 날짜 조회 수
489 수식 이미지를 Latex 수식으로 변경해주는 사이트입니다. [4] file SMC 2020.08.29 5416
488 XeLaTeX 한글 문서에서 한자와의 베이스라인 맞추기 karnes 2011.07.06 5408
487 KC2008++ 2014, notepad++ [9] nanim 2014.11.17 5402
486 페이스북 그룹을 만드는 건 어떨까요? [11] file 김벤젠 2016.07.05 5393
485 역시 삽질하면 되는군요.. 그럭저럭이지만...@.@; [15] file 불량양파 2016.04.21 5389
484 흠.. 만들고 나니.. 나름대로 괜찮은거 같습니다. [14] 불량양파 2016.05.18 5375
483 세그먼트 명령 file yihoze 2016.06.15 5372
482 xelatex으로 작성한 일본어 문서에 색인달기 DohyunKim 2011.03.28 5363
481 프레임 문단에 관한 잡담 file karnes 2011.12.16 5352
480 첨부파일 초과.. [13] 처음처럼 2014.10.11 5347
479 새로운 한글 폰트(라이센스: OFL) [1] 에드 2014.09.26 5316
478 함초롬바탕 yihoze 2011.01.05 5311
477 함초롬체 2014년 버전이 공개되었네요. [2] 함초롬 2014.10.19 5305
476 [KTUG Rumor] 문서작성 워크숍은 언제? [5] ischo 2014.09.25 5300
475 혹시 이 사이트에 버그가 있는 것이 아닌지요. [2] 메타 2016.08.03 5285
474 온라인 텍 도구인 Overleaf를 알려봅니다~ [3] 감자돌이 2015.10.10 5282
473 하나조노 민초 폰트의 글리프 품위 [9] file Progress 2014.10.02 5279
472 새 페이지에서 시작하는 차례 yihoze 2016.06.02 5261
471 특정 글리프를 가진 글꼴 [12] noname 2020.12.22 5249
470 TeXLive 2011 좀 간단하게 설치하고 쓰기 (Windows) karnes 2011.10.27 5238



XE Login