github cmhughes/latexindent.pl V3.7

latest releases: V4.0.1, V4.0, V3.24.7...
6 years ago

This pull request implements the following:

  1. new feature new double-back-slash and comma poly-switches: #106
  2. new feature fine tuning: #113
  3. new feature new poly-switch value for blank lines: #146
  4. update better file extension handling: #154
  5. new feature replacement mode switches: #155

This also resolves #148, #160, #166 and a bug reported at #167.

New features

  1. summary of new poly-switches

From #106, we have new the following new poly-switches

DBSStartsOnOwnLine:
DBSFinishesWithLineBreak
CommaStartsOnOwnLine
CommaFinishesWithLineBreak

I was particularly happy to be able to employ the Else object for each of these, because of which the overhead was manageable.

double back slash poly-switch

For example, starting with

\begin{pmatrix}
1 & 2 \\[2pt] 3 & 4 \\ [ 3 ex] 5&6\\[
\end{pmatrix}

and the YAML:

modifyLineBreaks:
environments:
DBSFinishesWithLineBreak: 1

and running

latexindent.pl -m pmatrix3.tex -l DBS3.yaml

gives

\begin{pmatrix}
1 & 2 \\[2pt]
3 & 4 \\ [ 3 ex]
5 & 6 \\[
4 pt
7 & 8
\end{pmatrix}

The example above is part of the documentation.

comma poly-switch

Starting with

\mycommand{ 1, 2, 3, 4, 5}[6, 7, 8, 9]

and running

latexindent.pl -m mycommand.tex -y="modifyLineBreaks:optionalArguments:CommaFinishesWithLineBreak:1,modifyLineBreaks:mandatoryArguments:CommaFinishesWithLineBreak:1"

gives

\mycommand{ 1,
	2,
	3,
	4,
	5}[6,
	7,
	8,
	9]
  1. fine tuning

From #113 we have:

# fineTuning allows you to tweak the internal pattern matching that 
# is central to latexindent.pl
fineTuning:
    environments:
      name: '[a-zA-Z@\*0-9_\\]+' 
    ifElseFi:
      name: '@?if[a-zA-Z@]*?' 
    commands:
      name: '[+a-zA-Z@\*0-9_\:]+?'
    keyEqualsValuesBracesBrackets:
      name: '[a-zA-Z@\*0-9_\/.\h\{\}:\#-]+?'
      follow: '(?:(?<!\\)\{)|,|(?:(?<!\\)\[)'
    NamedGroupingBracesBrackets:
      name: '[0-9\.a-zA-Z@\*><]+?'
      follow: '\h|\R|\{|\[|\$|\)|\('
    UnNamedGroupingBracesBrackets: 
      follow: '\{|\[|,|&|\)|\(|\$'
    arguments:
      before: '(?:#\d\h*;?,?\/?)+|\<.*?\>'
      between: '_|\^|\*'
    modifyLineBreaks:
      betterFullStop: '(?:\.\)(?!\h*[a-z]))|(?:(?<!(?:(?:e\.g)|(?:i\.e)|(?:etc))))\.(?!(?:[a-z]|[A-Z]|\-|~|\,|[0-9]))'
      doubleBackSlash: '\\\\(?:\h*\[\h*\d+\h*[a-zA-Z]+\h*\])?'
      comma: ','
  1. blank-line poly-switch

If you start with

section1.tex

\section{Introduction}
A sentence

and the YAML:

tmp.yaml

modifyLineBreaks:
    mandatoryArguments:
        RCuBFinishesWithLineBreak: 4

and run

latexindent.pl -m  section1.tex -l=tmp.yaml

then you receive

\section{Introduction}

A sentence

From #146 we have a new poly-swtich value

  1. file extension

latexindent.pl can now be called on any file, regardless of if the extesion is within fileExtensionPrefrerences. If no extension is given, then fileExtensionPreferences must still be consulted.

  1. replacement switches

Starting with the .tex file:

JHenneberg.tex

\begin{equation}
  \ell
  _{j}(x):= \prod
  _{0 \leq m \leq k; \quad m \neq j}\frac{x - x_m}{x_j - x_m}= \frac
  {x - x_0}{x_j - x_0}\cdots \frac
  {x -
    x_{j - 1}}{x_j -
    x_{j - 1}}\frac
  {x -
    x_{j + 1}}{x_j -
    x_{j + 1}}\cdots \frac
  {x - x_k}{x_j - x_k}
\end{equation}

\begin{equation}
  W =
  \begin{bmatrix}
    1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & z_i   & 0 & 1 & 0 & 0         \\ -z_i    & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1
  \end{bmatrix}
\end{equation}

\begin{itemize*}
  \item dünne Platten, kleine Verformungen \item dünne Platten, große Verformungen \item dicke Platten
\end{itemize*}

and the following YAML

JH.yaml

indentAfterItems:
    itemize*: 1

modifyLineBreaks:
    environments:
        DBSFinishesWithLineBreak: 1
    items:
        ItemStartsOnOwnLine: 1
    removeParagraphLineBreaks:
        environments: 
            equation: 1

replacements:
  -
    substitution: s/\h*\R\h*_/_/sg
    when: after
  -
    substitution: s/\h*_/_/sg
    when: after
  -
    substitution: s/([a-zA-Z:\}])\h*(=|-)\h*/$1 $2 /sg
    when: after

and running

latexindent.pl -m  -r JHenneberg.tex -l=JH.yaml

gives the following

output

\begin{equation}
	\ell_{j}(x): = \prod_{0 \leq m \leq k; \quad m \neq j}\frac{x - x_m}{x_j - x_m} = \frac {x - x_0}{x_j - x_0}\cdots \frac {x - x_{j - 1}}{x_j - x_{j - 1}}\frac {x - x_{j + 1}}{x_j - x_{j + 1}}\cdots \frac {x - x_k}{x_j - x_k}
\end{equation}

\begin{equation}
	W = 
	\begin{bmatrix}
		1    & 0   & 0 & 0 & 0 & 0 \\
		0    & 1   & 0 & 0 & 0 & 0 \\
		0    & 0   & 1 & 0 & 0 & 0 \\
		0    & z_i & 0 & 1 & 0 & 0 \\
		-z_i & 0   & 0 & 0 & 1 & 0 \\
		0    & 0   & 0 & 0 & 0 & 1
	\end{bmatrix}
\end{equation}

\begin{itemize*}
	\item dünne Platten, kleine Verformungen
	\item dünne Platten, große Verformungen
	\item dicke Platten
\end{itemize*}

Pull request reference: #169

Don't miss a new latexindent.pl release

NewReleases is sending notifications on new releases.