簡體   English   中英

在以\\ newcommand為別名的LaTeX \\ indexentry中包含哈希標記

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM