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

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

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

2015.06.17 17:11

nanim 조회 수:1015 추천: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차 라텍 스터디를 마칩니다. 감사합니다.

번호 제목 글쓴이 날짜 조회 수
공지 2019 한국텍학회 제12차 정기총회 및 학술대회 [2] yihoze 2019.01.04 10171
공지 KTUG 사설저장소 브라우저 베이드프즈 2017.07.16 14118
공지 장애 복구 안내 [9] 관리자 2017.05.04 15231
공지 TeX Live 2016 설치 안내 [7] 관리자 2016.06.05 45041
651 텍의 노드(node) [10] file JangNa 2015.06.27 790
650 바퀴 [2] file yihoze 2015.06.29 605
649 스타일 파일을 찾아 열기 [2] yihoze 2015.06.26 655
648 아름다운 사인 곡선 [21] file nanim 2015.06.23 1924
647 설문 [4] file yihoze 2015.06.26 620
646 텍신디를 쓸 때 색인 표제어를 PDF 책갈피에 넣기 file yihoze 2015.06.23 1087
645 퀴즈: 이 그리스 고전은 무엇일까요? [5] file yihoze 2015.06.25 734
644 스토리보드 만들기 file yihoze 2015.06.24 1026
643 pdf 문서의 특정 페이지에 사용된 폰트 알아내기 file Progress 2015.06.23 4487
642 하이퍼링크 색 yihoze 2015.06.23 814
641 매크로 또는 파일이 존재한다면 yihoze 2015.06.23 708
640 (ko.) TeX Live 2014 설치를 권장합니다. [37] nanim 2014.07.14 108729
639 KTUG 정체성? [20] 세벌 2015.06.19 1175
638 패키지를 만듭시다: 애프터서비스 [5] nanim 2015.06.18 1304
637 제가 좀 까칠하기는 하죠? [3] 세벌 2015.06.08 760
636 Simplified Hangulize file nanim 2015.06.21 582
635 익명인과 실명인의 논쟁 [1] 메타 2015.06.18 649
634 Windows 사용자를 위한 (ko.)TeX Live 2014 관련 안내 [1] 관리자 2014.09.23 35518
» 국어의 로마자 표기법, 마지막 [7] file nanim 2015.06.17 1015
632 국어의 로마자 표기법, 전자법 [12] file nanim 2015.06.16 55300



XE Login