国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
Markdown
Jekyll
Pandoc
LaTeX
PDFJam
設(shè)置
構(gòu)建網(wǎng)站
從Markdown生成PDF
LaTeX文件
將卡片組合到一頁上
運行腳本
如何在我的系統(tǒng)上安裝Pandoc和LaTeX?
我可以自定義使用Pandoc和LaTeX創(chuàng)建的PDF的外觀嗎?
如何使用Pandoc和LaTeX將Markdown文件轉(zhuǎn)換為PDF?
首頁 科技週邊 IT業(yè)界 用Pandoc和Latex從Markdown創(chuàng)建PDF

用Pandoc和Latex從Markdown創(chuàng)建PDF

Feb 19, 2025 am 09:48 AM

Creating PDFs from Markdown with Pandoc and LaTeX

核心要點

本文作者Chris Ward介紹瞭如何使用Pandoc和LaTeX將Markdown文件轉(zhuǎn)換為PDF,用於其開源棋盤遊戲Chip Shop。遊戲組件使用Markdown編寫,遊戲網(wǎng)站也由這些文件生成。

Pandoc(一個開源標(biāo)記轉(zhuǎn)換工具)和LaTeX(一個文檔聲明和佈局系統(tǒng))用於從Markdown文件生成PDF。儘管功能強大,但它們無法將多個PDF組合到一頁上,因此Ward使用了命令行工具PDFJam來滿足此需求。

作者提供了詳細的指南,介紹如何安裝必要的依賴項(Markdown、Jekyll、Pandoc、LaTeX、PDFJam),並逐步介紹了構(gòu)建過程,包括從Markdown生成PDF、創(chuàng)建LaTeX文件以及使用PDFJam將卡片組合到一頁上。

作者理想的工作流程是在生成網(wǎng)站的同時生成PDF文件,而不是在訪問者請求時生成文件。這種方法還允許PDF卡片版本與HTML頁面看起來不同,而無需使用複雜的CSS規(guī)則。

如果您閱讀過我在SitePoint或其他地方發(fā)表的一些文章,您可能知道我正在開發(fā)一款棋盤遊戲。這款名為Chip Shop的遊戲,讓您可以在20世紀(jì)80年代的美國經(jīng)營一家電腦公司。

Creating PDFs from Markdown with Pandoc and LaTeX

作為項目的一部分,我嘗試盡可能地將整個遊戲開源。經(jīng)過幾次嘗試後,我決定使用Markdown作為大部分遊戲組件(尤其是卡片和說明書)的基本框架。

由於遊戲網(wǎng)站使用Jekyll,因此遊戲網(wǎng)站是從Markdown文件生成的。我打算製作遊戲的高級預(yù)裝盒和自行打印版本,為此我需要從Markdown文件生成PDF。

目標(biāo)

我的理想工作流程是在生成網(wǎng)站的同時生成PDF文件,而不是在訪問者請求時生成文件。這排除了我通常用於PDF生成的選項wkhtmltopdf,因為它是從已生成的HTML生成PDF。另一個原因是,我希望PDF卡片版本與HTML頁面看起來不同,而Jekyll缺乏任何類型的“查看模式”功能來實現(xiàn)這一點,而無需使用複雜的CSS規(guī)則。

Chip Shop遊戲的卡片Markdown模板文件包含許多用於遊戲機制的Markdown前置信息字段,並非所有字段在每張卡片上都使用。為了方便打印,我需要盡可能多地將卡片放在A4頁面上——在本例中,是一個3×3的網(wǎng)格。最終,頁面需要雙面打印,但我還沒有實現(xiàn)這一點。

Pandoc和LaTeX

任何搜索從Markdown生成PDF解決方案的網(wǎng)絡(luò)搜索都會引導(dǎo)您走上Pandoc的道路。 Pandoc是一個開源的瑞士軍刀式標(biāo)記轉(zhuǎn)換工具,支持種類繁多且不斷增長的輸入和輸出標(biāo)記格式。

要使用Pandoc生成PDF,需要LaTeX。 LaTeX起源於科學(xué)研究界,是一個文檔聲明和佈局系統(tǒng)。結(jié)合Pandoc和LaTeX,我們可以使用變量,從而從一系列Markdown文件生成PDF並支持Markdown前置信息。

儘管Pandoc和LaTeX功能強大,但我找不到任何將多個PDF(卡片)組合到一頁上的方法,尤其是在使用Markdown文件中的變量時。經(jīng)過大量研究,我選擇了PDFJam,這是一個簡單的命令行工具,用於滿足此需求。

安裝依賴項

Markdown

除了可能需要一個編輯器之外,您不需要額外的Markdown軟件,編輯器有很多,我建議您閱讀一些SitePoint文章來做出選擇。

Jekyll

我將在從我的遊戲中獲取的示例中繼續(xù)使用Jekyll來說明構(gòu)建過程,但如果您不需要網(wǎng)站,它不是PDF生成的必要部分。

