2015-01-27

InDesign Script: 註標 字元樣式 特例處理

在使用 InDesign Script 的時候,註腳的註標字元樣式可以使用 FootnoteOption 的 footnoteMarkerStyle 來控制,一改就會套用到所有的註標,但是在某些情況下需要對某個特定的註標做個別設定。

例如,在文件裡的人名都使用底線來標示,這時如果在人名之中有個註腳,就會變成這樣:
D
人名的底線被切開了,而我們希望它的底線能夠連在一起,於是我們另設了一個字元樣式叫做 footnote-anchor-underline,設定它是有底線的,並在底線選項裡將寬度設為 0.6點,偏移量設為 8.2點,這樣可以讓註標的底線向下偏移,與人名的底線對齊。

這個做法在 InDesign 裡手動操作成功了,然後需要使用 Script 來自動處理,用下面的程式碼來找出所有註標:
app.findGrepPreferences.findWhat = "(?<=.)~F";
matches = doc.findGrep();
使用 GREP 來找東西,方法可以參考 InDesign Help 的 Search using GREP expressions。表示式裡所用的語法可以參考:Metacharacters for searching。其中的 ~F  表示要搜尋的是 Footnote Reference Marker,也就是註標。但是這會連註腳裡的註標也一起找到,而我們只要內文裡的註標,所以找到的東西前面要有個任意字元,於是在表示式裡用了 Positive Lookbehind:(?<= )。設定好要找的條件之後,使用 Document 物件的 findGrep 找出符合的東西。

現在 matches 是找到文件裡所有註標 (內文裡的),它是一個由 Text 物件組成的矩陣,我們要把最後一個新加上的註標 matches[matches.length-1] 套用新的字元樣式:
var c_style = doc.characterStyles.item('footnote-anchor-underline');
matches[matches.length-1].applyCharacterStyle(c_style);
大功告成!

InDesign Script 參考資料:Adobe InDesign CS6 (8.0) Object Model,裡面有一個 Class Index,可以很方便找到所需的物件說明。

2015-01-07

MDict 詞典 mdx 檔轉成純文字檔

convert mdict to text
convert mdx to text

網路上找到最簡單的方法是使用 GetDict.exe,但是能找到的下載點得到的都是廣告軟體,最後還是使用 readmdict.py 成功將 mdict 檔轉出 txt,方法如下:

於 windows 環境下安裝 python 2.7

安裝 python-lzo
http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-lzo
下載 readmdict.py
https://github.com/ilius/pyglossary/blob/master/pyglossary/readmdict.py
執行 readmdict.py -x YourDictName.mdx

得到 YourDictName.txt