แท็ก HTML ใน Rmarkdown เป็นเอกสารคำ

Oct 01 2020

มีความเป็นไปได้ที่จะใช้แท็ก HTML ในเอกสาร Rmarkdown ที่แสดงผลเป็น word หรือไม่?

ตัวอย่างเช่น:

---
output: word_document
---

# This is rendered as heading

<h1> But this is not </h1>

ทำงานได้อย่างสมบูรณ์เมื่อแสดงผลเป็น html_document แต่ไม่ใช่เมื่อแสดงผลเป็น word_document

มีการถามคำถามที่เฉพาะเจาะจงมากขึ้นเกี่ยวกับแท็กที่นี่ แต่ไม่มีวิธีแก้ไข: ขีดเส้นใต้ใน RMarkdown เป็น Microsoft Word

คำตอบ

2 tarleb Oct 03 2020 at 14:08

ได้เลยไปเลย:

---
output:
  word_document:
    md_extensions: +raw_html-markdown_in_html_blocks
    pandoc_args: ['--lua-filter', 'read_html.lua']
---

# This is rendered as heading

<h1> And this is one, too </h1>

โดยที่read_html.luaต้องเป็นไฟล์ในไดเร็กทอรีเดียวกันกับเนื้อหานี้:

function RawBlock (raw)
  if raw.format:match 'html' and not FORMAT:match 'html' then
    return pandoc.read(raw.text, raw.format).blocks
  end
end

มาแกะกล่องด้านบนเพื่อดูวิธีการทำงาน word_documentสิ่งแรกที่คุณจะสังเกตเห็นเป็นพารามิเตอร์เพิ่มเติมเพื่อ การmd_extensionsแก้ไขวิธีการแยกวิเคราะห์ข้อความของ pandoc ดูที่นี่สำหรับรายการทั้งหมด (หรือเรียกใช้pandoc --list-extensions=markdown) ในเทอร์มินัลของคุณ เราเปิดใช้งานraw_htmlเพื่อให้แน่ใจว่า pandoc ไม่ทิ้งแท็ก HTML ดิบและปิดใช้งานmarkdown_in_html_blocksเพื่อให้แน่ใจว่าเราได้รับแท็ก HTML ทั้งหมดเป็นบล็อกเดียวในรูปแบบภายในของ pandoc

การตั้งค่าถัดไปคือpandoc_argsที่เราบอกให้ pandoc ใช้ตัวกรอง Luaเพื่อแก้ไขเอกสารระหว่างการแปลง ตัวกรองจะเลือกบล็อก HTML ทั้งหมดแยกวิเคราะห์เป็น HTML แทน Markdown และแทนที่ HTML ดิบด้วยผลการแยกวิเคราะห์

ดังนั้นหากคุณใช้ HTML ดิบที่ pandoc สามารถอ่านได้คุณก็สบายดี หากคุณใช้คำแนะนำพิเศษที่ pandoc ไม่สามารถอ่านได้การตั้งค่าที่อธิบายไว้ข้างต้นจะไม่ช่วยเช่นกัน คุณต้องเขียนมาร์กอัปใหม่ใน OOXML ซึ่งเป็นรูปแบบ XML ที่ใช้ใน docx