Pandoc

在我的Mac上,我使用Homebrew安裝了Pandoc,但所有操作系統(tǒng)都有相應(yīng)的選項。

LaTeX

關(guān)於安裝LaTeX的最佳方法有很多說法,這取決於您的需求或打算如何使用它。其常用工具和庫的完整安裝可能接近2GB,但對於大多數(shù)用途而言,最小安裝就足夠了。閱讀項目的下載頁面以找到最適合您的選項。

在本教程中,我們將使用xelatex引擎,因為我使用自定義字體。但是,您可以選擇任何提供您所需特定功能的引擎。

PDFJam

根據(jù)您安裝LaTeX的方式,您可能已經(jīng)安裝了PDFJam。 (在終端中鍵入which pdfjam進行檢查。)如果您沒有安裝,請在此處查找安裝詳細信息。

構(gòu)建過程

經(jīng)過一番考慮,我運行在本地運行的bash腳本目前似乎是最佳選擇。有更好的方法,但它有效,我以後可以改進這個過程,將其轉(zhuǎn)移到持續(xù)集成系統(tǒng)或Git Hooks。

在GitHub上查看bash腳本。

現(xiàn)在讓我們逐步介紹這個腳本。

設(shè)置

bundle install
bundle update

rm -dfr _site
rm -dfr pod

這些命令確保Jekyll構(gòu)建網(wǎng)站所需的Ruby依賴項是最新的,並且我們刪除了任何現(xiàn)有的網(wǎng)站和打印文件夾。

構(gòu)建網(wǎng)站

jekyll build
mkdir -p pod/pdf/cards

接下來,我們構(gòu)建網(wǎng)站並為卡片的打印版本創(chuàng)建一個文件夾。

從Markdown生成PDF

讓我們創(chuàng)建一個包含每個Markdown文件PDF版本的文件夾:

