宋高僧傳 精校版 XML 轉 PDF 作業備忘

出自DILA Wiki
於 2012年11月19日 (一) 14:23 由 imported>Ray 所做的修訂 (新頁面: 以 Python 程式將 XML 轉為 OpenOffice Writer ODT 檔格式,再使用 doPDF 軟體,於 OpenOffice 中以「列印」功能產生 PDF 檔。 =為何不使用 OpenOffice「匯出...)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

以 Python 程式將 XML 轉為 OpenOffice Writer ODT 檔格式,再使用 doPDF 軟體,於 OpenOffice 中以「列印」功能產生 PDF 檔。

為何不使用 OpenOffice「匯出成 PDF」功能?

目前在 MS Windows 7 + OpenOffice 3.4.1 環境下,如果使用 OpenOffice「匯出成 PDF」的功能來產生 PDF 檔,含有 Surrogate 字元的 5碼 Unicode 不會正確呈現,所以退而求其次,使用「列印」功能。

專名號 (底線)

OpenOffice Writer 可以在人名、地名等專有名詞下加底線(專名號),但是離文字太近,影響閱讀,底線也太粗,又沒有功能可以調整文字與底線之間的距離與底線的粗細。 目前找到的方法不是很理想,但是可以暫時解決這個問題。

方法是將整個段落的文字位置都設為「上標」,「相對的字型大小」設為 100%,「上昇/下降值」設為 15%,在 ODT 檔裡面的 style.xml 設定語法如下:

<style:text-properties style:text-position="15% 100%">

這樣還不行,因為文字往上移了,但是底線也跟著往上移,沒有達成所要的效果。
取巧的方式是在人名旁邊加一個空格,這個空格也有底線,但是它的「字元位置」不是「上標」而是「標準」,這樣一來,底線就會因為這個空白被固定在下方,而不是跟著上標文字上移。
這樣文字與底線之間的距離就會拉開了,但是空格太大的話,視覺效果也不好,所以將這個空白的「寬度顯示比例」設為 10%,
另外,底線我們也覺得太粗,而這個空格的 font-size 會影響底線的粗細,所以設為 6pt,語法如下:

<style:style style:name="underline_space" style:family="text">
  <style:text-properties 
    style:text-position="0% 100%" 
    fo:font-size="6pt" 
    style:text-underline-style="solid" 
    style:text-underline-width="auto" 
    style:text-underline-color="font-color" 
    style:font-size-asian="6pt" 
    style:font-size-complex="6pt" 
    style:text-scale="10%"/>
</style:style>

這樣已經接近完成了,如果人名或地名沒有跨行的話就沒問題,如果跨行的話,還是有問題。
如果空白是加在人名的後面,那麼跨行後的人名底線是正確的,但是跨行前的人名底線又跟文字黏在一起了。
所以在每個人名、地名的前後都加上空白,這樣即使人名、地名跨行也沒問題了。
當然這是指人名、地名只跨兩行的情況,如果人名、地名跨三行,那就麻煩了,中間那一行因為沒有空格把底線固定在下方,文字就又會與底線黏在一起。
目前只能希望不會有這樣跨三行的人名、地名了!

另外也考慮到 Adobe Indesign 有功能可以調整底線與文字之間的距離,或許由 XML 轉為 Adobe Indesign 可以接受的格式也是一種可能性,不過目前還沒有在這方面多做測試。

缺字圖檔

OpenOffice Writer 可以插入 SVG 圖檔,但是目前我們使用 Inkscape 0.48.2 製作的 SVG 缺字圖檔,某些字在各種 Browser 都可以正確呈現,但是插入 OpenOffice Writer 之後卻不能正確呈現。原因不明。

目前暫時的解法是使用 Indesign 讀入該 SVG 缺字圖檔,再另存成 SVG,插入 OpenOffice Writer 就沒問題了。