Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
한글 이름 저자와 영어 이름 저자를 구분하여 인용하도록 bst 파일을 수정했는데 본문에서는 작동하지 않습니다
2024.08.10 19:49
안녕하세요?
저는 학위논문을 쓰고 있는 학생입니다.
참고문헌의 저자 중에는 이름이 한글로 된 분도 있고, 영어로 된 분도 있습니다.
그런데 제가 받은 템플릿의 bst 파일에는 영어 이름 기준으로만 되어 있어서 어제부터 오늘까지 웬종일 bst 파일을 수정하여 bib 파일에서 language = {kor} 을 넣거나 넣지 않았을 때 is.korean 함수로 한글로 처리할지, 영어로 처리할지를 구분하여 참고문헌 인용 형식을 자동으로 쓸 수 있게 구현했습니다.
제가 수정한 부분은 ENTRY에
language %% ...
추가한 부분,
FUNCTION {format.names} FUNCTION {format.names.ed} FUNCTION {format.full.names}
부분입니다. 그러나.......
이상하게도 정작 본문에서 \cite{key} 나 \citep{key} 를 써서 인용할 때에는 제가 수정한 bst 파일이 전혀 적용되지 않고 있습니다.
본문에서도 한글 이름과 영어 이름을 구분하여 자동으로 인용되면 좋을 텐데요, 끙끙 앓다가 또 질문을 쓰고 있습니다.
이 문제는 어떻게 해결하면 좋을까요?
예시 코드를 정제하여 올립니다. 감사합니다.
본문:
참고문헌:
댓글 9
-
noname
2024.08.11 09:48
-
kungmo
2024.08.11 09:58
noname님 저번에도 도움 주셨는데, 또 도와주시다니 감사합니다!
알려주신 대로 biblatex+bibier 조합을 (처음 들어봤습니다만^^) 시도해봐야겠습니다. 로컬에서 MikTeX로 XeLaTeX+Bibitem+ ... 으로 돌리고 있는데, 얘를 어떻게 해야 하나 연구해보겠습니다.
그럼에도 해놓은 게 아까워서... make label 담당하는 함수를 뒤져보겠습니다.
-
kungmo
2024.08.11 10:14
biblatex, biber와 관련하여 한글, 영어 인용 형식을 다르게 하는 걸 찾아보니 별로.. 안 나오네요 ㅎㅎㅎ 아직 감이 오지 않습니다.
일단, bst 파일을 최대한 뚫어져라 찾아보고 있겠습니다^^ 매번 답변 주셔서 정말 감사합니다.
-
noname
2024.08.11 13:29
간단한 샘플을 만들어보았습니다. (그 과정에서, \setmainfont와 \setsansfont 설정이 잘못되어 있는 것을 수정했습니다. ...Math라는 이름이 붙은 폰트를 본문 기본 폰트로 사용하지 마십시오.)
xelatex -> biber -> xelatex
이 순서로 컴파일합니다. (추가 컴파일이 필요할 수 있음)
bib 파일 안의 language=korean을 keywords=kobib 또는 kobibmixed로 수정했습니다.
자동조사는 괄호 안의 연도 읽기를 따릅니다.
bibliography의 양식이 조금 달라졌을 수 있는데, 이것은 biblatex 매뉴얼을 참고하여 수정하실 수 있을 것이라 생각합니다.
-
kungmo
2024.08.11 16:44
세상에나! 주말에 저 때문에 ㅠㅠㅠ 감사합니다.
저도 오늘 점심 먹고 계속 bst 파일 바꾸면서 visual studo code에 copilot 붙여서 수정하고 있었는데요, 실패하고.... 다시 들어왔더니 이렇게 선물을 주시다니요. 은혜를 어찌 갚아야 할지 모르겠습니다.
로컬에서 알려주신 대로 XeLaTeX -> biber -> XeLaTeX 로 컴파일했더니 보여주신 예시랑 똑같이 아주 잘 나옵니다.
이걸 Visual Studio Code에서 레시피를 만들어서 클릭 한 번으로 쉽게 컴파일할 수 있으면 엄청나게 좋겠다는 생각이 들었습니다. overleaf에서는 이젠... 안 되겠죠? ㅎㅎ
도움 주셔서 진짜 정말 감사합니다. 주말 내내 이것 때문에 고민이었는데 덕분에 다 해결됐습니다!!
-
kungmo
2024.08.11 17:33
overleaf에서는 biber가 안 되는지 컴파일 오류가 나서 포기하고, vscode로 대체했습니다.
vscode 설치와 기본 설정은 MiKTEX으로구축하는작업환경 Nova de Hi likesam 2023년 2월28일 version 1.4.1 를 보고 따라했습니다.
다행히도 Visual Studio Code - KTUG Wiki 이 페이지에서 좋은 settings.json 파일을 공유해 주신 덕에 vscode 설정 파일 덮어 쓰고, LaTeX workshop에서 cluttex 버튼 한 번 누르니까 엄청나게 예쁘게 잘 컴파일이 됩니다. noname 님 덕에 biber 등등 새로운 세계를 알게 되었습니다. 감사합니다.
-
kungmo
2024.08.11 16:52
noname님. 너무 잘 되어서 궁금한 게 생겼습니다.
keywords={kobib} 이 제가 꼼수로 만든 language = {kor}과 같은 맥락에서 쓰인 것 같은데요, 신기하게 프리앰블 쪽에서 이런 걸 다 처리할 수 있다는 점이 되게 신기합니다.
biber가 다국어 처리도 한방에 잘 되고 좋은데, 왜 아직까지 대중화(?)되지 않고 지금껏 natbib에 BibTeX에 bst 파일 같은 것이 득세하고 있는 건지 궁금합니다.
매번 부탁만 드리고, 질문만 드리는데도 잘 답변해주셔서 감사합니다. 더운 여름 날 코로나 조심하셔요!
-
noname
2024.08.12 12:32
BiBTeX은 오랜 역사를 가진 도구이고요, biblatex이나 biber의 역사와 비교할 수 없습니다. 영어를 주언어로 작업하는 분들은 BibTeX과 cite 패키지만으로 충분할 것이라고 봅니다. 일부 까다로운 양식이 필요하다 해도 natbib이면 거의 모든 문제가 해결될 것이고 각 저널에 맞는 bst 파일도 풍부하게 제공되기 때문입니다.
한국어 LaTeX 문서 작성의 상황이라 해도, author-year 포맷이 필요한 (문과라거나... 문과라거나... 문과...) 분들은 그다지 많지 않고 수학/물리학/공학 분야에서는 numerical 포맷으로 충분합니다. 요컨대 필요가 그다지 크지 않습니다.
게다가 이 솔루션은 (십수년째) 개발중인 상태로서 릴리스된 적도 없고 문서화가 이루어져 있지도 않습니다. 아마 그게 제일 큰 이유 중 하나가 아닐까 합니다.
-
kungmo
2024.08.12 17:44
그렇군요. 영어권, 수학, 과학, 공학 분야라면 다국어 지원이 절실하게 필요하지 않았군요.
어쩐지... 뭔가 찾아도 잘 안 나오긴 했습니다.
요즘 noname 님 덕에 텍 관련하여 정말 많이 배우고 있습니다. 매번 정성껏 답변 주셔서 감사합니다.
주신 해결방법으로 2학기에 졸업에 도전하고, 이번에 noname님께 배운 것을 조금씩 정리해서 다른 사람도 쓸 수 있게 학위논문 템플릿이랑 사용법을 뿌려보겠습니다.
컴파일하여 생성된 bbl 파일(manuscript.bbl)의 항목을 보시면,
이렇게 되어 있는 것을 볼 수 있는데요, 이 가운데 \bibitem의 첫 옵션 인자는 연도를 표시하는 (2021)을 기준으로 두 번 반복(duplicate) 되어 있는 것을 볼 수 있습니다. 뒷 부분은 아마 make.full.names 함수에 의해 만들어지는 것일 텐데 여기는 의도하신 대로 is.korean 조건에 맞게 되어 있지만, 실제 \cite(t)에서 가져오는 것은 그 앞부분, 즉 괄호 표시된 연도까지입니다.
이 부분을 만드는 함수는 bst마다 다른데 자세히 살펴보지 못했지만 make label을 담당하는 그런 함수가 있지 않을까요? 여기에도 korean 조건에 따라 어떤 조작을 해주어야 할 듯합니다. 아무튼 \bibitem의 첫 옵션 인자안에 원하는 텍스트를 출력하도록 하는 것이 핵심입니다.
해보시고 생산적인 결과가 있으면 공유해주시기 바랍니다.
=====
영어와 한국어의 이(다)중언어 문헌목록을 작성하는 문제에서 bibtex+bst 방식으로 접근하는 것은 (많은 노력을 하신 것으로 보입니다만) bst의 종류에 따라 일일이 다시 만들어야 하는 데다가 citation package의 요구에 따라서도 또 상당한 수정을 해야 할 때가 있습니다. 그래서 요즘은 biblatex(+biber)로 해결하는 것이 대세가 되어 가고 있습니다. (시간이 나고 날이 덜 더우면... 한번 시도해보고 샘플을 보여드리겠습니다.)