| ||||||||
adm | Find | login register |
在下使用 mactex 2008(texlive 2008 at mac),並為它新增了 type 1 中文字型。其中有一必須過程,是需要在 /usr/local/texlive/2008/texmf-config/dvips/config/config.ps 中加入一行 「p +font-name.map」。 在下不解的是, mactex 2008 已經預先附加了其它 type 1 中文字型,例如 /usr/local/texlive/2008/texmf-dist/fonts/map/dvips/arphic 中有 bkaiu.map bsmiu.map gbsnu.map gkaiu.map 這四個 map 檔,但我在 /usr/local/texlive/2008/texmf-config/dvips/config/config.ps 卻找不到 dvips 引入這些 map 檔的相關內容,如類似「p +bkaiu.map」之類的。 另外,我也在 /usr/local/texlive/2008/texmf-dist/dvips/arphic 找到了 config.bkaiu config.bsmiu config.gbsnu config.gkaiu 這四個檔案,內容分別是 p +bkaiu.map 等 dvips 引入 map 檔的敘述。但我測試過,這四個檔之內容與 dvips 的過程無關。 所以我的問題是,到底這些消失的「p +bkaiu.map」到底寫在哪裡?我也用 find /usr/local/texlive/2008/ | xargs grep bsmiu\.map 硬搜「bkaiu.map」過,但沒發現什麼:
盼高手指點,非常感謝。 | |||||||||||||||
| |||||||||||||||
感謝指點。 我後來在 /usr/local/texlive/2008/texmf/fonts/map/dvips/updmap/ 中的 psfonts_pk.map psfonts_t1.map psfonts.map 找到了一連串 bkaiu.map 中才有的內容,猜想這三個檔與消失的「p +bkaiu.map」有關吧! 雖然我嘗試著要讓我自己加入的 CJK Type 1 中文字型不用於 config.ps 中加上「p +xxx.map」,但還是沒辦法。沒有這行字,dvips 時會找不到字體。sudo updmap-sys --enable xxx.map 的動作也確實做了,但就是不行哩。 等我確定 psfonts_pk.map psfonts_t1.map psfonts.map 這三個檔的功能之後,再來告訴大家~感謝感謝。 | |||||||||||||||
是的,這是 updmap 跑出來的結果。
如果用的是 debian/ubuntu 系列的話,可能是
updmap --enable Map ${FONT}.map 我不確定是哪一種,可能要試一下。可以參考一下 man updmap。 用 updmap 的好處是方便管理,而且會自動轉出 pdflatex/dvipdfm[x] 的 map 檔出來,壞處是程式執行慢到爆!
請千萬不要手動去修改,常常會後悔。
edited: 1
| |||||||||||||||
感謝您的回應。我上次的 post 是沒仔細地把 updmap 的指令行打清楚,可能造成您的誤解,請見諒。 man updmap-sys 中,找到詳細的做法是:--enable Map=mapfile,而我之前下的指令都是沒有等號的,所以我又重新下了一次 sudo updmap-sys --enable Map=font-name.map,但結果似乎還是一樣的:沒有「p +font-name.map」會過不了 dvips,錯誤之處一直都一樣: kpathsea: Running mktexpk --mfmode ljfour --bdpi 600 --mag 2+44/600 --dpi 1244 cwtexming4e 其中 cwtexming4e 是我自定的 type 1 中文字體之一。 雖然如此,事情還是有進展啦。我在 updmap 後看到以下幾個重要的 output: updmap: Generating output for ps2pk... 很明顯地告訴我,dvips 是聽 /usr/local/texlive/2008/texmf-var/fonts/map/dvips/updmap/psfonts_t1.map 的話的(若不用點陣字),而我也在這個檔案中找到我自定的中文 type 1 字體之「font-name.map」的所有內容。然而,沒有「p +cwtexming.map」還是不能 dvips。 也許,我還是把我建中文字體的過程說明一下好了,說不定問題是在這裡。以下是大致上的內容:
之後就可以使用 cwtexming 了,以 latex + dvips +ps2pdf 編譯。 這一連串的 post 的出發點是,我希望最大化地保留 /usr/local/texlive/2008/ 的原樣,不要在裡面建太多自己的東西,如中文字體。要建自己的東西都建到 /usr/local/texlive/texmf-local/ 這個實體路徑之內。原因是,我怕 tlmgr 會和我自己建在 /usr/local/texlive/2008/ 打架,而且自己的東西放一起也方便備份。目前,除了 config.ps 這個問題還沒搞定就是了,其它所有的檔案都在 /usr/local/texlive/texmf-local/ 中乖乖坐好。 非常感謝之前李先生耐心地回應。唉,這個討論系列似乎已經被我搞成鑽牛角尖了。而且,這世界上 tex distribution 又那麼多種,大家都不一樣,還真是有點麻煩。但至少 updmap 已經可以一次控制 dvips pdftex dvipdfm 了(但 dvipdfmx 還沒功能全開,像 cid-x.map),而且 texlive 2008 又有 tlmgr 可以做套件控管,應該是進步很多了我想。 | |||||||||||||||
請使用 updmap 設定 dvips 使用 Type 1 字型。 另外,何不使用已經製作好的呢? ftp://cle.linux.org.tw/tex/cjk/fonts/
把 local 設定寫入 $TEXMF/texmf-local/web2c/updmap-local.cfg 然後執行 tlmgr generate updmap。 不過,因為我不願加裝 perl/tk,所以我不常使用 tlmgr,細節部份可能要多試一下。 edited: 1
| |||||||||||||||
我沒有使用李先生您製作的 Type 1 cwtex 字型而自己轉檔,是因為我想直接從頭操作來學習,又剛好原 cwtex TTF 中的中文全型句點是我想要的樣子(字寬如半形般),所以就延用下去了。不過真的轉了好幾天的檔。 至於您說到把 local 設定寫入 $TEXMF/texmf-local/web2c/updmap-local.cfg 然後執行 tlmgr generate updmap 一事,我要消化消化。有消息再來報告分享。真謝謝您再三的回應。 | |||||||||||||||
目前新的 cwt1 有兩種標點符號可用。如果想讓全型句點字寬變小只要修改一下字型或者由 macro 控制就可以了。
意思就是把字型就裝在 texmf-local。只是 map 檔的對應寫入 updmap-local.cfg(沒有這個檔請自行建立),執行 tlmgr generate updmap 後會把內容附在系統 updmap.cfg 檔。這樣下次更新 TeX Live 就可以保有舊安裝的字型(當然還要重執行過 tlmgr generate updmap)。 | |||||||||||||||
我大約猜到是什麼問題了。這可能是用 root 去執行 updmap.sys,然後一般使用者去編譯,而 dvips 找不到對應的 Type 1 字型,變成只有 root 能成功編譯。 很大的原因是這位使用者本身在家目錄已經有建立 updmap 資料,這時雖然 root 已經把系統的 updmap 更新了,但 dvips/kpathsea 只會去找第一個找到的 psfonts.map 檔,因此無法利用系統上已更新的資料。可以使用 kpsewhich psfonts.map 看是找到哪一個。 解決的方法是,在使用者的 updmap.cfg 加上對應資料,例如 Map xxx.map,然後重新執行 updmap 讓他更新使用者的對應資料。 我不清楚是否還有其他更方便的方式,這點對使用上的確是很不方便,常常會弄錯。 | |||||||||||||||
您說的完全命中!太厲害了。 在我把 ~/.texlive2008(這是一般使用者的 texmf-config/ 和 texmf-var/)整個清掉後,就可以在沒有「p +xxx.map」的前題下通過 dvips 了! 我現在檢查發現,updmap 是更改 ~/.texlive2008/texmf-var/fonts/map/dvips/updmap/,而 sudo updmap-sys 是更改 /usr/local/texlive/2008/texmf-var/fonts/map/dvips/updmap/。 沒錯,我之前的 updmap 都是「sudo updmap-sys」,所以都只是更改了 /usr/local/texlive/2008/texmf-var/fonts/map/dvips/updmap/psfonts_t1.map 而沒更改 ~/.texlive2008/texmf-var/fonts/map/dvips/updmap/psfonts_t1.map。看來,以後要做 updmap 的動作,應該要 updmap 和 sudo updmap-sys 都做一做,比較穩當。 問題全解決了!真心感謝李先生。 | |||||||||||||||
一般使用者,還是得手動加入使用者的設定檔中才行,或者 updmap 跑一下這個新的 map 檔。 總之這個問題 TeX Live 那邊應該還會想其他的方式來處理,目前的方式彈性似乎是不夠。 |
| ||||||||
adm | Find | login register |