本文由asciidoctor轉docbook,再由pandoc轉markdown而來
簡述
asciidoctor-pdf是Asciidoctor一個使用Prawn將asciidoc檔案轉換成pdf的插件,由Asciidoctor組織開發維護,托管在GitHub上,本文將簡單介紹下這個插件的使用,部分內容來源于官方,
安裝
使用gem安裝
$ gem install asciidoctor-pdf
語法高亮支持
Rouge (preferred, minimum version: 2.0.0)
$ gem install rouge
Pygments
$ gem install pygments.rb
CodeRay
$ gem install coderay
啟用語法高亮,只需要在.adoc檔案頭部填寫如下內容即可:
:source-highlighter: rouge
使用
基本命令,轉換asciidoc成為pdf
$ asciidoctor-pdf basic-example.adoc
$ # 這兩個命令是等效的,只不過上邊的命令更加簡潔
$ asciidoctor -r asciidoctor-pdf -b pdf basic-example.adoc
這里需要說明一下,如果檔案中包含中文,初次轉換的時候會出現亂碼的問題,解決方式請看中文亂碼問題章節,
我是占位符
后續新增內容區間
問題
中文亂碼問題
如果檔案中包含中文,初次轉換的時候會出現亂碼的問題,這里簡單介紹下asciidoctor-pdf的默認主題,如果查閱了asciidoctor-pdf的幫助檔案,就會知道他支持自定義主題的,中文亂碼的原因也是由于默認主題中使用了非中文字體導致的,需要添加中文字體,這里有兩種解決方式可供選擇:
- 創建專案/用戶主題
專案和用戶的創建方式一樣,不同的是二者存盤的位置不一樣,用戶的存盤在一個固定檔案夾,比如~/.config/adoc,只要使用命令生成的時候填寫了正確的路徑即可,
-
在adoc所在檔案下新建 fonts檔案夾,將中文字體復制到 fonts檔案夾中
-
復制asciidoctor-pdf安裝目錄中的
data/themes/default-theme.yml到當前目錄,或者新建一個 theme.yml -
編輯修改
default-theme.yml內容,主要節點:
font:
catalog:
song: # 宋體,請保證fonts檔案中包含如下字體
normal: STSONG.TTF
bold: STSONG.TTF
italic: STSONG.TTF
bold_italic: STSONG.TTF
base:
# 設定字體
font_family: song
literal:
font_family: song
- 生成pdf
$ asciidoctor-pdf -a pdf-style=default-theme.yml -a pdf-fontsdir=fonts test.adoc
- 默認主題
查看../bin/asciidoctor-pdf原始碼,看到他實際使用的是../../lib/asciidoctor/pdf.rb,我們再查看下這個ruby檔案,發現這個又重新定位到../asciidoctor-pdf檔案夾,即../lib/asciidoctor-pdf,其中包含了 theme_loader.rb,繼續查看這個檔案,閱讀原始碼之后,發現默認會先加載主題data\themes\base-theme.yml,如果這個不存在會加載data\themes\default-theme.yml,也就是說base-theme.yml的優先級比default-theme.yml高,我們需要更改base-theme.yml內容,主要修改內容同創建專案/用戶主題 章節是一樣的,修改完成之后,此后只需要執行:
$ asciidoctor-pdf test.adoc
或者我們可以修改default-theme.yml,或者創建自己的主題檔案,此后生成需要指明主題檔案:
$ asciidoctor-pdf -a pdf-style=default-theme.yml test.adoc
如果以上兩種解決方法不合你心意,那你可以參考下asciidoctor-pdf-cjk-kai_gen_gothic這個專案,這是一個asciidoc-pdf的主題專案,主要用于支持CJK [1],支持中文簡體、繁體、韓語、日語等,
[1] 中日韓統一表意文字(CJK Unified Ideographs)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275353.html
標籤:其他
下一篇:HO引擎近況20210413
