cmhughes / latexindent.pl

Perl script to add indentation (leading horizontal space) to LaTeX files. It can modify line breaks before, during and after code blocks; it can perform text wrapping and paragraph line break removal. It can also perform string-based and regex-based substitutions/replacements. The script is customisable through its YAML interface.
GNU General Public License v3.0
884 stars 84 forks source link

`indentAfterItems.itemize: 0` overwrites `modifyLineBreas.items.ItemStartsOnOwnLine: 4` #492

Closed cgahr closed 11 months ago

cgahr commented 11 months ago

I have to following tex:

\begin{itemize}
    \item A
    \begin{itemize}
        \item A.child

        \item A.child
    \end{itemize}

    \item B
    \begin{itemize}
        \item B.child

        \item B.child

        \item B.child

        \item B.child
    \end{itemize}
\end{itemize}

I want to format the tex file, as shown in the example:

I would expect that the following settings give me the desired result, however, they do not. Changing indentAtfterItems.itemize from 0 to 1, gets me closer to the desired result but not quite: I get the newlines before each item, but their childs are indented.

yaml settings

defaultIndent: "    "
indentAfterItems:
    itemize: 0
indentRules:
    item: "    "

modifyLineBreaks:
    items:
        ItemStartsOnOwnLine: 4

actual/given output

\begin{itemize}
    \item A
    \begin{itemize}
        \item A.child
        \item A.child
    \end{itemize}
    \item B
    \begin{itemize}
        \item B.child
        \item B.child
        \item B.child
        \item B.child
    \end{itemize}
\end{itemize}

Please paste the output you receive here

desired or expected output

\begin{itemize}
    \item A
    \begin{itemize}
        \item A.child

        \item A.child
    \end{itemize}

    \item B
    \begin{itemize}
        \item B.child

        \item B.child

        \item B.child
        \item B.child

    \end{itemize}
\end{itemize}

similar but different - config

defaultIndent: "    "
indentAfterItems:
    itemize: 1
indentRules:
    item: "    "

modifyLineBreaks:
    items:
        ItemStartsOnOwnLine: 4

similar but different - output

\begin{itemize}

    \item A
        \begin{itemize}

            \item A.child

            \item A.child
        \end{itemize}

    \item B
        \begin{itemize}

            \item B.child

            \item B.child

            \item B.child

            \item B.child
        \end{itemize}
\end{itemize}
cmhughes commented 11 months ago

starting with

\begin{itemize}
    \item A
    \begin{itemize}
        \item A.child

        \item A.child
    \end{itemize}

    \item B
    \begin{itemize}
        \item B.child

        \item B.child

        \item B.child
        \item B.child

    \end{itemize}
\end{itemize}

and use the settings

defaultIndent: "    "
indentRules:
    item: ""   # <!----------- NOTE

modifyLineBreaks:
    items:
        ItemStartsOnOwnLine: 3 # <!----------- NOTE

then I receive

\begin{itemize}
    \item A
    \begin{itemize}
        \item A.child

        \item A.child
    \end{itemize}

    \item B
    \begin{itemize}
        \item B.child

        \item B.child

        \item B.child
        \item B.child

    \end{itemize}
\end{itemize}

which is your desired output.

See https://latexindentpl.readthedocs.io/en/latest/sec-the-m-switch.html#poly-switches for further reference.

cgahr commented 11 months ago

Works like a charm! Thank you so much