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>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
정보글 색인어에 한자 넣기
2024.09.10 18:18
별것 아니지만 간단한 스킬이 하나 생겨서 공유해봅니다.
혹시 더 좋은 솔루션이 있는 분께서 추가 의견을 주실 수도 있으니까요.
최근 게시판에서 배운 키값 가져오기 (llabel / keyref) 를 이용하며 색인어에 한자를 간단히 넣어보았습니다.
http://www.ktug.org/xe/index.php?document_srl=269707&mid=KTUG_QnA_board
본문에서 삼국사기를 키값으로 잡고 색인에서 삼국사기 / 『三国史記』로 나오게 하려면...
본문의 인덱스는 \index{삼국사기@삼국사기 / 『三国史記』}로 잡아주어야 했습니다.
그럼 본문에서 삼국사기에 색인을 넣고싶을 때마다 아래처럼 번거롭게 입력해야 했겠지요.
김부식이 쓴 삼국사기\index{삼국사기@삼국사기 / 『三国史記』)는 ... 삼국유사와 함께 삼국사기\index{삼국사기@삼국사기 / 『三国史記』}의 중요성은 그 사료적 희귀성 때문에라도...
2
저는 본문 가독성때문에 아래처럼 색인하는 것을 선호하는데요. \newcommand{\nx}[1]{\index{#1}#1}
김부식이 쓴 \nx{삼국사기}는 ... 삼국유사와 함께 \nx{삼국사기}의 중요성은 그 사료적 희귀성 때문에라도...
그러면 색인어는 `삼국사기'만 잡히니까요. 여기 색인 부분에 한자를 달아보고 싶었습니다.
3
그래서 색인을 만든 뒤에 ind 파일을 열어보니 이렇게 되어있었습니다.
\item 삼국사기\dotfill\!\makebox[\dimexpr1em+1pt\relax][l]{\dotfill}\begingroup\RaggedLeft \hyperpage{30}, \hyperpage{45}\hphantom{.}\par\endgroup
그러니까 저 키를 이용해 값을 가져올 수 있겠다는 생각이 들어서 해봤더니 되었습니다.
4
본문 최상단에 키값 가져오기 기능을 이용해 색인어의 매칭을 정의합니다.
\llabel{광개토대왕릉비}{広開土王碑}
\llabel{고구려}{高句麗}
\llabel{삼국사기}{『三国史記』}
ind파일을 생성한 뒤 정규표현식으로 이렇게 고쳤습니다.
\item 삼국사기 / \keyref{삼국사기}\dotfill\!\makebox[\dimexpr1em+1pt\relax][l]{\dotfill}\begingroup\RaggedLeft \hyperpage{30}, \hyperpage{45}\hphantom{.}\par\endgroup
색인 결과가 이렇게 나오네요.
삼국사기 / 『三国史記』 . . . . . . . . . . . . . . . . . . . 30, 45
5
이런 순서입니다.
1) 평소대로 색인을 만든다
2) 색인어에 한자나 원어정보가 필요할 경우 키값 가져오기 기능을 이용해 매칭표를 만든다 (llabel 활용)
3) ind 파일을 열어서 키 텍스트 부분을 매칭한다 (keyref 활용)
댓글 4
-
noname
2024.09.11 11:00
-
판돌이
2024.09.14 10:41
답변 고맙습니다~ 덕분에 추가 작업을 덜 수 있겠네요 ㅎㅎ
저는 파일단위로 정규식을 쓰진 않고 notepad++에 모두 열어서 하는 편입니다. 정규식 가끔 너무 과감해지기 때문에 불안해서 조심조심 쓰는 편입니다~
-
판돌이
2024.09.14 20:24
지금 해보고 있습니다만...
idx 파일
\indexentry{\myindexref {군사}|hyperpage}{23}
\indexentry{\myindexref {면전}|hyperpage}{23}
ind 파일
\item \myindexref {군사}\dotfill\!\makebox[\dimexpr1em+1pt\relax][l]{\dotfill}\begingroup\RaggedLeft \hyperpage{23}, \hyperpage{24}\hphantom{.}\par\endgroup
\item \myindexref {군사귀족}\dotfill\!\makebox[\dimexpr1em+1pt\relax][l]{\dotfill}\begingroup\RaggedLeft \hyperpage{121}, \hyperpage{157}\hphantom{.}\par\endgroup
이면 잘 찍히는 것일까요?
일단 \myindexref {군사} 여기에 불필요한 스페이스가 하나 들어가는데 왜 들어간 것인지 모르겠습니다.
이 공백을 둔 채로도 돌려보고 지운 뒤에 다시 컴파일해봤는데 한자가 들어가지 않았네요...
-
noname
2024.09.20 10:29
control sequence를 외부 파일에 쓰면 그 control sequence 이름의 끝임을 의미하는 space가 하나 같이 들어갑니다. 조판에 영향을 끼치지 않는 스페이스이고 이게 없으면 그 뒤에 알파벳이 이어질 때 control sequence의 "이름"이 보존되지 않습니다.
잘 안 된다고 하시는 것은, 어떻게 하신 것인지 정보가 없어서 알 수 없습니다. 위의 답글에 첨부한 trial.tex을 참고하여 보십시오. 혹시 제가 예시한 /mydata/가 실제 사용하시는 key 명칭과 다른 것은 아닌지 모르겠습니다.
이렇게 한번 해봤습니다. (expl3로 하면 좀 다르게 코딩하게 되겠지만 아이디어는 같습니다. 여기서는 expl3에 의존하지 않는 방식으로...)
핵심은 idx 파일안에 엔트리를 적을 때(즉 \nx 명령에서) 아예 \myindexref라는 명령을 적어주는 것이고요. 이 명령이 하는 일은 pgfkey가 이미 정의되어 있으면 그 내용도 같이 찍고 없으면 그냥 출력하는 것입니다.
근데 파일에 대한 regex 변환툴은 뭘 쓰시나요?