KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
You will have long and healthy life.
FrontPage › 상호참조

목차

1 상호참조(Cross-Reference)란?
2 Label과 Cite Key를 보여주는 showkeys 패키지
3 Label의 위치
4 섹션 참조 팁

1 상호참조(Cross-Reference)란?

cf. 번호바꾸기의 항목 "자동 번호 매기기"

LaTeX에서는 장, 절, 소절, 수식, 정리, 표의 캡션, 그림의 캡션, 각주, 심지어는 나열환경의 item 등에 Label(명령어 \label{Key}로 입력)을 붙여 놓고 참조가 필요한 곳에서 \ref{Key}, \pageref{Key} 등의 명령으로 이들을 참조할 수 있게 하였다. 번호가 붙지 않은 수식에도 Label을 붙여 두면 \pageref{Key}로 그 수식이 있는 쪽번호를 불러 올 수 있다. 우선 \label{ }의 위치가 맞아야 제대로 된 번호(Counter)를 불러온다(KTUGOperate:22005). 또 \label{ } 속의 Key도 중복되지 않아야 한다. 이를 위하여 여러가지 장치가 고안되어 있다.-> See WinEdtTip/상호참조

2 Label과 Cite Key를 보여주는 showkeys 패키지

TeX 파일을 편집할 때 많은 Label과 Bibitem 을 일일이 기억하는 것은 매우 힘들다. 프리앰블에
 \usepackage{showkeys}
를 넣으면 명령 \label{}, \ref{}, \pageref{} 등의 묶음표 {} 속에 들어간 Label과 Bibitem 그리고 \cite{}, \citep{} 등의 묶음표 {} 속에 들어간 Cite Key를 모두 보여 준다. ->See 상호참조, 참고문헌인용

클래스 옵션 final[1]을 쓰면 showkeys 패키지가 작동하지 않거나 오류 메시지가 나타난다. 그래서 편집 도중에는 클래스 옵션 draft를 쓰고, 최종 컴파일에서는 \usepackage{showkeys}를 주석처리하여 %\usepackage{showkeys}로 하는 것이 안전하다.


그림 설명: CTAN:macros/latex/required/tools/showkeys.dtx를 컴파일하여 생긴 showkeys.pdf 2쪽과 showkeys.dvi 3쪽을 화면 캡쳐한 것이다. bibitem 속의 Cite Key와 \label{} 속의 label은 상자 속에 나타나고 \cite{} 속의 Cite Key와 \ref{} 속의 label은 깃발(┣ 모양)로 나타난다.

참고1: HLaTeX 1.0.1의 contrib 패키지로서 showhkeys, showhtags가 있다. 이걸 쓰면 한글로 주어진 레이블을 보여 준다. See KTUGContrib:2989

참고2: 문헌인용의 Cite Key들만 보고 싶으면[2]
 \usepackage[notref]{showkeys}%상호참조의 Label을 보여주지 않음
로 notref 옵션을 쓰면 되고, 상호참조의 Label들만 보고 싶으면
\usepackage[notcite]{showkeys}%문헌인용의 Cite Key를 보여주지 않음
로 notcite 옵션을 스면 된다.

----
  • [1] 대개의 클래스에서는 디폴트로 final 옵션으로 되어 있다.
  • [2] Cite Key들만 보여 주는 showhtags 패키지도 있다.



3 Label의 위치

Q1(From KTUGOperate:16095): 실제 그림 번호하고, 본문에서 참조된 그림 번호가 서로 다릅니다. 예를들어, 그림에서는 "2.3: 예제"이고, 본문에서는 "2.3.1"로 나옵니다. subsection 때문일까요? 본문의 참조에서도 그림 번호가 동일하게 나오도록 하려면 어떻게 해야하는지 도와주세요.

A1(From KTUGContrib:2992): figure 환경 속에서 \label은 절대로 \caption 명령 전에 두어서는 안됩니다. 또 위의 그림에서 보듯이 showkeys 패키지를 썼을 때 \label{...}을 \caption{ }의 묶음표 { } 속에 두느냐 바로 뒤에 두느냐 아니면 다른 곳에 두느냐에 따라서 "Label 표시"의 위치가 달리 나타납니다.

Q2(From KTUGOperate:21995):
\begin{equation}
f(x) = 
\begin{pmatrix}
f_1(x_1, \dots, x_N) \\
\vdots \\
f_N(x_1, \dots, x_N) \\
\end{pmatrix}
\begin{pmatrix}
i \\ %
v \\
e 
\end{pmatrix}
= 0
\end{equation}
\label{eq5.1} %<<<<<<<<<<<<<<

where $f$ is a function mapping the unknown vector $x$, a vector of real numbers of 
dimension $N$. The first question to ask is wether (\ref{eq5.1}) has a solution and, if 
과 같이 label 도 eq5.1 로, ref 도 eq5.1 로 했는데, 이상하게도 번호가 다르게 나오네요? 무엇이 잘못되었을까요?

A2(From KTUGOperate:22005): 이유는 간단합니다. \label{eq5.1}이 붙은 곳은 equation 환경 바같입니다. \label{eq5.1}를 equation 환경 내에 써야 equation의 번호를 가르킵니다. 현재는 \ref{eq5.1}를 썼을 때 \label{eq5.1}이 있는 곳의 장, 절, 소절 등의 번호를 가르킵니다.

4 섹션 참조 팁

from KTUGOperate:16274

문제상황:
report 클래스 원래 모양인,
제1장
제1절
1.1
1.1.1 
이런 형식을
제1장
제1절
1.
1.1
이런식으로 바꾸었는데요, 목차와 본문에는 잘 나오는데, 참조할 때 약 간의 문제가 생깁니다. 예를들어, 제4장 제2절 내용에서 제4장 제1절을 \ref{} 하면, 원래대로라면 4.2절 이렇게 나와야 하잖아요.
 모모모(\ref{}절 참조)
이렇게 입력하면, 화면에는
모모모(2.절 참조)
하고 나옵니다. 번호형식을 바꿔서 그런건가요...아무리 수정해봐도 앞에 큰 절 번호가 안 붙고, 뒤에 점이 안 없어집니다...

answered by 커꿈.

LaTeX Companion에 간단한 트릭이 있는데, 그걸 흉내내서 만들어 보았습니다. \ref{something}가 \label{something}과 같은 section에 있으면 subsection 번호만 refer하고, 다른 section에 있으면 section 번호까지 refer하는 코드입니다.

하지만 이 상태로는 subsection 1.1. 이 어디를 말하는지 금방 눈에 들어오지는 않네요. 코드를 조금 더 손보면 좋을 듯 한데...

개인적인 의견입니다만, subsection 정도는 "1.1"과 같이 표현하는 것도 좋을 것 같습니다.
%%-------------------------------------------------------------------

\documentclass{article}

\usepackage{ifthen}
\usepackage{varioref}

\renewcommand\thesubsection{\arabic{subsection}.}

\labelformat{subsection}{\protect\iscurrentsection{\thesection}#1}

\newcommand{\iscurrentsection}[1]{%
\ifthenelse{\equal{#1}{\thesection}}{}{#1.}}

\begin{document}
\section{First section}
Haha

\subsection{First subsection}\label{section:first}
Hoho

Subsection~\ref{section:first}

\section{Second section}
Hihi

\subsection{Second subsection}
herher

Subsection~\ref{section:first}

\end{document}

section.gif



^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2007-07-22 17:01:18
Processing time 0.0621 sec