2010-03-04 5 views
2

이것은 이상한 것입니다. 몇 가지 흥미로운 해결 방법을 사용하여 조금이라도 기능을 수행해야했지만 또 다른 걸림돌이 있습니다.LaTeX indexentry에 해시 마크가 newcommand로 새롭게 추가되었습니다.

커다란 .ind 파일 (catenated, 작은 개별 .idx 파일의 makeindex를 사용하여 만든 색인)을 사용하는 별도의 문서를 만드는 데 어려움을 겪었습니다. 아이디어는 결국 인덱스 된 데이터가있는 하위 문서 및 페이지 번호

이를 위해

, 나는 모든 인덱스 항목을 수집하는 명령을 정의했다했습니다

\newcommand{\myindexer}[3] 
    {\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf}}} 

결과를 그대로 myindex.idx 파일의 인덱스 항목 :

\indexentry{IndexedItemA : 55.iii!\href{Volume 1.pdf}{Volume 1.pdf}}{30}} 
\indexentry{IndexedItemB : 23.vi!\href{Volume 3.pdf}{Volume 3.pdf}}{114}} 

그러나 대상 PDF에 대한 하이퍼 참조를 만드는 데 문제가 있습니다.

\href{FILENAME#page.XX}{Link Text} 

wihch 수단 : 특정 페이지에서 PDF를 열려면, 다음과 같은 형식으로합니다 (hyperref 패키지의 #의 page.xx 구문을 지적이 보드에 다른 사람 덕분에) 고용해야 내가 두 번을 사용 을 발견

\newcommand{\myindexer}[3] 
    {\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf\#page.\thepage}}} 

또는 일부 조각에 따라 : 해시 마크 myindex이 같은 가능성 이스케이프 해시 마크 #을 사용하여 선언 될 때의 \ newcommand의 출력 스트림에 포함 될 필요가 있다고 -hash 기호 :

상기 복수의 문서 라텍스 소스의 편집 중에 다음 오류3210
\newcommand{\myindexer}[3] 
    {\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf##page.\thepage}}} 

이전 결과 색인 :

! Illegal parameter number in definition of \@gtempa. 
<to be read again> 
        \thepage 
l.31 \myindex{IndexedItemA}{55}{iii} 

동안 같은 결과 myindex.idx 파일의 불필요한 슬래시 후자 결과

\indexentry{IndexedItemA : 55.iii!\href {Volume 1.pdf\#page.33}{Volume 1}}{33} 

이 경우 대상 PDF가 제대로 열리지 않습니다.

이런 식으로 PDF의 하이퍼 링크를 지원하기 위해 newcommand가 어떻게 해쉬 마크를 출력 할 수 있습니까?

답변

0

\href\protect에 포장하면 어떨까요?

+0

'\ thepage'를 즉시 확장해야합니까? –

0

당신은 #의 catcode 및 % 교체 할 수 있습니다 :

\catcode`\%=12 \catcode`\#=6

: 보통 catcodes을 복원, 그 후

\newcommand{\myindexer}[3] 
    {\index{myindex}{%1 : %2.%3!\href{\doctitle.pdf#page.\thepage}}}

:

\catcode`\%=6 \catcode`\#=12

그런 다음 매개 변수를 표시하는 %를 사용합니다 이것은 다소 번거롭기는하지만, 일반적인 이스케이프 메커니즘을 방해하는 경우에도 작동해야합니다. \myindexer 점을 사용하면 \href을 발췌 할 수 있습니다.