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>처럼 입력하시면 좋습니다.
hyperref 호환성 문제
2015.11.25 16:54
안녕하세요.
url 패키지를 사용했을 때는 문제없이 컴파일이 되지만, hyperref로 했을 때 컴파일에 에러가 나는데 어디서 문제를 일으켰는지 파악이 안됩니다.
어떻게 이 문제를 해결할 수 있을까요?
댓글 4
-
yihoze
2015.11.25 18:01
-
Progress
2015.11.25 18:07
\title, \author, \affiliation 등 \maketitle에 의해 영향을 받는 것을 preamble에 놓지 말고 \begin{document} 이후에 놓으면 될 것 같습니다.
덧1. \makeatletter는 한번만 쓰시고요, 그 영역은 정말 `@'문자가 있을 경우로 범위로 좁히는 게 좋겠습니다. 즉 그 안에 \RequirePackage 등이 오지 않는 게 좋겠습니다.
덧2. 아시다시피 소위 풀리는(fragile) 명령은 보호받을 필요가 있으니 \protect와 함께 씁니다. 장절명령이나 타이틀에 포함된 \footnote, 플로팅 환경 속의 \caption에 수식이 온다거나, \author 내부의 \thanks 따위가 그렇습니다. 지금 이메일 주소를 식자하는 \url 명령도 뭔가 좀 보호받을 필요가 있지 않을까 생각합니다.
덧3. 이미 많은 저널의 클래스를 검토하셨겠지만 Asian Journal of TeX (AJT) 클래스도 한번 보십시오.
http://ftp.ktug.org/pub/ktug/ajt/
덧4. manyfoot 패키지 대신 bigfoot 패키지를 쓰는 게 좋겠습니다. 각주와 관련한 대부분의 솔루션이 통합된 패키지로 알고 있습니다. 물론 manyfoot에서 제공하는 그 명령도 그대로 제공하는 것으로 압니다. -
NDH
2015.11.25 19:24
hyperref이 \ref, \label을 재정의하는 것은 잘 알려진 것이고요. 그 때문에 발생하는 문제라고 봐도 될 겁니다.
의견: \label{#1}과 같이 \affiliation의 옵션 인자로 주어진 것을 바로 라벨로 사용하는 것은, 같은 label을 저자가 본문 중에 붙일 수도 있기 때문에 좋지 않습니다. \label{author:#1}과 같이 하는 것이 좋겠습니다.
\ref{#1}에 의하여 만들어지는 결과는 hyperref 패키지가 로드되는 경우 간단한 문자나 숫자가 아니라 상당히 복잡한 매크로 집합입니다. 숫자로만 처리하는 것이 좋을 것 같지요.
다음처럼 하면 어떤가 싶습니다. 핵심은 \ref 자체가 아니라 \ref하여 얻어진 결과를 숫자로 취급하는 것입니다. (\affiliation 정의에서 \label{#1}을 \label{author:#1}로 바꾸어야 합니다.) 밑줄친 부분이 수정된 것입니다.
\usepackage{hyperref}
\usepackage{refcount}
% ....
\renewcommand{\author}[3][\empty]{\stepcounter{authors}%
\ifx#1\empty%
\ifthenelse{\equal{\arabic{authors}}{1}}{%
\g@addto@macro{\@authors}{#3}%
\g@addto@macro{\@headauthor}{#3}
}%
{%
\g@addto@macro{\@authors}{, #3}%
\g@addto@macro{\@headauthor}{, #3}%
}%
\else
\ifthenelse{\equal{\arabic{authors}}{1}}{%
\g@addto@macro{\@authors}{\textsuperscript{\getrefnumber{author:#1}}#3}%
\g@addto@macro{\@headauthor}{#2}%
}%
{%
\g@addto@macro{\@authors}{, \textsuperscript{\getrefnumber{author:#1}}#3}%
\g@addto@macro{\@headauthor}{, #2}%
}%
\fi}
개인적으로 이 상황에서 \g@addto@macro가 과연 필요한가 하는 생각을 가지고 있습니다만... 그건 다른 문제이므로.
-
하늘연
2015.11.25 21:12
감사합니다. 문제가 다 해결되었습니다.
저번에 답변해주신걸 참고로 소스를 고쳐서 \@g@addto@macro를 안쓰려고 했는데 이상하게 에러가 떠서 코드를 내버려둔 상태입니다. amsart나 다른걸 참조해서 코드를 만들어서 너무 야매로 만들고 있는 기분이 들긴 합니다만..
뭔가 어디선가 미스를 한거 같은데..
hyperref를 다른 패키지들보다 뒤에 두라는 까닭은 이 패키지가 이런저런 명령들을 하이퍼링크를 위해 재정의하기 때문입니다. 참조 명령에 관련된 것들은 모조리 재정의하지요.
\@authors에 \ensuremath{^...}가 문제를 일으키는 게 아닌지 모르겠습니다. 여기에 \footnotemark 같은 것을 쓰면 안 되나요?