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>처럼 입력하시면 좋습니다.
\ref 링크가 정확한 위치로 보내지지 않습니다
2023.12.06 09:40
안녕하십니까? \ref 관련 질문이 있습니다.
(아마존) 전자책 출판을 염두에 두고 문서를 작성하는 중입니다. 전자책이므로 \ref의 클릭 이동이 매우 중요합니다.
첨부된 MWE, ContourIntTEX_MWE_ref1 에서,
제1장의 문제 1.0.1~문제 1.0.5는 제2장의 문제 1.0.1~문제 1.0.5에 대응됩니다.
제1장의 문제들은 환경 problem 으로
\begin{problem} \label{Problem:2.21.5} %SpiegelComplex Problem 7.71
ref 예 1
\hfill (풀이로 가기: p.\pageref{Solution:Problem:2.21.5})
\end{problem}
와 같이 작성되어 있고, 제2장의 문제들은 환경 solProblem
\begin{solProblem}{\ref{Problem:2.21.5}} %SpiegelComplex Problem 7.71
ref 예 1
\hfill (문제로 돌아가기: 문제 \ref{Problem:2.21.5})
\label{Solution:Problem:2.21.5}
\end{solProblem}
와 같이 작성되어 있습니다. 환경 problem 과 solProblem 은 mypackage_ContourIntegral.sty 에 정의되어 있습니다.
여기서 보다시피 \label{Problem:2.21.5} 와 \label{Solution:Problem:2.21.5} 는 \ref에 의하여 ref되는데,
컴파일된 pdf 파일의 1페이지,
문제 1.0.3 ref 예 1 (풀이로 가기: p.6)
에서 페이지수 6을 클릭하면 6페이지의 문제 1.0.3이 나와야 합니다만, 실제로는 3페이지가 나옵니다.
\label{Solution:Problem:2.21.5} 이 있는 페이지로 정확히 가지지 않는 것이지요.
2장의 문제 1.0.4 (p.8) , 문제 1.0.5 (p.11)에서와 같이 \label의 위치를 환경 solProblem 내에서 뒤쪽으로 옮겨도 마찬가지네요.
환경 problem에 있는 \label은 정확한 페이지로 잘 가집니다. 제 생각에는 환경 problem이 numbered enviroment이고
환경 solProblem이 numbered가 아닌 environment라서 생기는 차이가 아닌가 싶습니다만.
환경 solProblem의 \label이 있는 페이지로 클릭해서 정확히 가게 할 방법이 없을까요?
댓글 4
-
yihoze
2023.12.06 10:19
-
noname
2023.12.08 08:28
위의 yihoze 님의 답변을 한 마디로 요약하면, "solProblem"에도 독자적인 카운터를 붙이라는 것입니다.
-
byunss
2023.12.09 08:37
그 독자적인 카운터를 컴파일한 pdf 파일에서는 안 보이면서 참조하는 데만 사용하는 방법은 없을까요? 첨부한 MWE에서 problem 문제 1.0.1에 대응하는 solProblem 문제 1.0.1에서 카운터 1.0.1은 problem 환경의 카운터인데요. solProblem 환경에 독자적인 카운터를 붙이면 이것을 컴파일했을 때 "문제 1.0.1 2.0.1" 이런 식으로 solProblem의 카운터 2.0.1이 나타날 것 아닌가요? 이것을 피하려면 어떻게 해야 할까요?
-
yihoze
2023.12.11 12:00
카운터를 굳이 표시할 필요가 없습니다. \label은 직전에 저장된 어떤 번호에 주어진 이름을 적용하는데, \stepcounter 또는 \refstepcounter 명령이 카운터 번호를 저장한다고 보면 됩니다.
\documentclass[chapter]{oblivoir}
\usepackage{fapapersize}
\usefapapersize{*,*,30mm,*,30mm,*}
\newtheorem{question}{문제}[chapter]
\NewDocumentCommand\gotoAnswer{m}{풀이로 가기: \pref{#1}}
\newcounter{answer}[chapter]
\NewDocumentEnvironment{answer}{mm}{
\par\noindent
\refstepcounter{answer}\label{#2}\textbf{문제 \ref{#1}}
}{}
\begin{document}
\chapter{무한급수의 합-연습문제}
\begin{question} \label{question:1}
\gotoAnswer{answer:1}
\end{question}
\newpage
\begin{question} \label{question:2}
\gotoAnswer{answer:2}
\end{question}
\chapter{무한급수의 합-연습문제 풀이}
\begin{answer}{question:1}{answer:1}
어쩌구 저쩌구
\end{answer}
\newpage
\begin{answer}{question:1}{answer:2}
이러쿵 저러쿵
\end{answer}
\end{document}
이런 구조에서는 \ref보다는 \hypertarget과 \hyperlink를 쓰는 게 더 나을 것 같습니다만 ... 아무튼 원인은 solProblem 환경에 있습니다. \ref를 쓰려면 \label이 있어야 하고, \label은 카운터가 있어야 합니다. 그런데 solProblem 정의에는 카운터가 없습니다.
chapter1.aux와 chapter2.aux를 열어서 비교해 보세요.
\newlabel{Problem:2.21.1}{{\M@TitleReference {1.0.1}{무한급수의 합-연습문제}}{1}{}{problem.1.0.1}{}}
여기에는 prolblem 카운터가 제대로 들어가 있습니다만,
\newlabel{Solution:Problem:2.21.1}{{\M@TitleReference {2}{무한급수의 합-연습문제 풀이}}{3}{무한급수의 합-연습문제 풀이}{chapter.2}{}}
여기서는 {2}는 아마 챕터 카운터를 받아온 걸 겁니다.