[英]Inclusion of hash marks in a LaTeX \indexentry aliased with a \newcommand
這是一個奇怪的。 我不得不做一些有趣的變通辦法才能使它正常工作,但是我們還有另一個絆腳石。
我一直在努力創建一個單獨的文檔,該文檔使用一個大的.ind文件(使用makeedindex從連接的,小的單個.idx文件中創建的索引),我的想法是最終將只有一個文檔來指示SUB文檔和索引數據所在的頁碼。
為此,我必須定義一個命令來收集所有索引條目,如下所示:
\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的超級引用。 為了在特定頁面上打開PDF,需要采用以下格式(感謝此板上的其他人指出了hyperref軟件包中的#page.xx語法):
\href{FILENAME#page.XX}{Link Text}
wihch表示在聲明myindex時,\\ new命令的輸出流中需要包含一個哈希標記,可能使用轉義的哈希標記#作為:
\newcommand{\myindexer}[3]
{\index{myindex}{#1 : #2.#3!\href{\doctitle.pdf\#page.\thepage}}}
或根據我在某個地方使用雙哈希標記的某些片段作為:
\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無法正確打開。
知道如何以這種方式強制newcommand輸出哈希標記以支持PDF的超鏈接嗎?
將\\href
包裹在\\protect
呢?
您可以交換catcode的#和%:
\catcode`\%=6 \catcode`\#=12
然后使用%標記參數:
\newcommand{\myindexer}[3] {\index{myindex}{%1 : %2.%3!\href{\doctitle.pdf#page.\thepage}}}
之后,恢復通常的目錄代碼:
\catcode`\%=12 \catcode`\#=6
這有點笨拙,但是即使某些東西干擾了通常的轉義機制,它也應該起作用,並且允許在使用\\myindexer
時擴展\\href
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.