for filename in _cards/*.md; do
  echo $filename
  pandoc --from=markdown+yaml_metadata_block --template _layouts/cards.latex -o pod/pdf/cards/"$(basename "$filename" .md)".pdf --latex-engine=xelatex $filename
done

該腳本處理_cards目錄中的每個Markdown文件,確保觀察Markdown前置信息字段。使用cards.latex模板(我們將在後面介紹),正確的LaTeX引擎會輸出具有適當(dāng)名稱的PDF。

LaTeX文件

從Pandoc生成卡片文件的大部分神奇之處都發(fā)生在LaTeX模板中。

在GitHub上查看LaTeX模板。

LaTeX對我來說是新的,但它並不太複雜。我將解釋我從默認LaTeX文件(位於Pandoc_install_dir/data/templates/default.latex)中更改的內(nèi)容以使卡片正常工作。我推薦sharelatex.com用於在編輯LaTeX文件時預(yù)覽它們。

bundle install
bundle update

rm -dfr _site
rm -dfr pod

我們需要特定的頁面大小,我們稍後將使用列來顯示卡片的成本和分數(shù)。我們正在使用圖形和自定義字體,因此我們需要這些包。

我們試圖創(chuàng)建一個清晰簡潔的簡單佈局。以下是我們?nèi)绾螌崿F(xiàn)它的:

jekyll build
mkdir -p pod/pdf/cards

我覺得上面很多內(nèi)容對於任何習(xí)慣於代碼或標(biāo)記的人來說都是相當(dāng)容易理解的。我們正在創(chuàng)建卡片的元素,對齊它們,設(shè)置字體大小並檢查是否有值,然後再輸出它們,這樣卡片就不會最終出現(xiàn)空字段。

我們將圖像調(diào)整為特定大小並居中。成本和分數(shù)值採用兩列佈局,使用begin{tabular}命令設(shè)置,列數(shù)使用l的數(shù)量設(shè)置。

Creating PDFs from Markdown with Pandoc and LaTeX

將卡片組合到一頁上

我們使用PDFJam創(chuàng)建一個大型PDF文件,其中包含每個單獨的PDF卡片:

for filename in _cards/*.md; do
  echo $filename
  pandoc --from=markdown+yaml_metadata_block --template _layouts/cards.latex -o pod/pdf/cards/"$(basename "$filename" .md)".pdf --latex-engine=xelatex $filename
done

使用此命令,我們指定以下內(nèi)容:

  • 頁面方向應(yīng)始終為縱向
  • 每個單獨的PDF都應(yīng)加框
  • 網(wǎng)格大小
  • 文件名後綴
  • 文件名

如果您沒有輸出到其工作目錄,PDFJam可能會給出錯誤,因此我將文件移動到我實際想要的位置(希望將來可以解決)。在這裡,如果我們不需要,我們也可以刪除單個PDF文件。

就這樣——我們有了一個網(wǎng)站和遊戲卡片的可打印PDF。

Creating PDFs from Markdown with Pandoc and LaTeX

運行腳本

我使用./build.sh運行構(gòu)建腳本。由於有很多圖像和PDF處理,因此大約需要五到十分鐘。然後我有一個單獨的腳本將這些文件夾部署到Web服務(wù)器。

後續(xù)步驟

這個過程花了我一段時間才弄對,但現(xiàn)在已經(jīng)足夠好,可以在遊戲測試後繼續(xù)改進過程和佈局。

我希望您發(fā)現(xiàn)我的研究和實驗對您的項目有用。如果您有任何意見或建議,請告訴我。

關(guān)於使用Pandoc和LaTeX從Markdown創(chuàng)建PDF的常見問題解答(FAQ)

如何在我的系統(tǒng)上安裝Pandoc和LaTeX?

要安裝Pandoc,您可以從官方網(wǎng)站(http://miracleart.cn/link/8f1dd6e7a88b9cf615c146330c591ba9

我可以自定義使用Pandoc和LaTeX創(chuàng)建的PDF的外觀嗎?

是的,您可以使用LaTeX模板自定義PDF的外觀。 Pandoc使用默認模板生成PDF,但您可以使用--template選項指定您自己的模板。您可以創(chuàng)建自己的模板或使用在線提供的眾多模板之一,例如在Wandmalfarbe Pandoc LaTeX模板GitHub存儲庫中找到的那些模板。

如何使用Pandoc和LaTeX將Markdown文件轉(zhuǎn)換為PDF?

要將Markdown文件轉(zhuǎn)換為PDF,您可以在終端或命令提示符中使用以下命令:pandoc yourfile.md -o yourfile.pdf。將yourfile.md替換為您Markdown文件的名稱,將yourfile.pdf替換為您PDF文件的所需名稱。此命令告訴Pandoc使用默認LaTeX模板將Markdown文件轉(zhuǎn)換為PDF。

(其餘FAQ內(nèi)容與原文相同,此處省略以避免重複)

以上是用Pandoc和Latex從Markdown創(chuàng)建PDF的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

開發(fā)人員的快捷方式到您的Udemy樣平臺 開發(fā)人員的快捷方式到您的Udemy樣平臺 Jun 17, 2025 pm 04:43 PM

在開發(fā)類似於Udemy的學(xué)習(xí)平臺時,重點不僅僅是內(nèi)容質(zhì)量。同樣重要的是如何交付內(nèi)容。這是因為現(xiàn)代教育平臺依賴於媒體,快速且易於消化。

SaaS的5個最佳支付門戶:您的最終指南 SaaS的5個最佳支付門戶:您的最終指南 Jun 29, 2025 am 08:28 AM

付款網(wǎng)關(guān)是付款過程的關(guān)鍵組成部分,使企業(yè)能夠在線接受付款。它充當(dāng)客戶與商人之間的橋樑,安全地傳輸付款信息並促進交易。 為了

用於購買SSL證書的經(jīng)濟有效的轉(zhuǎn)售商平臺 用於購買SSL證書的經(jīng)濟有效的轉(zhuǎn)售商平臺 Jun 25, 2025 am 08:28 AM

在一個在線信任不可談判的世界中,SSL證書對於每個網(wǎng)站都至關(guān)重要。 SSL認證的市場規(guī)模在2024年價值56億美元,並且由於電子商務(wù)業(yè)務(wù)的激增而推動了強勁的增長

新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 Jul 03, 2025 pm 05:48 PM

在我們認為人類始終超越機器的領(lǐng)域的另一個挫折中,研究人員現(xiàn)在建議AI比我們更好地理解情感。研究人員發(fā)現(xiàn)人工智能證明了一個

由於新的Microsoft AI型號 由於新的Microsoft AI型號 Jul 05, 2025 am 12:44 AM

一種新的人工智能(AI)模型已經(jīng)證明了比幾個使用最廣泛使用的全球預(yù)測系統(tǒng)更快,更精確地預(yù)測重大天氣事件的能力。該名為Aurora的模型已接受過培訓(xùn)。

您的設(shè)備餵養(yǎng)AI助手並收集個人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 您的設(shè)備餵養(yǎng)AI助手並收集個人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 Jul 05, 2025 am 01:12 AM

不管喜歡與否,人工智能已成為日常生活的一部分。許多設(shè)備(包括電動剃須刀和牙刷)已成為AI驅(qū)動的“使用機器學(xué)習(xí)算法來跟蹤一個人的使用方式,Devi的方式

高級AI型號的CO₂回答相同問題時的排放量比更常見的LLM 高級AI型號的CO₂回答相同問題時的排放量比更常見的LLM Jul 06, 2025 am 12:37 AM

根據(jù)最近的一項研究,我們試圖使AI模型的功能越精確,其碳排放量就越大 - 某些提示產(chǎn)生的二氧化碳比其他提示高達50倍。

See all articles