2016-08-29 136 views
3

我試圖將一些課程筆記放在一起作爲PDF,並且無法正確顯示某些Unicode字符。某些Unicode字符在RMarkdown中不顯示PDF輸出

使用xelatex乳膠引擎對文檔進行渲染是必需的(使用默認引擎導致的錯誤是由於無法識別的字符),但是,只有第一個Unicode字符(大寫字母delta)才能正確顯示。

例如,使用rmarkdown時render()函數來呈現以下.Rmd文件:

--- 
output: 
    pdf_document: 
    latex_engine: xelatex 
--- 

- works - Δ 
- doesn't work - ⌘ 

所得PDF僅示出了第一個Unicode字符(大寫增量),而不是後來一個(循環方)。

enter image description here

我知道有different character subsets組成完整的UTF-8字符編碼,所以它看起來也許只有更基本的子集的支持。

爲了確定,我使用iconv -f UTF-8 your_file -o /dev/null [1]檢查了文件的編碼,它確實看起來是一個有效的UTF-8文檔。

最後,該文檔使用默認選項呈現爲HTML,因此該問題特定於PDF輸出。

任何想法如何讓第二個字符呈現爲PDF?

系統信息

  • Linux 64位
  • ř3.3.1
  • rmarkdown 1.0
  • pandoc 1.17.2
  • 的XeTEX 3.14159265-2.6-0.99996
  • 區域設置:en_US.UTF-8
+1

您確定該字符沒有進入文檔而不是您的PDF查看器無法繪製它嗎? – drhagen

+0

@dhagen好建議。我剛剛在幾個不同的PDF閱讀器上測試了它,但是,它們都沒有提供這個角色。似乎是別的事情正在進行。 –

回答

5

問題可能是默認字體沒有該字符。你需要找到一個有它的字體。在Linux上,fc-list列出了您的計算機上可用的字體。選擇一個,並把它添加到您的YAML前面的問題:

--- 
output: 
    pdf_document: 
    latex_engine: xelatex 
mainfont: FreeMono 
--- 

- works - Δ 
- doesn't work - ⌘ 

在這裏,我使用FreeMono,這是第一個我發現,有⌘的性格,但有可能是一個更好的。

+1

這樣做!我仍在瀏覽字體以找到適合的非字體字體,但到目前爲止,我已將「DejaVu Sans」用作「mainfont」時已經工作。感謝您的解決方案! –