Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 ktug, stackexchange, stackoverflow, ctan, overleaf, google.com, sil.org, kopus.org, github.com, .io, i.com, tistory.com 등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
/bibitem으로 구성된 파일을 \printbibliography와 연계할 수 있을지 궁금합니다.
2022.08.03 23:40
안녕하십니까.
얼마 전 이 방에 질문을 올리고 답변을 통해 많이 배웠습니다. 다시 한 번 감사합니다. 오늘은 여러 파일을 하나로 묶어 책/논문을 만들 때 bibliography와 연계하는 부분을 여쭈려 합니다. Overleaf에서 다음과 같은 예제를 받아서 공부를 하고 있습니다. (https://www.overleaf.com/project/62ea50e6e425ccc576feddac)
\documentclass[a4paper,11pt]{book} \usepackage{import} \usepackage{example} \usepackage{makeidx} \makeindex \begin{document} \frontmatter \import{./}{title.tex} \clearpage \thispagestyle{empty} \tableofcontents \mainmatter \chapter{First chapter} \import{sections/}{section1-1.tex} \import{sections/}{section1-2} \chapter{Additional chapter} \input{sections/section2-1.tex} \chapter{Last chapter} \include{sections/section3-1} \backmatter \import{./}{bibliography.tex} \end{document}
여기서 bibliography.tex을 보면 다음과 같습니다 (중간을 많이 생략했습니다.)
\clearpage \addcontentsline{toc}{chapter}{References} \begin{thebibliography}{25} \bibitem{armstrong00} Armstrong, M.A. \emph{Basic Topology.} England: Editorial Board, 2000. \bibitem{coxeter} Coxeter, H.S.M. \emph{Introduction to Geometry.} Toronto: John Wiley and Sons Inc, 1969. .... \bibitem{zomorodian} Zomorodian, Afra J. \emph{Topology for Computing.} United States: Cambridge University Press, 2005. \end{thebibliography} \bibliography{tesis}
이 파일은 \bibitem으로만 구성되어 직관적이지만, 저번에 배운 *.bib 파일 체계보다 불편해 보입니다. 저로서는 \bibitem 보다는 (예컨대) example.bib 식으로 파일을 구성하여 읽어 들인 다음 말미에 \printbibliography로 쓰는 쪽이 훨씬 좋아 보이는군요. 그러려면 저 본문 main.tex와 bibliography.tex를 많이 변경해야 할 것 같습니다. 이런 경우에는 어떻게 해야 좋을지 여러분께 여쭙니다.
감사합니다.
댓글 6
-
noname
2022.08.04 07:52
-
구름
2022.08.04 21:42
귀한 말씀 감사합니다. 사실은 말씀이 아니라 강의 수준인지라 출력하여 한 줄 한 줄 읽고 공부하며 복습해야 할 것 같습니다. 그리고 참으로 애통(?)하게도 제가 하는 작업이 문과쪽 그것도 고전어 (인도의 산스크리트, 티벳어, 고전 한문)와 현대어 (우리말과 영어, 일본어, 독일어 등등)을 넘나드는지라 Knuth (1973)와 (Knuth, 1973)를 기본으로 해야 합니다. 그러면 위 정보를 바탕으로 공부를 해 보고, 궁금한 것이 생기면 또 여쭈겠습니다. 귀한 시간 내어 이렇게 자세히 설명해 주셔서 다시 한 번 감사합니다.
-
noname
2022.08.05 05:54
그런 상황이시면, 저 길고 지루한 답변이 다 소용없겠고요, 다음처럼 요약할 수 있겠습니다.
- 문서 내에 thebibliography와 \bibitem으로 문헌 목록을 작성하는 것은 (numeric 인용이 아니므로) 사용하기 어렵습니다.
- 논문에 사용된 문헌 정보를 bib 파일에 잘 정리하시고 (이게 제일 중요합니다),
- biblatex과 biber를 이용해서 citation과 bibliography를 작성하십시오.
- 둘 이상의 bibliography, 여러 언어 bibliography 등 박사논문 규모의 글을 작성할 때 요구되는 사항이 여럿 있습니다. 이것은 필요에 따라 하나씩 해결해나가시는 수밖에 없을 것입니다. 어떻든 대부분의 문제는 거의 해결가능합니다.
사족입니다마는 bib에 대해 조금 언급하고 가겠습니다. bib 파일은 LaTeX에서 주로 활용하는 것이기는 하지만 그 자체가 독립적인 사양이라고 보아야 합니다. 연구자마다 문헌 데이터베이스를 관리하는 방식이 다 다르겠으나 (예컨대 Mendeley나 EndNote, 또는 요즘 뜨는 오픈소스 프로그램인 Zotero 같은 툴을 주로 활용하고 있다고 가정하면, 여기서 bib 형식으로 export하는 것이 가능합니다.), 이를테면 bib란 텍스트로 되어 있는 mendeley 데이터베이스와 기능이 똑같은 것입니다.
이것은 "하나의 논문을 작성하기 위해 하나의 bib를 작성한다"는 것과는 조금 다릅니다. bib에는 그 분야의 "모든" 참고 문헌이 다 들어 있어도 상관없습니다. 말 그대로의 "데이터베이스"인 것입니다. 문헌 정보를 bib 형식으로 관리하는 것은 처음에는 좀 어색하지만 익숙해지면 매우 편해지고, 훗날 여러 논문을 쓸 때에 상당한 시간을 절약할 수 있습니다.
-
구름
2022.08.06 02:01
귀한 말씀 감사합니다. 오늘도 비슷한 문제를 갖고 씨름하다가 일전에 알려 주신 %!TEX program = xelatexmk를 적용해서 풀었습니다. 귀한 시간과 정성을 들여 가르침을 나누어 주시니 배울 수 있어서 참 행복합니다.
-
yihoze
2022.08.05 18:42
Mendeley가 뭔가 싶어, mendeley.com 사이트에 들어가서 "latex"으로 검색해 봤습니다. 그 다음에 어찌 해야 하나 방황하다가 책 하나 찍어서 라이브러리에 넣었습니다. 그걸 bib 파일로 내려받을 수 있더군요. 이 간단한 시도에 참고문헌 자료를 무상으로 이용할 수 있는 것으로 보이지만, Mendeley도 사업체니까 분명 무슨 수익 사업을 할 텐데, 그게 뭘지 쬐끔 궁금합니다.
@book{Lamport1994,
abstract = {The LaTeX command typesets a file of text using the TeX program and the LaTeX Macro package for TeX. To be more specific, it processes an input file containing the text of a document with interspersed commands that describe how the text should be formatted. It produces at least three files as output: 1. A ``Device Independent'', or `.dvi' file. This contains commands that can be translated into commands for a variety of output devices. You can view the output of LaTeX by using a program such as xdvi, which actually uses the `.dvi' file. 2. A ``transcript'' or `.log' file that contains summary information and diagnostic messages for any errors discovered in the input file. 3. An ``auxiliary'' or `.aux' file. This is used by LaTeX itself, for things such as sectioning. For a description of what goes on inside TeX, you should consult The TeXbook by Donald E. Knuth, ISBN 0-201-13448-9, published jointly by the American Mathematical Society and Addison-Wesley Publishing Company. For a description of LaTeX, you should consult: LaTeX: A Document Preparation System, by Leslie Lamport, Addison-Wesley Publishing Company, 2nd edition, 1994. The LaTeX Companion, by Michel Goossens, Frank Mittelbach, and Alexander Samarin, Addison-Wesley, 1994.},
author = {Leslie Lamport},
issue = {December},
journal = {LaTeX},
title = {LaTeX2e - The Macro Package for TeX},
year = {1994},
} -
noname
2022.08.06 04:56
일단 Elsevier-Mendeley는 구독형 서비스입니다. 저장용량 2GB까지 free, 5GB Plus ($5/month), 10GB Pro ($10/month), 그리고 용량 제한 없는 Max plain ($15/month)이 있다고 합니다. 이 정보는 그냥은 보이지 않고 로그인하여 upgrade 페이지를 찾아가면 있다네요. 2GB 무료는 고맙지만 본격적으로 쓰기에는 아슬아슬하다고 생각합니다.
조금 길어질 듯합니다만 한번 답변을 써봅니다.
1. LaTeX이 "문헌 목록"으로부터 "인용"을 처리하는 방식 (numeric)
LaTeX은 자체적으로 (아무런 부가 패키지 없이도) 문헌 목록과 인용을 처리할 수 있습니다.
(1) thebibliography 환경
문헌 목록은 thebibliography라는 환경 안에 \bibitem 목록으로 주어져야 합니다. 예컨대
이 내용이 문서의 어느 위치엔가 있으면 LaTeX은 컴파일 과정에서 그 자리에 문헌 목록을 식자합니다.
(2) \cite 명령
그리고 \bibitem의 인자인 citekey를 기억하고 있다가 어디선가 \cite 명령이 불리면 해당하는 "문헌 목록의 번호"를 되돌려줍니다. 즉 \cite{knuth1973} 명령은 (두번째 컴파일할 때) [1]이라는 참조번호로 바뀝니다. 기본적으로 LaTeX이 하는 일은 이것이 전부입니다.
2. \bibliography는 무엇인가?
\bibliography는 두 가지 역할을 수행합니다. (1) 만약 bbl 확장자를 가진 파일이 있으면 \input합니다. (2) 문헌 목록 데이터베이스 파일의 이름을 aux에 기록하는데, 이 기록된 파일 이름은 나중에 BibTeX이 참조하게 됩니다.
여기서 중요한 것은 bbl이라는 파일입니다. 이 파일 안에는 thebibliography 환경과 \bibitem 들이 들어 있습니다. 간단히 말하면 thebibliography 환경을 손으로 하나하나 작성하는 과정 대신에, "인용된 참조 문헌을 추려내어서 bib 데이터베이스에서 정보를 뽑아내어 정렬하고, 그로부터 \bibitem 목록 thebibliography 환경을 작성하는 것"이 BibTeX이 하는 일입니다. 이 목록이 어떤 양식으로 작성되어야 하는지는 bst라는 BibTeX style에 정의된 것을 참조하게 됩니다. 어떤 스타일을 참조할 것인지를 지시하는 명령이 \bibliographystyle입니다.
\cite 명령을 좀더 섬세하게 작동하도록 돕는 패키지가 cite입니다. 예컨대 [1,2,3,4,5]를 [1--5]로 줄여준다든지 여러 요긴한 기능을 많이 제공하므로 numeric 인용에서는 필수입니다.
3. author-year 인용 방식
위의 설명으로 짐작하시겠지만 기본적으로 LaTeX의 참조-인용 방식은 numeric입니다. 대체로 IEEE 스타일에 가까운데 자연과학이나 공학 쪽에서 많이 쓰는 방식이고 일반적으로는 이것으로 충분합니다.
문제가 되는 것은 주로 "문꽈" 쪽인데요, 법학, 심리학, 철학과 윤리학 등의 학문 분야에서 이런 numeric 인용 방식은 거의 쓰이지 않지요. 소위 author-year가 이쪽의 표준인 것 같습니다.
일단 author-year 방식의 인용을 구현하려면 \cite-류 명령이 불렸을 때 가져오는 것이 "번호"여서는 안됩니다. 그러자면 \cite가 불렸을 때 \bibitem이 제공하여야 하는 정보를 예컨대
이런 식으로 옵션 인자를 주어서 작성해야 합니다. 그러면 \cite{knuth1973}이라고 한 위치에 Knuth (1973)이라는 문자열이 찍히게 됩니다. 그러나 이게 또 문제가 되는 것이 author-year 방식에서는 적어도 두 가지 유형의 인용이 필요하는 것입니다. 문장의 주어로서
이렇게 연도만 괄호 안에 써야 하는 경우와,
이렇게 저자와 연도가 둘 다 괄호 안에 들어가야 하는 경우가 있는 건데, \bibitem을 앞서와 같이 작성해두면 이런 상황에 대응할 수가 없게 됩니다. 이를 해결하려면 natbib이라는 패키지와 적절한 BibTeX style이 필요하게 됩니다. 다음은 한 가지 예시인데요,
한 번 컴파일 후에 bibtex을 실행하면 만들어지는 bbl, 즉 thebibliography 안에는
이런 식의 엔트리 들이 들어가 있게 됩니다. (Chicago 스타일을 예시한 이유는 저 부분이 간명해서인데요, APA의 경우는 코드가 복잡해집니다.) 아무튼 저 \citeauthoryear라는 매크로가 natbib이 제공하는 것으로 \citep (paren)와 \citet (text) 상황에 따라 적절한 출력을 보장해주기 위한 목적의 매크로입니다. 이제 본문에서 \citet라고 하면 Knuth (1973)으로 나오고 \citep라고 하면 (Knuth, 1973)으로 식자될 것입니다. 이것은 natbib이 하는 일입니다.
많이 언급되는 author-year 스타일은 APA, chicago 등이 있습니다만 자신에게 필요한 bst를 잘 찾아야 하는 것이 문제라면 문제인데, 일부 출판사에서는 자신들의 저널을 위한 bst를 배포하는 경우도 있습니다.
4. blblatex (+biber)의 bbl
biblatex 패키지가 만들어내는 bbl은 thebibliography 환경이 아닌 이상한 코드가 들어가 있습니다. 그래서 BibTeX이 만들어낸 bbl의 내용은 그대로 소스로 복사해와서 넣어도 문제가 없지만 biblatex의 bbl은 그렇지 않습니다.
한편 biblatex은 numeric이든 author-year든 더 복잡한 양식이든 여러 설정이 가능하게 되어 있다는 점만 지적해두겠습니다. natbib의 \citet를 biblatex은 \textcite, \citep를 \parencite, 그밖에 \footcite, \autocite 등이 있더군요.
5. 질문에 대한 답변 및 요약