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>처럼 입력하시면 좋습니다.
thebibliography 생성
2015.02.23 17:33
latex 초보입니다.
class 파일 내부를 보니까.
\def\thebibliography#1{\chapter*{\bibname\@mkboth
{\uppercase{\bibname}}{\uppercase{\bibname}}}%
\addcontentsline{toc}{chapter}{\bibname}\list
{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
\advance\leftmargin\labelsep
\usecounter{enumi}}
\def\newblock{\hskip .11em plus .33em minus .07em}
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax\thispagestyle{plain}\pagestyle{plain}\relax}
%\def\thebibliography{\chapter*{\bibname}\thispagestyle{empty}\pagestyle{empty}}
\def\endthebibliography{\label{paperlastpagelabel}%
\def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
\endlist}
bibliography에 대해서는 다음과 같은 코드가 있길래,
본문에는
\thebibliography
\bibliography{filename.bib}
\endthebibliography
라고 입력했더니,
그냥 filename.bib이라고만 뜨고
Empty `thebibliography' environment 라는 warning 메시지가 뜹니다.
저런 코드일 때는 item을 어떻게 생성해야 하는지요?
댓글 10
-
nanim
2015.02.24 09:42
-
포스테키안
2015.02.24 13:03
아 제 질문에 문제가 있었군요.
(초보자라 질문 자체가 서툰 점 죄송하네요ㅜㅜ)
그럼에도 친절하게 대답해 주신 거 감사합니다!
일단 현재 작업이 학위논문을 위한 것이기 때문에,
첨부되어 있는 cls를 활용해야 하고,
따라서 제대로 된 형식의 결과물이 나오기 위해서는 thebibliography를 써야하는게 아닌가 생각하고 있습니다.
(bibTex을 써서 위에 있는 코드와 같은 결과물을 낼 수 있는 방법이 있다면 아무래도 그것을 아는게 좋겠지요. bibTex이 정리하기 편하니.)
그래서 고수님들께 부탁하오건데,
1. bibTex으로
\def\thebibliography#1{\chapter*{\bibname\@mkboth
{\uppercase{\bibname}}{\uppercase{\bibname}}}%
\addcontentsline{toc}{chapter}{\bibname}\list
{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
\advance\leftmargin\labelsep
\usecounter{enumi}}
\def\newblock{\hskip .11em plus .33em minus .07em}
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax\thispagestyle{plain}\pagestyle{plain}\relax}
%\def\thebibliography{\chapter*{\bibname}\thispagestyle{empty}\pagestyle{empty}}
\def\endthebibliography{\label{paperlastpagelabel}%
\def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
\endlist}
이 명령어와 같은 효과를 내기 위해서 class 내에 혹은 메인 tex파일 내부에 어떻게 명령해야하는지 알려주셨으면 좋겠습니다.
2. 만약 이 방법이 불가능하다면 thebibliography를 직접 쓰면 어떻게 author (year) 형식으로 cite하면 되는지가 궁금합니다.
\thebibliography
\bibitem{Kahneman1979}
Kahneman, D., and Tversky, A. ``Prospect Theory: An Analysis of Decision under Risk,'' Econometrica, Vol.47, No.2, 1979, pp.263--292.
\endthebibliography
감사합니다^^
-
nanim
2015.02.24 13:27
말씀하신 클래스의 thebibliography 정의는 아무래도 좋고요, 질문 내용과도 하등 상관없어 보입니다.
(그 정의가 어떻게 되어 있든 사용자가 문헌 목록이나 cite를 생성하는 방법과는 무관합니다. 그건 그냥 문헌 목록을 어떤 모양으로 디스플레이할지 설정한 것일 뿐입니다.)
클래스 자체가 cite style에 대해서 어떤 조치를 취하고 있는지 알 수 없으니 답변도 할 수 없습니다.
클래스 포함하여 간단한 샘플을 제공해주시면 도와주시는 분이 계실 겁니다. 원하는 답변을 얻으시려면 클래스 파일을 보여주셔야 합니다.
-
포스테키안
2015.02.24 14:57
늦게 확인했네요. 죄송해요ㅜ
cls 파일이 허용 확장자가 아니라 upload가 안 되는데 어쩌지요??
일단 급하게나마 tex 파일로 바꿔서 올립니다.
-
nanim
2015.02.24 15:46
postech.cls인 것은 알겠습니다.
예전에 다른 분이 이 클래스와 샘플 파일을 올리신 적이 있습니다만 작성자마다 조금씩 다르지 않을까 싶습니다.
샘플로 사용중이신 파일을 전부 올려주세요. (zip으로 묶어 올리시면 됩니다.)
(작성 중이신 논문을 요구하는 게 아닙니다. "샘플"을 올려주시면 됩니다.)
-
포스테키안
2015.02.24 16:05
자꾸 번거롭게 해서 죄송합니다.
다시 zip 파일로 올립니다^^
-
포스테키안
2015.02.24 13:23
2.번 질문과 관련해서 문제가 더 있어서 덧붙여 질문합니다.
\thebibliography
\bibitem{Kahneman1979}
Kahneman, D., and Tversky, A. ``Prospect Theory: An Analysis of Decision under Risk,'' Econometrica, Vol.47, No.2, 1979, pp.263--292.
\endthebibliography
와 같이 하였을때,
Kahneman1979 Kahneman, D., and Tversky, A. “Prospect Theory:
An Analysis of Decision under Risk,” Econometrica, Vol.47, No.2,
1979, pp.263–292.
과 같이 출력됩니다.
여기서 Kahneman1979를 제거하고, 본문에서는 author (year)형식으로 cite를 하고 싶을 때,
어떤 식으로 bibitem을 생성하면 되는지, bst는 어떤 것을 써야 하는지, cite 명령어는 어떤 것을 써야 하는지 궁금합니다.
찾아보고는 있지만, 적절한 답이 없어 QnA에 질문합니다. 답변 부탁드립니다 ㅜㅜ
-
nanim
2015.02.24 16:28
우선 author-year 방식으로 인용을 하고 싶으시다는 것으로 이해하겠습니다.
이를 위하여 다음 세 가지를 사용하려 합니다.
- bibtex (즉, 문서에서 \thebibliography를 쓰지 않을 것입니다.)
- natbib
- chicago.bst (이것 말고도 apalike라든가 author-year 스타일을 지원하고 natbib이 이해하는 다른 bst가 많습니다. 목적에 맞는 것을 찾아보시기 바랍니다.)
첨부해주신 파일에서 다음 사항을 수정하십시오.
main.tex:
natbib을 다음과 같이 로드합니다.
\ifx\bibhang\undefined \else \let\bibhang\undefined \fi
\usepackage[authoryear]{natbib}- 210번째 줄 근처에 있는 \input etc/reference를 주석처리하고 다음 두 행으로 교체하십시오. etc/dissertation.bib을 부를 때 확장자 .bib을 붙이지 마십시오
\bibliographystyle{chicago}
\bibliography{etc/dissertation} - etc/reference.tex은 사용하지 않을 것입니다. 그 대신 etc/dissertation.bib을 잘 관리하시기 바랍니다. 맥이라면 bibdesk 같은 bib file editor로 필요한 문헌 정보를 이 파일에 적어넣으십시오.
이제 main을 다음 순서로 컴파일합니다.
$ xelatex main
$ bibtex main
$ xelatex main
$ xelatex main
bibtex 실행 후에 xelatex을 두 번 실행해야 결과가 나옵니다.
수정한 main.tex을 첨부합니다.
인용명령은 \citet와 \citep가 있습니다. 인용 문헌을 괄호 안에 넣을 때 \citep를 사용합니다. 그냥 \cite는 \citet와 같을 것입니다.
자세한 것은 natbib 문서를 참고하십시오.
- bibtex (즉, 문서에서 \thebibliography를 쓰지 않을 것입니다.)
-
포스테키안
2015.02.25 10:19
친절한 답변 너무나 감사드립니다.
앞으로도 계속 latex 쓸 일이 많을 것 같아서 궁금한 점을 더 물어봅니다.
1. \ifx\bibhang\undefined \else \let\bibhang\undefined \fi
이 것의 역할은 무엇인가요? 왜 이 것이 들어가야 하지요?
2. $ xelatex main
$ bibtex main
$ xelatex main
$ xelatex main
왜 이런 순서로 실행해야 하나요 각 명령어의 의미가 무엇인가요? (<- 이것은 잘 찾아보면 설명되어 있는 문서가 있을 것 같은데, 링크를 걸어주셔도 감사할 것 같습니다.)
-
하늘연
2015.02.25 10:32
1. 문법적인것만 설명드리면,
\ifx\bibhang\undefined % 만약에 \bibhang이라는 것이 정의되지 않은 매크로라면
\else % 아무것도 실행하지 않는다.
\let\bibhang\undefined %만약 \bibhang이라는 것이 정의되었다면, \bibhang을 정의하지 않게 만든다.
\fi %가정문을 마친다.
2. main 텍 파일을 xelatex으로 컴파일을 하고, bibtex으로 main을 읽고, xelatex으로 컴파일을 한다.
bibtex으로 main을 읽으면, main에서 언급된 bib을 읽으면서 bbl파일을 만들어냅니다. bbl파일은 참고문헌에 대해서 텍 엔진들(pdflatex,xelatex)이 읽을 수 있도록 만들어주는 보조파일입니다.
보조파일이 만들어진 후에 참고문헌과 번호 레퍼런스들을 읽어내는 것입니다.
한번만 컴파일하면 데이터가 완성이 안되었기 때문에 두번정도 컴파일을 해야합니다.
첫번째 컴파일은 주소를 잡아주는 것이고, 두번째 컴파일은 그 주소에다가 데이터를 제대로 넣어주는것이라고 생각하시면 됩니다.
다들 설명하기 귀찮아 하시는 듯합니다. 질문보다 답변이 훨씬 길어질 가능성이 높군요.
(1) thebibliography 환경
이것은 문서 내에서 문헌목록을 나열하는 환경입니다. 문서 안에 직접 쓴다면 다음과 같은 형태가 됩니다.
(2) BibTeX
그런데 위와 같은 방식으로 직접 문헌목록을 적어넣게 되면 정렬 순서를 직접 조절해야 하고 cite 방식(예를 들면 author-year)에 따른 옵션 커맨드들을 직접 다 적어넣어야 합니다.
복잡한 문헌목록을 관리하는 도구가 BibTeX입니다. 이것은 .bib 확장자를 갖는 문헌목록 데이터베이스에서 본문에 인용(cite)되거나 인용되지 않은(nocite) 항목의 문헌 정보를 모아서 정렬하고 마크를 붙여서 thebibliography 환경으로 만들어주는 일을 합니다. 문헌 목록을 일관되게 관리할 수 있다는 중요한 장점이 있습니다.
이 때는
과 같은 방식으로 코딩하고 한 번 컴파일한 후에 BibTeX을 실행하고 다시 컴파일하여야 합니다. thebibliography 환경은 BibTeX의 처리 결과로 문서에 포함되므로 사용자가 직접 \begin{thebibliography}하면 안 됩니다.
bibliographystyle은 문헌 목록과 인용방식에 따라서 여러 가지가 있을 수 있습니다. 이것은 .bst라는 확장자를 가지는 파일과 연결되어 있으며 경우에 따라 인용 지원 패키지(예: natbib)와도 결부되어 있습니다.
(3) BibLaTeX과 Biber
최근 주목받고 있는 biblatex이라는 패키지와 biber라는 유틸리티는 이전 BibTeX이 가진 한계(특히 유니코드의 처리)를 극복하기 위해 새롭게 발전하고 있는 툴입니다. biblatex은 이전의 BibTeX도 백엔드 유틸리티로 지정할 수 있습니다. (한글 문서라면 Biber가 더 낫다고 생각합니다)
이것은 또 전통적인 BibTeX 사용방식과는 다르므로 만약 이 방식을 원하신다면 관련 문헌을 참고하시기 바랍니다.
====
지금 질문에서 답변하기 난감한 이유는 thebibliography를 직접 쓰려는 건지 아니면 bibTeX을 쓰려는 건지 명확하지 않기 때문입니다.