Skip to content

Support task lists when writing docx #5198

@agusmba

Description

@agusmba

The development version of pandoc recently added support for tasklists on markdown and writing html and latex. See #3051

It would be great to support writing task lists in docx.

Currently the default docx behavior doesn't look great:

image

There is an issue with the spacing, and another with long lines. Both could be solved by using specific numbering styles with the proper bullets:

image

4/1/2019 UPDATE!

Here are some xml snippets:

Current pandoc output

document.xml:

<w:p><w:pPr><w:pStyle w:val="Compact" /><w:numPr><w:numId w:val="1002" /><w:ilvl w:val="0" /></w:numPr></w:pPr>
  <w:r><w:t xml:space="preserve">☐ Unchecked task</w:t></w:r></w:p>
<w:p><w:pPr><w:pStyle w:val="Compact" /><w:numPr><w:numId w:val="1002" /><w:ilvl w:val="0" /></w:numPr></w:pPr>
  <w:r><w:t xml:space="preserve">☒ Completed task</w:t></w:r></w:p>

numbering.xml:

<w:abstractNum w:abstractNumId="991"><w:nsid w:val="71315dca" /><w:multiLevelType w:val="multilevel" />
  <w:lvl w:ilvl="0"><w:numFmt w:val="bullet" /><w:lvlText w:val="" /><w:lvlJc w:val="left" />
  <w:pPr><w:tabs><w:tab w:val="num" w:pos="0" /></w:tabs><w:ind w:left="480" w:hanging="480" /></w:pPr></w:lvl>
  <w:lvl w:ilvl="1"><w:numFmt w:val="bullet" /><w:lvlText w:val="" /><w:lvlJc w:val="left" /><w:pPr><w:tabs><w:tab w:val="num" w:pos="720" /></w:tabs><w:ind w:left="1200" w:hanging="480" /></w:pPr></w:lvl><!-- ... -->
</w:abstractNum>
<!-- ... -->
<w:num w:numId="1002"><w:abstractNumId w:val="991" /></w:num>

Fixing it manually at the xml level

document.xml:

-<w:p><w:pPr><w:pStyle w:val="Compact" /><w:numPr><w:numId w:val="1002" /><w:ilvl w:val="0" /></w:numPr></w:pPr>
+<w:p><w:pPr><w:pStyle w:val="Compact" /><w:numPr><w:numId w:val="1003" /><w:ilvl w:val="0" /></w:numPr></w:pPr>
  <w:r><w:t xml:space="preserve">☐ Unchecked task</w:t></w:r></w:p>
-<w:p><w:pPr><w:pStyle w:val="Compact" /><w:numPr><w:numId w:val="1002" /><w:ilvl w:val="0" /></w:numPr></w:pPr>
+<w:p><w:pPr><w:pStyle w:val="Compact" /><w:numPr><w:numId w:val="1004" /><w:ilvl w:val="0" /></w:numPr></w:pPr>
  <w:r><w:t xml:space="preserve">☒ Completed task</w:t></w:r></w:p>

numbering.xml:

<w:abstractNum w:abstractNumId="991"><w:nsid w:val="71315dca" /><w:multiLevelType w:val="multilevel" />
  <w:lvl w:ilvl="0"><w:numFmt w:val="bullet" /><w:lvlText w:val="•" /><w:lvlJc w:val="left" />
  <w:pPr><w:tabs><w:tab w:val="num" w:pos="0" /></w:tabs><w:ind w:left="480" w:hanging="480" /></w:pPr></w:lvl>
  <w:lvl w:ilvl="1"><w:numFmt w:val="bullet" /><w:lvlText w:val="–" /><w:lvlJc w:val="left" /><w:pPr><w:tabs><w:tab w:val="num" w:pos="720" /></w:tabs><w:ind w:left="1200" w:hanging="480" /></w:pPr></w:lvl><!-- ... -->
</w:abstractNum>
+<w:abstractNum w:abstractNumId="992"><w:nsid w:val="71315dcb" /><w:multiLevelType w:val="multilevel" />
+  <w:lvl w:ilvl="0"><w:numFmt w:val="bullet" /><w:lvlText w:val="☐" /><w:lvlJc w:val="left" />
+  <w:pPr><w:tabs><w:tab w:val="num" w:pos="0" /></w:tabs><w:ind w:left="480" w:hanging="480" /></w:pPr></w:lvl>
+  <w:lvl w:ilvl="1"><w:numFmt w:val="bullet" /><w:lvlText w:val="☐" /><w:lvlJc w:val="left" /><w:pPr><w:tabs><w:tab w:val="num" w:pos="720" /></w:tabs><w:ind w:left="1200" w:hanging="480" /></w:pPr></w:lvl><!-- ... -->
+</w:abstractNum>
+<w:abstractNum w:abstractNumId="993"><w:nsid w:val="71315dcc" /><w:multiLevelType w:val="multilevel" />
+  <w:lvl w:ilvl="0"><w:numFmt w:val="bullet" /><w:lvlText w:val="☒" /><w:lvlJc w:val="left" />
+  <w:pPr><w:tabs><w:tab w:val="num" w:pos="0" /></w:tabs><w:ind w:left="480" w:hanging="480" /></w:pPr></w:lvl>
+  <w:lvl w:ilvl="1"><w:numFmt w:val="bullet" /><w:lvlText w:val="☒" /><w:lvlJc w:val="left" /><w:pPr><w:tabs><w:tab w:val="num" w:pos="720" /></w:tabs><w:ind w:left="1200" w:hanging="480" /></w:pPr></w:lvl><!-- ... -->
+</w:abstractNum>
<!-- ... -->
<w:num w:numId="1002"><w:abstractNumId w:val="991" /></w:num>
+<w:num w:numId="1003"><w:abstractNumId w:val="992" /></w:num>
+<w:num w:numId="1004"><w:abstractNumId w:val="993" /></w:num>

This manual editing yields the expected:

image

Note that the checkboxes in the text should be removed.
The code for generating the two new styles could be similar to the already default one included in pandoc.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions