Rmarkdown의 HTML 태그를 Word 문서로

Oct 01 2020

Word로 렌더링 된 Rmarkdown 문서에서 HTML 태그를 사용할 가능성이 있습니까?

예를 들면 :

---
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우리가 pandoc의 내부 형식으로 하나 개의 블록으로 전체 HTML 태그를 얻을 수 있도록하기를.

다음 설정은 변환 중에 문서를 수정 pandoc_args하기 위해 Lua 필터 를 사용하도록 pandoc에 지시하는 입니다. 필터는 모든 HTML 블록을 선택하여 Markdown 대신 HTML로 구문 분석하고 원시 HTML을 구문 분석 결과로 바꿉니다.

따라서 pandoc이 읽을 수있는 원시 HTML을 사용하는 경우 괜찮습니다. pandoc이 읽을 수없는 특수 지침을 사용하는 경우 위에서 설명한 설정도 도움이되지 않습니다. docx에서 사용되는 XML 형식 인 OOXML로 마크 업을 다시 작성해야합니다.