textlint-plugin-latex2e icon indicating copy to clipboard operation
textlint-plugin-latex2e copied to clipboard

Improve parsing \item in itemize, enumerate environment

Open pddg opened this issue 4 years ago • 0 comments

Abstract

ListItem represents an item in the List environment. However, itemize and enumerate environments are parsed as ListItem nodes in Paragraph, now.

Sample source

Sample of itemize environment: itemize.tex

\begin{itemize}
  \item item1
  \item item2
\end{itemize}

Sample of enumerate environment: enumerate.tex

\begin{enumerate}
  \item item1
  \item item2
\end{enumerate}

Current behavior

npx tex2tast -r itemize.tex
{
  "type": "Document",
  "raw": "\\begin{itemize}\n    \\item item1\n    \\item item2\n\\end{itemize}",
  "children": [
    {
      "raw": "item1\n    \\item item2",
      "type": "Paragraph",
      "children": [
        {
          "raw": "item1",
          "type": "ListItem",
          "children": [
            {
              "raw": "item1",
              "type": "Str",
              "value": "item1"
            }
          ]
        },
        {
          "raw": "\n    \\item ",
          "type": "Html",
          "value": "\n    \\item "
        },
        {
          "raw": "item2",
          "type": "ListItem",
          "children": [
            {
              "raw": "item2",
              "type": "Str",
              "value": "item2"
            }
          ]
        }
      ]
    }
  ]
}
npx tex2tast -r enumerate.tex
{
  "type": "Document",
  "raw": "\\begin{enumerate}\n    \\item item1\n    \\item item2\n\\end{enumerate}",
  "children": [
    {
      "raw": "item1\n    \\item item2",
      "type": "Paragraph",
      "children": [
        {
          "raw": "item1",
          "type": "ListItem",
          "children": [
            {
              "raw": "item1",
              "type": "Str",
              "value": "item1"
            }
          ]
        },
        {
          "raw": "\n    \\item ",
          "type": "Html",
          "value": "\n    \\item "
        },
        {
          "raw": "item2",
          "type": "ListItem",
          "children": [
            {
              "raw": "item2",
              "type": "Str",
              "value": "item2"
            }
          ]
        }
      ]
    }
  ]
}

Expected behavior

  • ListItem must be in List.
  • \item is a part of LIstItem.
  • ListItem's children must be parsed normally.
{
  "type": "Document",
  "raw": "\\begin{itemize}\n    \\item item1\n    \\item item2\n\\end{itemize}",
  "children": [
    {
      "raw": "\\begin{itemize}\n    \\item item1\n    \\item item2\n\\end{itemize}",
      "type": "List",
      "children": [
        {
          "raw": "\n    ",
          "type": "Html",
          "value": "\n    "
        },
        {
          "raw": "\\item item1",
          "type": "ListItem",
          "children": [
            {
              "raw": "item1",
              "type": "Paragraph",
              "children": [
                {
                  "raw": "item1",
                  "type": "Str",
                  "value": "item1"
                }
              ]
            }
          ]
        },
        {
          "raw": "\n    ",
          "type": "Html",
          "value": "\n    "
        },
        {
          "raw": "\\item item2",
          "type": "ListItem",
          "children": [
            {
              "raw": "item2",
              "type": "Paragraph",
              "children": [
                {
                  "raw": "item2",
                  "type": "Str",
                  "value": "item2"
                }
              ]
            }
          ]
        },
        {
          "raw": "\n",
          "type": "Html",
          "value": "\n"
        },
      ]
    }
  ]
}

pddg avatar Feb 20 '21 06:02 pddg