2013-02-03 101 views
1

我正在使用Pandoc將文檔從LaTeX(XeTeX)轉換爲ReStructuredText。該文件有大量的索引條目,Pandoc不處理索引。索引條目在Pandoc轉換時被剝離,只留下條目的文本。所以,我需要的是在Pandoc轉換之後將索引條目轉換爲LaTeX文件中的ReST語法。在我的測試中,這樣的作品:Pandoc保留了索引條目,但是避免了反引號。我可以將它們刪除。下面是我手動操作時的樣子:用重構的文本索引語法替換乳膠索引語法

\index{Some index item} # The LaTex entry 
:index:`Some index item` # Modified for ReST format (still in the LaTeX file) 
:index:\`Some index item\` # Result after Pandoc conversion to ReST 

我可以在最終的ReST文件中用適當的反引號代替最終的反斜槓。我似乎無法弄清楚的是如何爲LaTeX文件中的替換創建可行的方法(Regex?)。最受歡迎的建議(包括關於更好地完成整個生產的建議)。

回答

1

看來你正在尋找替換

:index:`$1` 

其中$1是正則表達式的捕獲組([^}]*)參考匹配以下正則表達式

^\\index\{([^}]*)\} 

的條目。

您可以使用例如shell腳本自動執行此過程,也可以在文本編輯器中手動執行此過程。

請注意,上述正則表達式假定在{}內部沒有}

+0

感謝您的幫助。你的Regex完美運作。我深入瞭解這一點,似乎我仍然需要手動處理這些索引條目中的一部分。例如,正則表達式適用於獨立索引條目,但不適用於內聯條目(當然,還有幾種索引變體,如帶有分段語法,重點和其他內容的索引變體)。所以,至少我有一個開始。再次感謝。 – rosslaird

+0

@rosslaird。上面的正則表達式假定每個索引條目都在一行的開頭。如果不是這種情況,請刪除前導'^'。 – MikeM

+0

是的,我這樣做,並捕獲了更多的內聯條目。現在棘手的是獨立條目只有一個單詞,而內聯條目有重複的術語。所以我現在有許多版本的':index:'entry'entry'。我正在研究如何使用正則表達式來刪除第二個任期。 – rosslaird