2015-09-23 164 views
4

在Emacs中,關於UTF-8,一切似乎都工作得很好。問題是,我有時想打印出一個包含Unicode字符的電子郵件(我使用mu4e作爲我的MUA)。Emacs:打印一個UTF-8緩衝區

我通常會碰到這樣的mu4e:view緩衝以下:

From: A Person 
    To: Me 
    Subject: Notes on Chapter 9 
    Date: Tue 22 Sep 2015 13:46:44 CEST 
    Maildir: /mymaildir/INBOX 
    User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) 

     • 「for open platforms」 -> 「for \textit{open platforms}, as defined in 
     [123]. Such platforms include frobbing devices and home-assistant 
     foobars.」 

的問題是,當我做M-xps-print-buffer,在紙面上的物理輸出是這樣的:

... 

     ? ?for open platforms? -> ?for \textit{open platforms}, as defined in 
     [123]. Such platforms include frobbing devices and home-assistant 
     foobars.? 

有人知道我可以如何打印,以便它看起來像我的屏幕上一樣?在一些Startpaging/DuckDuckGoing之後,我還沒有設法找到任何指針。

回答

1

有一個簡單的解決方案,可能會或可能不會令人滿意的結果。 Emacs知道如何使用GNU Intlfonts,它允許打印非ASCII字符。

Intlfonts是位圖字體,而不是最漂亮的字體。它們可能適用於ASCII文本,它們中只有偶爾的非ASCII字符(引號,項目符號等),但對於使用非拉丁字母的文本而言,結果並不值得高興(文本正確顯示,只是不漂亮)。

要試一試,請先安裝字體。要做到這一點取決於操作系統及其分佈;例如爲Ubuntu:

sudo apt-get install emacs-intl-fonts 

然後調整以下的Emacs設置:

(setq ps-multibyte-buffer :bdf-font-except-latin) 
(setq bdf-directory-list "/usr/share/emacs/fonts/bdf") 

第一變量指示的Emacs使用Intlfonts用於非拉丁字符。第二個變量指定字體的位置(確保將其設置正確,否則Emacs將默認忽略該設置)。

雖然有些源(例如M-x describe-variable ps-mule-font-info-databasethesepages)表明可以配置ps-print以使用Intlfonts以外的方式打印非ASCII字符,但我找不到正確的配置。請讓我知道,如果你找到一個。

順便說一下,調用lpr-buffer直接似乎打印國際字符就好了。

+0

很好,謝謝!嘗試使用'lpr-buffer'後,我甚至不需要使用Intlfonts。它能夠很好地完成這項工作('è'仍然是一個盒子,但是像''「'這樣的字符可以很好地打印出來)。 – RogerTheDragon

+0

贊成lpr緩衝區 – dat

0

mu4e的另一種方法是使用瀏覽器中的視圖(視圖中的'V'),然後從那裏打印出來。

或者,如果您有msg2pdf(mu的可選部分),則將其轉換爲pdf(視圖中的'a v'),然後在某個查看器中打開生成的PDF,而不是打印。

(以下功能可以很方便的爲)

(defun xdg-open() "Open current file with xdg-open." (interactive) (when (buffer-file-name) (shell-command (format "xdg-open %s" (shell-quote-argument (buffer-file-name))))))