2015-02-05 102 views
8

使用降低代碼塊時,生成的等寬字體大小在DOCX文檔中太大。在DOCX輸出中更改Pandoc等寬字體大小或樣式

我可以通過自定義範本.docx文件調整段落的字體大小,但由於某些原因產生的代碼塊不使用段落樣式,相對於其他大多數生成的輸出。

有沒有什麼辦法:

  • 使代碼塊使用特定的風格,這樣我可以覆蓋風格的範本.docx

  • 覆蓋在使用的等寬字體代碼塊的DOCX表示?

更新澄清: 我使用基於先前如在註釋中描述的docx所產生的外部reference.docx。通過修改heading1等的樣式,我對輸出有合理的控制。問題是生成的等寬字體文本不使用命名樣式,只是「正常」並進行了一些更改。所以我無法在模板中改變它,除非我也改變所有「正常」文本的大小。

+0

你可以發佈(鏈接到)你的自定義* template.docx *文件嗎?你是否知道有一個額外的選項(與Pandoc使用的* template.docx *不同),可以用'--reference-docx = my.docx'調用?您可以創建'my.docx'文件以包含您想要的樣式,Pandoc將從reference.docx中竊取所有要使用的樣式... – 2015-05-24 22:02:51

+1

您是否找到解決方案?我注意到,對於指定語法的圍柵代碼塊(例如'''php ...),代碼塊在docx中確實有一次賦值樣式,但它有許多不同的樣式,具體取決於代碼語法標記類型。我可以在參考文檔中更改所有這些樣式。他們繼承了我無法找到的稱爲「逐字字符」的風格。但對於沒有指定語法的常規代碼塊,仍然沒有運氣。 – LinusR 2016-08-22 16:45:26

回答

3

使用Pandoc 1.17.2和Word 2013我終於找到了一個解決方案,看來Pandoc的後續版本使用默認隱藏在Word中的鏈接樣式。

第1步:生成使用

pandoc -o template_1.17.2.docx test.md 

凡test.md包括源代碼,您可能需要修改所有其他的風格的自定義模板文件。例如:

~~~~ 
this is preformatted source using style "Source Code" 
~~~~ 

~~~ xml 
<this> is preformatted source using "KeyworkTok" and "NormalTok"</this> 
~~~ 

在Word中打開template_1.17.2.docx。預格式化的源代碼現在使用隱藏的鏈接樣式「源代碼」進行格式化。此樣式默認情況下不顯示在樣式預覽窗格中,您可以通過單擊樣式預覽面板右下方的小方形箭頭來配置樣式預覽窗格來添加樣式。

根據需要修改此樣式並保存模板。然後根據此模板生成文檔:

pandoc --reference-docx=template_1.17.2.docx -o mydoc.docx mydoc.md 

您現在應該可以在mydoc中看到正確格式的源代碼。

@LinusR建議不同的來源樣式使用不同的佈局樣式。我已經添加了XML作爲示例。格式化的XML將使用「KeywordTok」和「NormalTok」。

3

Pandoc在創建DOCX(MS Word)文檔時使用了一個reference.docx文件。這必須在Pandoc命令行上給出。然後Pandoc將提取所有默認樣式和格式設置從這個參考DOCX(除非他們使用自定義名稱),並將它們應用在生成DOCX:

pandoc -t docx -o out.docx in-markdown.txt --reference-docx=my.docx 

在一個Pandoc可用的參考DOCX是到達最好的方法在Pandoc的幫助下生成第一個簡單的DOCX,然後將它帶到Word安裝中,打開它並更改您要使用的樣式。然後保存它,把它帶回Pandoc並用它作爲參考。


對於ODT(的LibreOffice/OpenOffice的/ OpenDocument格式)除了reference.odt(你可以用--reference-odt標誌使用),還有一個template。您可以pandoc -D odt打印默認模板,然後用pandoc -o out.odt --template=modifiedTemplate.odt


最後建議修改它並使用它:使用最新版本Pandoc! (目前爲1.13.2.1,本月底預計爲1.14)。在近期發佈的版本中,DOCX支持得到了顯着改善。

+1

我正在使用基於之前生成的docx的外部reference.docx,如您所描述的。通過修改heading1等的樣式,我對輸出有合理的控制。問題在於生成的等寬字體文本不使用命名樣式,它只是「正常」並進行了一些更改。所以我沒有辦法在模板中改變它,除非我也改變「正常」。 – 2015-05-26 14:05:43

+0

@ mb21:我很欣賞你試圖改進我的答案。你似乎比我更瞭解Pandoc的內部結構。但是......請您謹慎行事,以便改進您的編輯中的以下幾點:***(1)***當* *只討論* reference.docx *文件時,請勿參考ODT。 ***(2)***同時更新對*「最新Pandoc版本」*的引用,該引用不再是1.13.2.1,現在是1.17。 – 2016-03-21 21:28:39

+0

@ mb21:你可以看看https://github.com/jgm/pandoc/issues/2797嗎? – 2016-03-21 21:48:27