如何在 Linux 命令行上使用 pandoc 轉換文件
已發表: 2022-01-29 您可以在 Linux 上使用pandoc
在 40 多種文件格式之間進行轉換。 您還可以使用它來創建一個簡單的文檔即代碼系統,方法是用 Markdown 編寫、存儲在git
中,並以任何支持的格式發布。
文檔轉換和文檔即代碼
如果您有pandoc's
多種文件格式中的任何一種文檔,那麼將其轉換為其他任何一種格式都是小菜一碟。 這是一個方便的工具!
但是,當您將pandoc
用作簡單的 docs-as-code 系統的基礎時,它的真正威力就變得顯而易見了。 文檔即代碼的前提是採用軟件開發的一些技術和原則,並將其應用於編寫文檔,尤其是軟件開發項目。 不過,您可以將其應用於任何類型的文檔的開發。
軟件開發人員使用他們最喜歡的編輯器或集成開發環境 (IDE) 來編寫他們的程序。 他們鍵入的代碼保存在文本文件中。 這些包含程序的源代碼。
他們使用版本控制系統或 VCS(Git 是最流行的)來捕獲源代碼在開發和增強時的更改。 這意味著程序員擁有所有版本的源代碼文件的完整歷史記錄。 他或她可以快速訪問文件的任何先前版本。 Git 將文件存儲在存儲庫中。 每個開發人員的計算機上都有一個本地存儲庫和一個通常在雲託管的中央共享遠程存儲庫。
當他們準備好生成程序的工作版本時,他們使用編譯器來讀取源代碼並生成二進制可執行文件。
通過使用基於文本的輕量級標記語言編寫文檔,您可以使用 VCS 對您的寫作進行版本控制。 當您準備分發或發布文檔時,您可以使用pandoc
根據需要生成盡可能多的不同版本的文檔,包括基於 Web 的 (HTML)、文字處理或排版(LibreOffice、Microsoft Word、TeX) 、便攜式文檔格式 (PDF)、電子書 (ePub) 等。
您可以從一組版本控制的輕量級文本文件中完成所有這些工作。
安裝 pandoc
要在 Ubuntu 上安裝pandoc
,請使用以下命令:
sudo apt-get 安裝 pandoc
在 Fedora 上,您需要的命令如下:
須藤 dnf 安裝 pandoc
在 Manjaro 上,您需要輸入:
sudo pacman -Syu pandoc
您可以使用--version
選項檢查您安裝的版本:
pandoc--版本
使用沒有文件的 pandoc
如果您在沒有任何命令行選項的情況下使用pandoc
,它也接受鍵入的輸入。 您只需按 Ctrl+D 表示您已完成輸入。 pandoc
希望您輸入 Markdown 格式,並生成 HTML 輸出。
讓我們看一個例子:
潘多克
我們已經輸入了幾行 Markdown 並且即將按下 Ctrl+D。
一旦我們這樣做, pandoc
生成等效的 HTML 輸出。
但是,要使用pandoc
做任何有用的事情,我們確實需要使用文件。
降價基礎
Markdown 是一種輕量級的標記語言,對某些字符賦予特殊的含義。 您可以使用純文本編輯器創建 Markdown 文件。
Markdown 可以輕鬆閱讀,因為沒有視覺上繁瑣的標籤來分散文本的注意力。 Markdown 文檔中的格式類似於它所代表的格式。 以下是一些基礎知識:
- 要使用斜體強調文本,請將其包裹在星號中。
*This will be emphasized*
- 要加粗文本,請使用兩個星號。
**This will be in bold**
- 標題由數字符號/井號 (
#
) 表示。 文本與哈希之間用空格隔開。 使用一個散列作為頂級標題,使用兩個作為二級標題,依此類推。 - 要創建項目符號列表,列表的每一行都以星號開頭,並在文本前插入一個空格。
- 要創建編號列表,請以數字開頭,後跟句點,然後在文本前插入一個空格。
- 要創建超鏈接,請將站點名稱括在方括號 (
[]
) 中,並將 URL 括在括號 [()
] 中,如下所示:[Link to How to Geek](https://www.howtogeek.com/)
. - 要插入圖像,請在方括號 (
![]
) 之前鍵入一個感嘆號。 在括號中鍵入圖像的任何替代文本。 然後,將圖像的路徑括在括號 [()
“] 中。 這是一個例子:![The Geek](HTG.png)
。
我們將在下一節中介紹所有這些的更多示例。
相關:什麼是 Markdown,你如何使用它?
轉換文件
文件轉換很簡單。 pandoc
通常可以從文件名中找出您正在使用的文件格式。 在這裡,我們將從 Markdown 文件生成 HTML 文件。 -o
(輸出)選項告訴pandoc
我們希望創建的文件的名稱:
pandoc -o 示例.html 示例.md
我們的示例 Markdown 文件 sample.md 包含下圖所示的一小段 Markdown。
創建了一個名為 sample.html 的文件。 當我們雙擊該文件時,我們的默認瀏覽器將打開它。
現在,讓我們生成一個可以在 LibreOffice Writer 中打開的 Open Document Format 文本文檔:
pandoc -o 樣本.odt 樣本.md
ODT 文件與 HTML 文件具有相同的內容。
一個簡潔的觸摸是圖像的替代文本也用於自動生成圖形的標題。
指定文件格式
-f
(from) 和-t
(to) 選項用於告訴pandoc
你要轉換的文件格式。 如果您正在使用與其他相關格式共享文件擴展名的文件格式,這可能會很有用。 例如,TeX 和 LaTeX 都使用“.tex”擴展名。
我們還使用-s
(獨立)選項,因此pandoc
將生成文檔所需的所有 LaTeX 前導碼,以使文檔成為完整、獨立且格式良好的 LaTeX 文檔。 如果沒有-s
(獨立)選項,輸出仍然是格式良好的 LaTeX,可以插入另一個 LaTeX 文檔,它不會正確解析為獨立的 LaTeX 文檔。
我們輸入以下內容:
pandoc -f markdown -t latex -s -o sample.tex sample.md
如果您在文本編輯器中打開“sample.tex”文件,您將看到生成的 LaTeX。 如果你有 LaTeX 編輯器,你可以打開 TEX 文件來預覽 LaTeX 排版命令是如何解釋的。 縮小窗口以適合下圖使顯示看起來局促,但實際上,這很好。
我們使用了一個名為 Texmaker 的 LaTeX 編輯器。 如果要在 Ubuntu 中安裝它,請鍵入以下內容:
sudo apt-get install texmaker
在 Fedora 中,命令是:
須藤 dnf 安裝 texmaker
在 Manjaro 中,使用:
sudo pacman -Syu texmaker
使用模板轉換文件
您可能開始了解pandoc
提供的靈活性。 您可以編寫一次並以幾乎任何格式發布。 這是一項了不起的壯舉,但文件看起來確實有點香草味。
使用模板,您可以指定pandoc
在生成文檔時使用的樣式。 例如,您可以通過--css
選項告訴pandoc
使用級聯樣式表 (CSS) 文件中定義的樣式。
我們創建了一個包含以下文本的小 CSS 文件。 它改變了一種樣式的級別標題上方和下方的間距。 它還將文本顏色更改為白色,並將背景顏色更改為藍色:
h1 { 顏色:#FFFFFF; 背景顏色:#3C33FF; 邊距頂部:0px; 邊距底部:1px; }
完整的命令如下——請注意,我們還使用了獨立選項( -s
):
pandoc -o sample.html -s --css sample.css sample.md
pandoc
使用我們極簡 CSS 文件中的單一樣式並將其應用於一級標題。
使用 HTML 文件時可以使用的另一個微調選項是在 Markdown 文件中包含 HTML 標記。 這將作為標準 HTML 標記傳遞給生成的 HTML 文件。
但是,當您只生成 HTML 輸出時,應該保留這種技術。 如果您使用多種文件格式, pandoc
將忽略非 HTML 文件的 HTML 標記,並將其作為文本傳遞給這些文件。
我們也可以指定在生成 ODT 文件時使用哪些樣式。 打開一個空白的 LibreOffice Writer 文檔並調整標題和字體樣式以滿足您的需要。 在我們的示例中,我們還添加了頁眉和頁腳。 將您的文檔另存為“odt-template.odt”。
我們現在可以將其用作帶有--reference-doc
選項的模板:
pandoc -o sample.odt --reference-doc=odt-template.odt sample.md
將此與之前的 ODT 示例進行比較。 本文檔使用不同的字體,具有彩色標題,並包括頁眉和頁腳。 但是,它是從完全相同的“sample.md”Markdown 文件生成的。
參考文檔模板可用於指示文檔製作的不同階段。 例如,您可能有帶有“草稿”或“供審閱”水印的模板。 沒有水印的模板將用於最終文檔。
生成 PDF
默認情況下, pandoc
使用 LaTeX PDF 引擎生成 PDF 文件。 確保滿足適當的 LaTeX 依賴項的最簡單方法是安裝 LaTeX 編輯器,例如 Texmaker。
不過,這是一個相當大的安裝——Tex 和 LaTeX 都相當龐大。 如果你的硬盤空間有限,或者你知道你永遠不會使用 TeX 或 LaTeX,你可能更喜歡生成一個 ODT 文件。 然後,您可以在 LibreOffice Writer 中打開它並將其保存為 PDF。
文檔即代碼
使用 Markdown 作為您的寫作語言有幾個優點,包括:
- 處理純文本文件速度很快:它們的加載速度比類似大小的文字處理器文件更快,而且在文檔中的移動速度也更快。 許多編輯器,包括
gedit
、Vim
和Emacs
,都使用 Markdown 文本的語法高亮。 - 您將擁有所有文檔版本的時間線:如果您將文檔存儲在 VCS(例如 Git)中,您可以輕鬆查看同一文件的任何兩個版本之間的差異。 但是,這僅在文件是純文本時才真正有效,因為這是 VCS 期望使用的。
- VCS 可以記錄誰做了任何更改,以及何時進行:如果您經常與其他人在大型項目上協作,這將特別有用。 它還為文檔本身提供了一個中央存儲庫。 許多雲託管的 Git 服務,例如 GitHub、GitLab 和 BitBucket,在其定價模型中都有免費套餐。
- 您可以生成多種格式的文檔:只需幾個簡單的 shell 腳本,您就可以從 CSS 和參考文檔中提取樣式。 如果您將文檔存儲在與持續集成和持續部署 (CI/CD) 平台集成的 VCS 存儲庫中,則可以在構建軟件時自動生成它們。
相關:什麼是 GitHub,它的用途是什麼?
最後的想法
pandoc 中的選項和功能比我們在這裡介紹的要多得多。 大多數文件類型的轉換過程都可以調整和微調。 要了解更多信息,請查看官方(非常詳細)pandoc 網頁上的優秀示例。
Linux 命令 | ||
文件 | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev ·查看·字符串·類型·重命名· zip ·解壓縮· mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
流程 | 別名· screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat ·超時·牆·是·殺死·睡眠· sudo · su ·時間· groupadd · usermod ·組· lshw ·關機·重新啟動·停止·關機· passwd · lscpu · crontab ·日期· bg · fg | |
聯網 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
相關:適合開發人員和愛好者的最佳 Linux 筆記本電腦