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>처럼 입력하시면 좋습니다.

noname

조금 길어질 듯합니다만 한번 답변을 써봅니다.

1. LaTeX이 "문헌 목록"으로부터 "인용"을 처리하는 방식 (numeric)

LaTeX은 자체적으로 (아무런 부가 패키지 없이도) 문헌 목록과 인용을 처리할 수 있습니다.

(1) thebibliography 환경

문헌 목록은 thebibliography라는 환경 안에 \bibitem 목록으로 주어져야 합니다. 예컨대

\begin{thebibliography}{00}
\bibitem{knuth1973} Knuth, Donald E. 1973. 
“Fundamental Algorithms.” Chap. 1.2. Addison-Wesley.
\end{thebibliography}

이 내용이 문서의 어느 위치엔가 있으면 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이 제공하여야 하는 정보를 예컨대

\bibitem[Knuth (1973)]{knuth1973} 
Knuth, Donald E. 1973. “Fundamental Algorithms.” Chap. 1.2. Addison-Wesley.

이런 식으로 옵션 인자를 주어서 작성해야 합니다. 그러면 \cite{knuth1973}이라고 한 위치에 Knuth (1973)이라는 문자열이 찍히게 됩니다. 그러나 이게 또 문제가 되는 것이 author-year 방식에서는 적어도 두 가지 유형의 인용이 필요하는 것입니다. 문장의 주어로서

Knuth (1973) suggested a new algorithm...

이렇게 연도만 괄호 안에 써야 하는 경우와,

... was discovered (Knuth, 1973).

이렇게 저자와 연도가 둘 다 괄호 안에 들어가야 하는 경우가 있는 건데, \bibitem을 앞서와 같이 작성해두면 이런 상황에 대응할 수가 없게 됩니다. 이를 해결하려면 natbib이라는 패키지와 적절한 BibTeX style이 필요하게 됩니다. 다음은 한 가지 예시인데요,

\usepackage{natbib}  %% preamble
...
\bibliographystyle{chicago}
\bibliography{mybib.bib}

한 번 컴파일 후에 bibtex을 실행하면 만들어지는 bbl, 즉 thebibliography 안에는

\bibitem[\protect\citeauthoryear{Knuth}{Knuth}{1973}]{inbook-minimal}
Knuth, D.~E. ({\noopsort{1973b}}1973).
\newblock {\em Fundamental Algorithms}, Chapter 1.2.
\newblock Addison-Wesley.

이런 식의 엔트리 들이 들어가 있게 됩니다. (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은 그렇지 않습니다.

  • 그래서 논문 기고용으로 자신의 bib에서 추출한 thebibliography를 \bibliography 명령을 쓰지 않고 복사해 넣어야 하는 경우(이것을 요구하는 저널이 있습니다)에는 BibTeX 방식으로 만들어진 bbl을 이용해야 합니다.
  • biblatex이 사용된 문서가 만들어내는 문헌 목록을 \bibitem 형식으로 변환하는 패키지 biblatex2bibitem이 있기는 한데, 이렇게 만들어진 bibitem들은 author-year에 적합하지 않습니다.

한편 biblatex은 numeric이든 author-year든 더 복잡한 양식이든 여러 설정이 가능하게 되어 있다는 점만 지적해두겠습니다. natbib의 \citet를 biblatex은 \textcite, \citep를 \parencite, 그밖에 \footcite, \autocite 등이 있더군요.

5. 질문에 대한 답변 및 요약

  • 문서 소스의 본문에 thebibliography를 직접 써넣는 방식은 numeric 인용일 때만 사용합니다. 저자-연도 방식이면 biblatex에 의하는 것이 더 확실하고 좋은 방법일 것입니다. 요컨대 저자-연도 방식의 인용을 위한 bibitem은 수작업으로 편집하기 쉽지 않습니다.
  • 자신의 문헌 목록이 bib로 잘 관리되고 있다면 bibtex을 이용하여 문서에 삽입할 thebibliography+\bibitem 목록을 얻어낼 수 있습니다.
  • 문서 속에 있는 thebibliography와 \bibitem은 LaTeX이 직접 참조하고 조판하는 것이고, biblatex은 그 데이터를 이용하지 않습니다.
  • 결론은, 자신이 쓰고 있는 글에 대하여 요구되는 인용 및 문헌 목록의 형식을 먼저 확인하고, 거기에 맞는 작업 환경을 마련하는 것이 좋겠다는 것입니다. (numeric 인용이 허용된다면 세상 편합니다.)

 




XE Login