🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

前言

身為工程師,我們經常需要撰寫各種文件,如需求定義書、設計書、測試規範、運作指導書等。
在這樣的情況下,我內心深處常常希望能用Markdown這樣的純文字格式來撰寫,而在AI時代,純文字格式更符合現今的需求。

但是!!!
實際上需求幾乎都是100%要求Word格式的.docx,對吧???

我作為工程經理,經常有機會與客戶進行對話,但每次都會被要求提供Word文件。

雖然有一些工具,比如pandoc,可以將Markdown轉換為Word格式,但我總是為以下問題感到困擾:

  • 標題調整不易
  • 字型奇怪
  • 不能調整縮排
  • 表格和圖片無法美觀貼合
  • 項目符號的樣式不正確
  • 圖表編號無法顯示(!!!!!!!)

以上五項可以透過準備好樣式調整過的模板Word檔來勉強應對,但「圖表編號」這個問題,據我所知,幾乎沒有任何工具能夠適當地自動編號!
(像是自動產生「表 1.1」這種編號的功能)

無論如何,仍然需要手動進行各種調整,但我希望能在封面份的處理上簡化,而像「編號」這種只要增加一個表格就會導致後續全部錯位的情況,我還是希望能有個自動化的方法。

然而,這樣的工具目前並不存在啊~
如果有的話,那真的是太棒了~~~

其實,是可以做到的。

對,就是md2docx

md2docx是什麼

md2docx(命令名稱:mdd)是一個將Markdown文件轉換為Word(.docx)的CLI工具。它是用Rust語言編寫的。

與普通的轉換工具最大的不同在於,它專注於生成日本語的商業文件。預設包含游明朝和游ゴシック字體,支持自動編號標題,自動為表格和圖片添加圖表編號,並且可以通過單個TOML設定檔來控制所有這些設定。

安裝

需要Rust 1.70以上版本。
未來會準備安裝程式,但目前請直接克隆此倉庫並進行安裝……

cargo install --path .

這樣就會在$HOME/.cargo/bin/mdd中生成一個二進位檔。如果PATH未設置,請在~/.zshrc等文件中添加以下內容:

export PATH="$HOME/.cargo/bin:$PATH"

使用方法

基本操作就是這樣!

mdd document.md

將會生成一個與輸入文件同名的.docx文件,使用起來非常簡單。

如果想要指定輸出位置或使用設置檔,可以添加選項。

# 指定輸出位置
mdd document.md -o output.docx

# 指定設置檔
mdd document.md -c mdd.toml

# 同時指定
mdd document.md -o output.docx -c mdd.toml

選項列表如下。

選項 說明
-o, --output 指定輸出位置。省略則使用輸入文件名並將副檔名改為.docx
-c, --config 指定設置文件(TOML)。省略則使用預設設定
-h, --help 顯示幫助信息。使用--help會顯示設置文件格式
-V, --version 查詢版本號

設置文件

可以通過TOML格式自定義字體、大小、縮排和項目符號符號。所有項目均可省略,未指定的項目將使用預設值。

[fonts]
body_ja    = "游明朝"        # 正文的日文字體
body_en    = "Century"       # 正文的英文字體
heading_ja = "游ゴシック"    # 標題的日文字體
heading_en = "Century"       # 標題的英文字體

[sizes]                       # 單位: pt
body     = 10.5               # 正文
heading1 = 14.0               # 標題1
heading2 = 12.0               # 標題2
heading3 = 11.0               # 標題3
heading4 = 11.0               # 標題4

[indent]                      # 單位: twip (1twip = 1/20pt)
body_left       = 210         # 正文的左縮排(約等於全角1字元)
body_first_line = 210         # 正文的首行縮排
body_right      = 210         # 正文的右縮排
body_left_chars = 100         # 正文的左縮排(字元數×100)
heading4_left   = 709         # 標題4的左縮排
heading4_hanging = 709        # 標題4的懸掛縮排

[bullet]
level0 = "●"                # 項目符號級別0
level1 = "■"                # 項目符號級別1
level2 = "▲"                # 項目符號級別2

支援的Markdown元素

支援元素的列表如下。

元素 語法 轉換時的處理
標題 # H1#### H4 自動附加編號(1, 1.1, 1.1.1, (1), (1))
段落 普通文本 使用twip單位調整縮排和邊距
項目符號 - item 支援嵌套,開頭字符可自定義
編號列表 1. item 支援嵌套,可指定起始編號
表格 GFM格式 自動編號為「表1」「表2」
圖片 ![alt](path) 自動編號為「圖1」「圖2」,格式自動轉換
程式碼區域 ``` Courier New / MS ゴシック,9pt
水平線 --- 轉換為空段落
粗體 **text** 支援
斜體 *text* 支援
行內程式碼 `code` 用「」包圍顯示
鏈接 [text](url) 轉為超連結,支援錨點鏈接

常用的Markdown元素幾乎都已涵蓋!

結語

使用Markdown撰寫,只需一條命令便可生成看似用於日本傳統業務的Word文件。這是我真正想要的工具!


原文出處:https://qiita.com/nokonoko_1203/items/87a71916c155d69a336b


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝22  
616
🥈
我愛JS
💬2  
7
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付