KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
A man who fishes for marlin in ponds will put his money in Etruscan bonds.
FrontPage › PDFHyperLink
PDF / PDF 하이퍼링크

PDF 하이퍼링크를 위해서는 HyperRef 패키지를 이용한다.

목차

1 hyper-참조
1.1 \href 명령
1.1.1 \href 명령을 이용해서 url 링크하기
1.1.2 \href 명령을 이용해서 pdf 파일 링크하기
1.1.3 \href 명령을 이용해서 프로그램 실행시키기
1.1.4 기타 유용한 기능들
1.2 \hyperref 명령
1.3 \hypertarget\hyperlink
1.4 \url 명령
1.5 breakurl
2 Colorlink
3 TIP : link to external file
3.1 xr-hyper
3.2 xr-hyper 없이 외부 파일의 특정 위치 링크

1 hyper-참조

1.1 \href 명령

1.1.1 \href 명령을 이용해서 url 링크하기

\href{URL}{text}
  • URL은 Full URL이어야 한다. 예를 들면, http://www.ktug.or.kr/. 또, ~ 문자와 # 문자는 LaTeX의 사용방식으로 쓰이지 않고 URL의 일부로 받아들여진다.
  • baseurl 옵션을 설정한 경우라면 baseurl에 대한 상대 주소 입력이 가능하다.
    \hypersetup{baseurl={http://www.ktug.or.kr}}
    
    \href{document.php}{KTUG Documents}
    
  • baseurl을 설정할 때 \hyperbaseurl{URL} 명령을 쓸 수도 있다.

1.1.2 \href 명령을 이용해서 pdf 파일 링크하기

  • href 를 이용하여 인터넷 뿐만 아니라 로컬 디렉토리에 있는 파일도 연결하는 것이 가능하다. 로컬 디렉토리의 경우 상대 경로를 지정하는 것이 가능하다.
    • 상대 디렉토리를 지정하는 경우 경우 \usepackage[dvipdfm]{hyperref} 처럼 드라이버를 지정해 주어야 한다.
    • 실제 사용은 다음과 같다. 예제 파일을 보려면 \href{./example/heading1.pdf}{예제파일}를 참고하기 바란다
  • 이경우 pdf 파일만 링크가 된다. 임의의 파일이나 디렉토리를 링크하고 싶은 경우에는 \url 명령을 사용한다.
  • pdf 파일의 이름에 점이 두개 이상 있는 경우(예를 들어서 abc.tex.pdf)에도 \url 명령을 사용한다.

1.1.3 \href 명령을 이용해서 프로그램 실행시키기

  • KTUGOperate:14591참조
  • texdof hyperref 명령을 pdf 상에서 실행하고 싶은 경우의 예
    \documentclass{article}
    \usepackage[dvipdfm]{hyperref}
    
    \begin{document}
    
    Run external program, \href{run:texdoc#hyperref}{Click here}.
    
    \end{document}
    


  • python script 를 실행시키고 싶은 예
    \href{run:pythonw#test.py}{Python Code}
    
    • 결과는 파일로 저장하도록 리다이렉트해두었다가 필요하면 예컨대
      \href{run:notepad#result.txt}{View Result} 
      이런 식으로 볼 수 있게 할 수 있다.

  • 리다이렉션 명령은 여기서는 잘 되지 않는다. 즉, \href{run:dir > out.txt}{...} 와 같이는 되지 않는다. 그러므로, 예컨대 다음 코드 처럼 한다.
    \documentclass{article}
    \usepackage[dvipdfm]{hyperref}
    
    \begin{document}
    
    Run external program, \href{run:dir.bat}{Click here}.
    
    \href{run:notepad#out.txt}{View Result}
    
    \end{document}
    
    이것을 실행하기 위해서는 dir > out.txt 를 내용으로 하는
dir.bat 파일이 같은 디렉토리에 있어야 한다. 즉, 파일로의 리다이렉션은 프로그램(스크립트) 자체에서 구현되어야 한다.

1.1.4 기타 유용한 기능들

redirection 의 개념을 구현하는데 있어서 다음과 같은 방법도 있다.

\documentclass{article}
\usepackage{hangul}
\usepackage{sverb}

\begin{document}

%이 디렉토리의 파일들의 내용을 읽는다. 

\immediate\write18{ls -l > tmp.txt}
\verbinput{tmp.txt}

\end{document}

이 파일을 컴파일할 때는 다음과 같이 하여야 결과를 얻을 수 있습니다.

#> latex -enable-write18 foo

1.2 \hyperref 명령

이 명령은 주로 내부 명령으로 쓰이지만 필요하다면 다음 형식으로 사용하는 것이 가능하다.
\hyperref{URL}{category}{name}{text}
  • textURL#category.name을 참조하여 링크된다.

1.3 \hypertarget\hyperlink

임의의 텍스트 위치에 하이퍼링크될 타겟을 만들고 그것을 참조할 수 있다.
\hyperlink{myhptarget}{see MyTarget}
.........
\hypertarget{myhptarget}{text} will be referred and linked.

1.4 \url 명령

  • \usepackage{url}하지 말고 기존의 \usepackage[dvipdfm,colorlinks]{hyperref} 처럼 기존의 hyperref 패키지를 dvipdfm 드라이버를 옵션으로 사용한다.
  • \url 명령은 \href 와 비슷하지만 다음과 같은 일을 할 수 있다.
    1. pdf 파일 뿐만 아니라 임의의 파일을 링크할 수 있다.
    2. . 이 두개있는 pdf 파일도 링크할 수 있다. 예를 들어서 abc.tex.pdf 와 같은 파일을 링크할 수 있다.
    3. 실행파일을 실행시킬 수 있다.
      • XP SP2 에서는 Registry 에 다음과 같은 값을 추가해야만 한다.
        HKCU\Software\Microsoft\Internet Explorer\Main
        Disable_Local_Machine_Navigate = 0 (REG_DWORD)
        
      • python 스크립트와 같은 스크립트를 실행시키기 위해서는 .bat 파일에서 python script 를 부르게 만든다음 이를 \url 로 링크하면 된다.

1.5 breakurl

  • dvips 드라이버는 \url 명령 등의 인자로 들어오는 하이퍼링크를 개행해주지 못한다. 이 문제를 해결하기 위한 패키지

2 Colorlink

HyperRef 패키지의 옵션 또는 \hypersetup 옵션으로 colorlink가 켜져(true) 있다면 링크되는 위치의 색상을 설정할 수 있다. 다음은 링크 칼러 관련 옵션과 기본값이다.

색상 확장 옵션 기본값 Description
linkcolor red normal links
anchorcolor black anchor text
citecolor green bibliographic citations
filecolor magenta URLs which open local files
menucolor red Acrobat menu items
pagecolor red links to other pages
urlcolor cyan linked URLs

\hypersetup{%
   colorlinks=true,%
   citecolor=black,%
   pagecolor=black,%
   urlcolor=red,%
}

3 TIP : link to external file

3.1 xr-hyper

외부 PDF 파일의 특정 위치를 참조(\ref, \pageref)하려 하는 경우 사용합니다. KTUGOperate:8270.

외부 PDF 파일이 HyperRef을 이용해서 작성되었다면, xr-hyper.sty를 써서 문서간 참조가 가능합니다. xr-hyper.sty는 hyperref 패키지와 함께 배포됩니다.
<!> 이 문서간 상호참조 기능은 HyperRef의 드라이버에 민감합니다. 즉, DVIPDFMx로 PDF를 만들 것인지, PDFLaTeX을 이용할 것인지 아니면 GhostScript의 ps2pdf를 이용할 것인지를 미리 옵션으로 지시해두도록 합니다.

%%%-----참조되는 문서 linked.tex-----
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{T2}
\begin{equation}
foo=bar
\end{equation}
\begin{equation}
1+1=2\label{eq:2}
\end{equation}
\end{document}

이 문서로부터 linked.pdf를 얻었고, 그것이 같은 디렉토리에 있다면, 다음과 같은 참조하는 문서 main.tex을 작성합니다.
/!\ 만약 온라인 문서를 참조하려 한다면 주석처리한 행과 같이 그 문서의 위치를 지정할 수 있습니다.

%%======main.tex=========
\documentclass{article}
\usepackage{xr-hyper}
\usepackage[dvipdfm,bookmarks=false]{hyperref}
   %%% 반드시 드라이버를 밝혀줌. 이 드라이버 지정 옵션이 없으면 PDFLaTeX을 이용해야 함.
\externaldocument[x-]{linked}
   %%% [x-]를 붙이는 이유는 같은 문서 내에서 동일한 reference가 있을 경우 혼동을 피하기
   %%% 위해서이다.
%\externaldocument[x-]{linked}[http://myhost.mydomain/mydocument/linked.dvi]
   %%% 온라인 문서라면 위와 같이 URL을 모두 적어준다.
\begin{document}
\section{CROSS-DOCUMENT hyperlink}
\begin{equation}
1+0=1\label{eq:1}
\end{equation}
See \ref{eq:1} and in the other document \ref{x-eq:2}.
   %%% 외부 문서의 label이 eq:2 라면 이것을 부를 때 \ref{x-eq:2}와 같이
   %%% 호출한다. 위의 \externaldocument의 [x-] 선택인자를 지정하지
   %%% 않았다면 이 문서 내에 eq:2가 없어야 하고, 단순히 \ref{eq:2}와
   %%% 같이 부를 수 있다.
\end{document}

이제 main.pdf로부터 linked.pdf를 바로 링크할 수 있게 되었습니다.

3.2 xr-hyper 없이 외부 파일의 특정 위치 링크

Q. 그러니까 xr-hyper를 이용하지 않고 외부에 있는 2 개의 pdf의 특정 페이지나 절을 링크할 수 있으면 합니다.(KTUGOperate:11899)

A. 외부 PDF가 hyperref으로 만들어진 것이라면 가능할 듯합니다.

예제입니다. b.pdf에서 a.pdf를 부르는 것입니다.
%%-------------a.tex------------------------
\documentclass{article}
\usepackage{hangul-k}
\usepackage[dvipdfm,bookmarks=false]{hyperref}
\usepackage{color}
\begin{document}
\pagecolor{blue}
\section{참조되는 문서}
\hypertarget{omom}{엄마야} 나는 왜 자꾸만 보고 싶지
엄마야 나는 왜 자꾸만 생각나지

\clearpage
\pagecolor{red}
\section{참조될 문서 두번째 절}\label{sectwo}
\hypertarget{yourtarget}{여기가 참조점}
아마 나는 아직은 어린가봐 그런가봐
엄마야
엄마야

\clearpage
\pagecolor{green}
\hypertarget{hereistarget}{요기를 보세요}
하나둘셋
\end{document}
%%--------------------------------------------
%%-------------b.tex--------------------------
\documentclass{article}
%\usepackage{xr-hyper}
\usepackage{hangul-k}
\usepackage[dvipdfm,bookmarks=false]{hyperref}
%\externaldocument{a}
\begin{document}
\section{xr-hyper 없이 참조하기}
이 대목에서 우리는 \href{a.pdf#section.2}{외부문서의 제2절}을
참조하려 한다.
\textsf{xr-hyper} 없이 참조하는 것이 과연 가능하겠는가?
\begin{itemize}
\item 초록: \href{a.pdf#hereistarget}{요기를} 보세요라고 쓰여 있나요?
\item 빨강: \href{a.pdf#yourtarget}{여기는} 또 어떨는지?
\item 파랑: \href{a.pdf#omom}{맨처음 절}로 가보세요.
\end{itemize}

\end{document}
%%---------------------------------------------



^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-01-09 04:04:32
Processing time 0.0580 sec