summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
Diffstat (limited to 'Master')
-rwxr-xr-xMaster/bin/win32/latexindent.exebin11463071 -> 11466442 bytes
-rw-r--r--Master/texmf-dist/doc/support/latexindent/README2
-rw-r--r--Master/texmf-dist/doc/support/latexindent/appendices.tex31
-rw-r--r--Master/texmf-dist/doc/support/latexindent/cmhlistings.tex7
-rw-r--r--Master/texmf-dist/doc/support/latexindent/latexindent.pdfbin726870 -> 855773 bytes
-rw-r--r--Master/texmf-dist/doc/support/latexindent/latexindent.tex199
-rw-r--r--Master/texmf-dist/doc/support/latexindent/logo.tex10
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-conclusions-know-limitations.tex11
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex142
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-demonstration.tex2
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-fine-tuning.tex109
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex110
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-indent-config-and-settings.tex25
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-introduction.tex16
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-replacements.tex372
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex798
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsec-commands-and-their-options.tex86
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsec-conflicting-poly-switches.tex39
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsec-noAdditionalIndent-indentRules.tex2
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsec-partnering-poly-switches.tex36
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsubsec-commands-with-arguments.tex7
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex25
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsubsec-environments-with-items.tex7
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsubsec-headings.tex56
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsubsec-ifelsefi.tex11
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsubsec-no-add-remaining-code-blocks.tex13
-rw-r--r--Master/texmf-dist/doc/support/latexindent/subsubsec-special.tex2
-rw-r--r--Master/texmf-dist/doc/support/latexindent/title.tex7
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm21
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm42
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/Command.pm11
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm64
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Else.pm45
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm56
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm15
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm19
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm4
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm83
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm15
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm11
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/MandatoryArgument.pm4
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm204
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm19
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/OptionalArgument.pm4
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm89
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm2
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm9
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm18
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm4
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/defaultSettings.yaml198
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/latexindent.pl5
51 files changed, 2071 insertions, 996 deletions
diff --git a/Master/bin/win32/latexindent.exe b/Master/bin/win32/latexindent.exe
index cd0ee4190cb..8de7e3a1161 100755
--- a/Master/bin/win32/latexindent.exe
+++ b/Master/bin/win32/latexindent.exe
Binary files differ
diff --git a/Master/texmf-dist/doc/support/latexindent/README b/Master/texmf-dist/doc/support/latexindent/README
index 70999521516..86781a6af1c 100644
--- a/Master/texmf-dist/doc/support/latexindent/README
+++ b/Master/texmf-dist/doc/support/latexindent/README
@@ -1,5 +1,5 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- latexindent.pl, version 3.6, 2019-05-05
+ latexindent.pl, version 3.7, 2019-07-13
PERL script to indent code within environments, and align delimited
environments in .tex files.
diff --git a/Master/texmf-dist/doc/support/latexindent/appendices.tex b/Master/texmf-dist/doc/support/latexindent/appendices.tex
index bc04c6c1a0b..59037a5b24a 100644
--- a/Master/texmf-dist/doc/support/latexindent/appendices.tex
+++ b/Master/texmf-dist/doc/support/latexindent/appendices.tex
@@ -37,7 +37,7 @@ exit;
install any missing \texttt{perl} modules on your system; if you run
\begin{commandshell}
perl latexindent-module-installer.pl
- \end{commandshell}
+\end{commandshell}
or
\begin{dosprompt}
perl latexindent-module-installer.pl
@@ -51,7 +51,7 @@ perl latexindent-module-installer.pl
might visit the software center, or else run
\begin{commandshell}
sudo perl -MCPAN -e 'install "File::HomeDir"'
- \end{commandshell}
+\end{commandshell}
Linux users may be interested in exploring Perlbrew \cite{perlbrew}; possible
installation and setup options follow for Ubuntu (other distributions will need slightly
@@ -69,6 +69,19 @@ cpanm Log::Log4perl
cpanm Log::Dispatch
\end{commandshell}
+ Users of the Macintosh operating system might like to explore the following commands, for
+ example:
+ \begin{commandshell}
+brew install perl
+brew install cpanm
+
+cpanm YAML::Tiny
+cpanm File::HomeDir
+cpanm Unicode::GCString
+cpanm Log::Log4perl
+cpanm Log::Dispatch
+\end{commandshell}
+
Strawberry Perl users on Windows might use \texttt{CPAN client}. All of the modules are
readily available on CPAN \cite{cpan}.
@@ -97,7 +110,7 @@ latexindent.exe -t myfile.tex
\item run
\begin{commandshell}
ls /usr/local/bin
- \end{commandshell}
+\end{commandshell}
to see what is \emph{currently} in there;
\item run the following commands
\begin{commandshell}
@@ -110,14 +123,14 @@ sudo make install
\item run
\begin{commandshell}
ls /usr/local/bin
- \end{commandshell}
+\end{commandshell}
again to check that \texttt{latexindent.pl}, its modules and \texttt{defaultSettings.yaml} have
been added.
\end{enumerate}
To \emph{remove} the files, run
\begin{commandshell}
sudo make uninstall
- \end{commandshell}
+\end{commandshell}
\subsection{Add to path for Windows}
To add \texttt{latexindent.exe} to the path for Windows, follow these steps:
\begin{enumerate}
@@ -156,7 +169,7 @@ echo %path%
If we run the following command (noting that \texttt{-t} is active)
\begin{commandshell}
latexindent.pl -t -l=logfile-prefs1.yaml simple.tex
- \end{commandshell}
+\end{commandshell}
then on inspection of \texttt{indent.log} we will find the snippet given in
\cref{lst:indentlog}.
\begin{cmhlistings}[style=tcblatex,morekeywords={TRACE}]{\texttt{indent.log}}{lst:indentlog}
@@ -183,7 +196,7 @@ TRACE: Searching myenv for optional and mandatory arguments
3.0. Explicitly, in previous versions you might have run, for example,
\begin{commandshell}
latexindent.pl -o myfile.tex outputfile.tex
- \end{commandshell}
+\end{commandshell}
whereas in Version 3.0 you would run any of the following, for example,
\begin{commandshell}
latexindent.pl -o=outputfile.tex myfile.tex
@@ -192,7 +205,7 @@ latexindent.pl myfile.tex -o outputfile.tex
latexindent.pl myfile.tex -o=outputfile.tex
latexindent.pl myfile.tex -outputfile=outputfile.tex
latexindent.pl myfile.tex -outputfile outputfile.tex
- \end{commandshell}
+\end{commandshell}
noting that the \emph{output} file is given \emph{next to} the
\texttt{-o} switch.
@@ -223,7 +236,7 @@ latexindent.pl myfile.tex -outputfile outputfile.tex
\begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/noAddtionalIndentNew.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} for \texttt{displayMath} in Version 3.0}{lst:indentAfterThisHeadingNew1}
- \cmhlistingsfromfile{demonstrations/noAddtionalIndentNew1.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} for \texttt{displayMath} in Version 3.0}{lst:indentAfterThisHeadingNew2}
+ \cmhlistingsfromfile{demonstrations/noAddtionalIndentNew1.yaml}[yaml-TCB]{\texttt{noAdditionalIndent} for \texttt{displayMath} in Version 3.0}{lst:indentAfterThisHeadingNew2}
\end{minipage}%
\mbox{}\hfill \begin{minipage}{.25\textwidth}
diff --git a/Master/texmf-dist/doc/support/latexindent/cmhlistings.tex b/Master/texmf-dist/doc/support/latexindent/cmhlistings.tex
index 85aff0881cd..1f058616d6d 100644
--- a/Master/texmf-dist/doc/support/latexindent/cmhlistings.tex
+++ b/Master/texmf-dist/doc/support/latexindent/cmhlistings.tex
@@ -20,4 +20,9 @@
.. warning::^^J
#1^^J
.. endwarning::^^J
-}{}
+}
+\newcommand{\example}[1]{
+.. proof:example::^^J
+#1^^J
+.. endproof:example::^^J
+}
diff --git a/Master/texmf-dist/doc/support/latexindent/latexindent.pdf b/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
index e26105457e2..12a226e99de 100644
--- a/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
+++ b/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/latexindent/latexindent.tex b/Master/texmf-dist/doc/support/latexindent/latexindent.tex
index 71ebc1d3ce4..775bd6a7d9d 100644
--- a/Master/texmf-dist/doc/support/latexindent/latexindent.tex
+++ b/Master/texmf-dist/doc/support/latexindent/latexindent.tex
@@ -47,7 +47,7 @@
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations,shapes}
\usepackage{varioref} % the documentation library from tcolorbox loads hyperref
-\tcbuselibrary{breakable,minted,xparse,documentation,hooks}
+\tcbuselibrary{breakable,minted,xparse,documentation,hooks,raster}
\hypersetup{
pdfauthor={Chris Hughes},
pdftitle={latexindent.pl package},
@@ -122,6 +122,8 @@
\definecolor{harvestgold}{cmyk}{0.00, 0.05, 0.51, 0.07} %EDE275
\definecolor{cmhgold}{cmyk}{0,0.178,0.909,0.008} %FDD017
+\colorlet{cmhgray}{gray!30!white}
+
\makeatletter
\tcbset{
addtolol/.style={list entry={\kvtcb@title},add to list={lol}{lstlisting}},
@@ -152,16 +154,13 @@
listing engine=listings,
left=0cm,
boxrule=0pt,
- %leftrule=3pt,
sharp corners,
center title,
- %colbacktitle=white!75!black,
colbacktitle=white!75!blue,
colframe=white!25!blue,
colback=white!90!blue,
toprule=2pt,
titlerule=2pt,
- %bottomrule=1pt,
},
MLB-TCB/.style={
yaml-TCB,
@@ -171,16 +170,25 @@
colback=white!60!cmhgold,
width=0.9\linewidth,
before=\centering,
- %bottomrule=1pt,
enhanced,
overlay={\node[anchor=north east,outer sep=2pt,draw=cmhgold,very thick,double,fill=harvestgold,font =\small] at ([yshift=-3mm]frame.north east) {\texttt{-m}}; }
},
+ replace-TCB/.style={
+ yaml-TCB,
+ center title,
+ colbacktitle=white!75!green,
+ colframe=white!25!green,
+ colback=white!90!green,
+ width=0.9\linewidth,
+ before=\centering,
+ enhanced,
+ overlay={\node[anchor=north east,outer sep=2pt,draw=white!25!green,very thick,circle,fill=white!75!green,font =\small] at ([yshift=-3mm]frame.north east) {\texttt{-r}}; }
+ },
yaml-obsolete/.style={
listing only,
listing engine=listings,
left=0cm,
boxrule=0pt,
- %leftrule=3pt,
sharp corners,
center title,
toprule=2pt,
@@ -196,15 +204,23 @@
},
}
-\newtcblisting[use counter=lstlisting]{cmhlistings}[3][]{%
+\DeclareTCBListing[use counter=lstlisting]{cmhlistings}{s O{} m m}{%
cmhlistings,
- addtolol,
+ IfBooleanTF={#1}{new-to-this-version}{addtolol},
center title,
- title={\color{black}{\scshape Listing \thetcbcounter}: ~#2},label={#3},
+ title={\color{black}{\scshape Listing \thetcbcounter}: ~#3},label={#4},
listing engine=listings,
- listing options={#1},
+ listing options={#2},
}
+\DeclareDocumentEnvironment{cmhtcbraster}{O{}}{\begin{tcbraster}[
+ new-to-this-version/.style={
+ enhanced,
+ overlay app={\node[anchor=south east] at ([yshift=-3mm,xshift=3mm]frame.north east) {\stardemo[scale=1.2]}; },
+ addtololstar,
+ },
+ raster valign=top,raster columns=2,#1]}{\end{tcbraster}}
+
% \cmhlistingsfromfile
% * no star: not new, star: new
% [ listing/minted options ]
@@ -298,163 +314,175 @@
\lstdefinestyle{fileExtensionPreference}{
style=yaml-LST,
- firstnumber=38,linerange={38-42},
+ firstnumber=41,linerange={41-45},
numbers=left,
}
\lstdefinestyle{logFilePreferences}{
style=yaml-LST,
- firstnumber=79,linerange={79-89},
+ firstnumber=85,linerange={85-95},
numbers=left,
}
\lstdefinestyle{verbatimEnvironments}{
style=yaml-LST,
- firstnumber=93,linerange={93-96},
+ firstnumber=99,linerange={99-102},
numbers=left,
}
\lstdefinestyle{verbatimCommands}{
style=yaml-LST,
- firstnumber=99,linerange={99-101},
+ firstnumber=105,linerange={105-107},
numbers=left,
}
\lstdefinestyle{noIndentBlock}{
style=yaml-LST,
- firstnumber=107,linerange={107-109},
+ firstnumber=112,linerange={112-114},
numbers=left,
}
\lstdefinestyle{removeTrailingWhitespace}{
style=yaml-LST,
- firstnumber=112,linerange={112-114},
+ firstnumber=117,linerange={117-119},
numbers=left,
}
\lstdefinestyle{fileContentsEnvironments}{
style=yaml-LST,
- firstnumber=118,linerange={118-120},
+ firstnumber=123,linerange={123-125},
numbers=left,
}
\lstdefinestyle{lookForPreamble}{
style=yaml-LST,
- firstnumber=126,linerange={126-130},
+ firstnumber=131,linerange={131-135},
numbers=left,
}
\lstdefinestyle{indentAfterItems}{
style=yaml-LST,
- firstnumber=182,linerange={182-186},
+ firstnumber=187,linerange={187-191},
numbers=left,
}
\lstdefinestyle{itemNames}{
style=yaml-LST,
- firstnumber=192,linerange={192-194},
+ firstnumber=197,linerange={197-199},
numbers=left,
}
\lstdefinestyle{specialBeginEnd}{
style=yaml-LST,
- firstnumber=198,linerange={198-211},
+ firstnumber=203,linerange={203-216},
numbers=left,
}
\lstdefinestyle{indentAfterHeadings}{
style=yaml-LST,
- firstnumber=221,linerange={221-230},
+ firstnumber=226,linerange={226-235},
numbers=left,
}
\lstdefinestyle{noAdditionalIndentGlobalEnv}{
style=yaml-LST,
- firstnumber=279,linerange={279-280},
+ firstnumber=284,linerange={284-285},
numbers=left,
}
\lstdefinestyle{noAdditionalIndentGlobal}{
style=yaml-LST,
- firstnumber=279,linerange={279-291},
+ firstnumber=284,linerange={284-296},
numbers=left,
}
\lstdefinestyle{indentRulesGlobalEnv}{
style=yaml-LST,
- firstnumber=295,linerange={295-296},
+ firstnumber=300,linerange={300-301},
numbers=left,
}
\lstdefinestyle{indentRulesGlobal}{
style=yaml-LST,
- firstnumber=295,linerange={295-307},
+ firstnumber=300,linerange={300-312},
numbers=left,
}
\lstdefinestyle{commandCodeBlocks}{
style=yaml-LST,
- firstnumber=310,linerange={310-324},
+ firstnumber=315,linerange={315-329},
numbers=left,
}
\lstdefinestyle{modifylinebreaks}{
style=yaml-LST,
- firstnumber=394,linerange={394-396},
+ firstnumber=441,linerange={441-443},
numbers=left,
}
\lstdefinestyle{textWrapOptions}{
style=yaml-LST,
- firstnumber=421,linerange={421-422},
+ firstnumber=468,linerange={468-469},
numbers=left,
}
\lstdefinestyle{textWrapOptionsAll}{
style=yaml-LST,
- firstnumber=421,linerange={421-437},
+ firstnumber=468,linerange={468-484},
numbers=left,
}
\lstdefinestyle{removeParagraphLineBreaks}{
style=yaml-LST,
- firstnumber=438,linerange={438-452},
+ firstnumber=485,linerange={485-499},
numbers=left,
}
\lstdefinestyle{paragraphsStopAt}{
style=yaml-LST,
- firstnumber=453,linerange={453-462},
+ firstnumber=500,linerange={500-509},
numbers=left,
}
\lstdefinestyle{oneSentencePerLine}{
style=yaml-LST,
- firstnumber=397,linerange={397-420},
+ firstnumber=444,linerange={444-467},
numbers=left,
}
\lstdefinestyle{sentencesFollow}{
style=yaml-LST,
- firstnumber=402,linerange={402-410},
+ firstnumber=449,linerange={449-457},
numbers=left,
}
\lstdefinestyle{sentencesBeginWith}{
style=yaml-LST,
- firstnumber=411,linerange={411-414},
+ firstnumber=458,linerange={458-461},
numbers=left,
}
\lstdefinestyle{sentencesEndWith}{
style=yaml-LST,
- firstnumber=415,linerange={415-420},
+ firstnumber=462,linerange={462-467},
numbers=left,
}
\lstdefinestyle{modifylinebreaksEnv}{
style=yaml-LST,
- firstnumber=463,linerange={463-472},
+ firstnumber=510,linerange={510-519},
+ numbers=left,
+}
+
+\lstdefinestyle{replacements}{
+ style=yaml-LST,
+ firstnumber=571,linerange={571-579},
+ numbers=left,
+}
+
+\lstdefinestyle{fineTuning}{
+ style=yaml-LST,
+ firstnumber=582,linerange={582-603},
numbers=left,
}
@@ -499,6 +527,34 @@
parbox=false,
}
+\newtcolorbox[auto counter]{example}{breakable,
+ enhanced jigsaw,
+ before skip=6pt,after skip=6pt,
+ frame hidden,
+ title={\llap{Example~\thetcbcounter\hspace{3mm}}},
+ fonttitle=\bfseries,
+ coltitle=black,
+ attach title to upper,
+ grow to left by=5mm,
+ top=3mm,
+ overlay unbroken={%
+ \draw[thick,cmhgray] ([xshift=3mm]interior.north east)--([xshift=3mm]interior.south east);
+ \path [fill=cmhgray] ([xshift=3mm]interior.north east) circle (.5mm);
+ \path [fill=cmhgray] ([xshift=3mm]interior.south east) circle (1mm);
+ },
+ overlay first={%
+ \draw[thick,cmhgray] ([xshift=3mm]interior.north east)--([xshift=3mm]interior.south east);
+ \path [fill=cmhgray] ([xshift=3mm]interior.north east) circle (.5mm);
+ %\path [draw=cmhgray,fill=white] ([xshift=3mm]interior.south east) circle (.5mm);
+ },
+ overlay last={%
+ \draw[thick,cmhgray] ([xshift=3mm]interior.north east)--([xshift=3mm]interior.south east);
+ %\path [fill=white,draw=cmhgray] ([xshift=3mm]interior.north east) circle (.5mm);
+ \path [fill=cmhgray] ([xshift=3mm]interior.south east) circle (1mm);
+ },
+ parbox=false,
+}
+
% copied from /usr/local/texlive/2013/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
% the only modification is the \stars and \endstars
\defbibenvironment{specialbib}
@@ -550,6 +606,21 @@
{\llap{\thesection\hskip.5cm}}
{0pt}
{}
+
+\newcommand*\ruleline[1]{%
+ \par\noindent\raisebox{.8ex}{\makebox[\linewidth]{\hrulefill\hspace{1ex}\raisebox{-1.8ex}{#1}\hspace{1ex}\hrulefill}}}
+
+\newcommand{\imagetouse}{logo-bw}
+
+\titleformat% Formatting the header
+{\section} % command
+[block] % shape - Only managed to get it working with block
+{\normalfont\bfseries\huge} % format - Change here as needed
+{\centering {\scshape Section \thesection}\\} % the section
+{0pt} % sep
+{\centering \ruleline{\includegraphics{\imagetouse}}\\ % The horizontal rule
+ \centering} % And the actual title
+
% custom subsection
\titleformat{\subsection}
{\normalfont\bfseries}
@@ -563,9 +634,9 @@
{0pt}
{}
-\titlespacing\section{0pt}{12pt plus 4pt minus 2pt}{-5pt plus 2pt minus 2pt}
-\titlespacing\subsection{0pt}{12pt plus 4pt minus 2pt}{-6pt plus 2pt minus 2pt}
-\titlespacing\subsubsection{0pt}{12pt plus 4pt minus 2pt}{-6pt plus 2pt minus 2pt}
+\titlespacing\section{0pt}{12pt plus 4pt minus 2pt}{34pt plus 2pt minus 2pt}
+\titlespacing\subsection{0pt}{12pt plus 4pt minus 2pt}{4pt plus 2pt minus 2pt}
+\titlespacing\subsubsection{0pt}{12pt plus 4pt minus 2pt}{4pt plus 2pt minus 2pt}
% list of listings
\contentsuse{lstlisting}{lol}
@@ -677,26 +748,30 @@
\input{title.tex}
\tableofcontents
{\small\lstlistoflistings}
-\input{sec-introduction}
-\input{sec-demonstration}
-\input{sec-how-to-use}
-\input{sec-indent-config-and-settings.tex}
-\input{sec-default-user-local}
-\input{subsec-noAdditionalIndent-indentRules}
-\input{subsubsec-environments-and-their-arguments}
-\input{subsubsec-environments-with-items}
-\input{subsubsec-commands-with-arguments}
-\input{subsubsec-ifelsefi}
-\input{subsubsec-special}
-\input{subsubsec-headings}
-\input{subsubsec-no-add-remaining-code-blocks}
-\stopcontents[noAdditionalIndent]
-\input{subsec-commands-and-their-options}
-\input{sec-the-m-switch}
-\stopcontents[the-m-switch]
-\input{subsec-partnering-poly-switches}
-\input{subsec-conflicting-poly-switches}
-\input{sec-conclusions-know-limitations}
-\input{references}
-\input{appendices}
+% start sections on new page
+\newcommand{\sectionbreak}{\clearpage\thispagestyle{plain}}
+ \input{sec-introduction}
+ \input{sec-demonstration}
+ \input{sec-how-to-use}
+ \input{sec-indent-config-and-settings.tex}
+ \input{sec-default-user-local}
+ \input{subsec-noAdditionalIndent-indentRules}
+ \input{subsubsec-environments-and-their-arguments}
+ \input{subsubsec-environments-with-items}
+ \input{subsubsec-commands-with-arguments}
+ \input{subsubsec-ifelsefi}
+ \input{subsubsec-special}
+ \input{subsubsec-headings}
+ \input{subsubsec-no-add-remaining-code-blocks}
+ \stopcontents[noAdditionalIndent]
+ \input{subsec-commands-and-their-options}
+ \input{sec-the-m-switch}
+ \stopcontents[the-m-switch]
+ \input{subsec-partnering-poly-switches}
+ \input{subsec-conflicting-poly-switches}
+ \input{sec-replacements}
+ \input{sec-fine-tuning}
+ \input{sec-conclusions-know-limitations}
+ \input{references}
+ \input{appendices}
\end{document}
diff --git a/Master/texmf-dist/doc/support/latexindent/logo.tex b/Master/texmf-dist/doc/support/latexindent/logo.tex
index e2db1161204..5bc31e0a4f3 100644
--- a/Master/texmf-dist/doc/support/latexindent/logo.tex
+++ b/Master/texmf-dist/doc/support/latexindent/logo.tex
@@ -24,10 +24,10 @@
\pagecolor{white}
\begin{tikzpicture}[logo/.style={draw=blue,circle,fill=none,fill opacity=0.75}]
\matrix{%
- \node[logo,dash pattern=on .5pt off 1.0pt,thick,draw=purple!75!white]{}; & \node[logo,draw=burntorange]{}; \\
+ \node[logo,dash pattern=on .5pt off 1.0pt,thick,draw=purple!75!white]{}; & \node[logo,draw=burntorange]{}; \\
\node[logo,fill,draw=bakeoffgreen,fill=bakeoffblue]{}; & \node[logo,double,draw=cmhgold,fill=harvestgold]{};\\};
- \begin{scope}[on background layer]
- %\node [yshift=0.01em,xshift=0.07em] {\resizebox{1cm}{!}{\color{gray!50!white}\faGithub}};
- \node {\resizebox{1cm}{!}{\color{gray!25!white}\faGithub}};
- \end{scope}
+ \begin{scope}[on background layer]
+ %\node [yshift=0.01em,xshift=0.07em] {\resizebox{1cm}{!}{\color{gray!50!white}\faGithub}};
+ \node {\resizebox{1cm}{!}{\color{gray!25!white}\faGithub}};
+ \end{scope}
\end{tikzpicture}
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-conclusions-know-limitations.tex b/Master/texmf-dist/doc/support/latexindent/sec-conclusions-know-limitations.tex
index 0128adb8a38..1e865c9c843 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-conclusions-know-limitations.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-conclusions-know-limitations.tex
@@ -17,8 +17,8 @@
future.
There are other limitations to do with the multicolumn alignment routine (see
- \vref{lst:tabular2-mod2}); in particular, when working with codeblocks in which multicolumn
- commands overlap, the algorithm can fail.
+ \vref{lst:tabular2-mod2}); in particular, when working with code blocks in which
+ multicolumn commands overlap, the algorithm can fail.
Another limitation is to do with efficiency, particularly when the \texttt{-m}
switch is active, as this adds many checks and processes. The current implementation
@@ -27,9 +27,10 @@
\emph{nested} code blocks will need to be stored in the `packing' phase, and
that this will improve the efficiency of the script.
- You can run \texttt{latexindent} on \texttt{.sty}, \texttt{.cls} and
- any file types that you specify in \lstinline[breaklines=true]!fileExtensionPreference! (see \vref{lst:fileExtensionPreference});
- if you find a case in which the script struggles, please feel free to report it at
+ You can run \texttt{latexindent} on any file;%
+ \announce*{2019-07-13}*{ability to call latexindent on any file} if you don't specify an extension, then the extensions that you
+ specify in \lstinline[breaklines=true]!fileExtensionPreference! (see \vref{lst:fileExtensionPreference}) will be consulted. If you
+ find a case in which the script struggles, please feel free to report it at
\cite{latexindent-home}, and in the meantime, consider using a \texttt{noIndentBlock} (see \cpageref{lst:noIndentBlockdemo}).
I hope that this script is useful to some; if you find an example where the script does
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex b/Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex
index 761d1ea5473..2a657fae8a6 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-default-user-local.tex
@@ -38,7 +38,7 @@ latexindent.pl myfile
If you call \texttt{latexindent.pl} with the \texttt{-w} switch (to overwrite
\texttt{myfile.tex}) then it will create a backup file before doing any indentation;
the default extension is \texttt{.bak}, so, for example,
- \texttt{myfile.bak0} would be created when calling \texttt{latexindent.pl myfile.tex} for the
+ \texttt{myfile.bak0} would be created when calling \texttt{latexindent.pl myfile.tex} for the
first time.
By default, every time you subsequently call \texttt{latexindent.pl} with the
@@ -64,15 +64,15 @@ latexindent.pl myfile
\yamltitle{cycleThroughBackUps}*{integer}
Some users may wish to cycle through backup files, by deleting the oldest backup file and
keeping only the most recent; for example, with \texttt{maxNumberOfBackUps: 4}, and
- \texttt{cycleThroughBackUps} set to \texttt{1} then the
- \texttt{copy} procedure given below would be obeyed.
+ \texttt{cycleThroughBackUps} set to \texttt{1} then the \texttt{copy}
+ procedure given below would be obeyed.
\begin{commandshell}
copy myfile.bak1 to myfile.bak0
copy myfile.bak2 to myfile.bak1
copy myfile.bak3 to myfile.bak2
copy myfile.bak4 to myfile.bak3
- \end{commandshell}
+\end{commandshell}
The default value of \texttt{cycleThroughBackUps} is \texttt{0}.
\yamltitle{logFilePreferences}*{fields}
@@ -87,7 +87,7 @@ copy myfile.bak4 to myfile.bak3
\cmhlistingsfromfile[style=logFilePreferences,]*{../defaultSettings.yaml}[width=.9\linewidth,before=\centering,yaml-TCB]{\texttt{logFilePreferences}}{lst:logFilePreferences}
- When%%%%
+ When%
\announce{2018-01-13}{showDecorationStartCodeBlockTrace feature for log file} either of the
\texttt{trace} modes (see \cpageref{page:traceswitch}) are active, you will receive
detailed information in \texttt{indent.log}. You can specify character strings to
@@ -111,15 +111,12 @@ copy myfile.bak4 to myfile.bak3
no indentation will be performed on environments that you have specified in this field,
see \cref{lst:verbatimEnvironments}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile[style=verbatimEnvironments]*{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{verbatimEnvironments}}{lst:verbatimEnvironments}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=verbatimCommands]*{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{verbatimCommands}}{lst:verbatimCommands}
- \end{minipage}%
+ \end{cmhtcbraster}
- Note that if you put an environment in \texttt{verbatimEnvironments} and in other fields such
+ Note that if you put an environment in \texttt{verbatimEnvironments} and in other fields such
as \texttt{lookForAlignDelims} or \texttt{noAdditionalIndent} then \texttt{latexindent.pl} will
\emph{always} prioritize \texttt{verbatimEnvironments}.
@@ -243,7 +240,7 @@ lookForAlignDelims:
\cref{lst:aligndelims:basic} and the \emph{advanced} version in
\cref{lst:aligndelims:advanced}; we will discuss each in turn.
- The environments specified in this field will be operated on in a special way by
+ The environments specified in this field will be operated on in a special way by
\texttt{latexindent.pl}. In particular, it will try and align each column by its
alignment tabs. It does have some limitations (discussed further in
\cref{sec:knownlimitations}), but in many cases it will produce results such as those in
@@ -255,13 +252,10 @@ lookForAlignDelims:
\emph{specific} instances of the environment, you could wrap them in something
from \texttt{noIndentBlock} (see \vref{lst:noIndentBlock}).
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/tabular1.tex}{\texttt{tabular1.tex}}{lst:tabularbefore:basic}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/tabular1-default.tex}{\texttt{tabular1.tex} default output}{lst:tabularafter:basic}
- \end{minipage}%
+ \end{cmhtcbraster}
If, for example, you wish to remove the alignment of the \lstinline!\\! within a
delimiter-aligned block, then the advanced form of \texttt{lookForAlignDelims} shown in
@@ -343,7 +337,7 @@ latexindent.pl tabular2.tex -l tabular2.yaml,tabular5.yaml
latexindent.pl tabular2.tex -l tabular2.yaml,tabular6.yaml
latexindent.pl tabular2.tex -l tabular2.yaml,tabular7.yaml
latexindent.pl tabular2.tex -l tabular2.yaml,tabular8.yaml
- \end{commandshell}
+\end{commandshell}
we obtain the respective outputs given in \crefrange{lst:tabular2-default}{lst:tabular2-mod8}.
\begin{widepage}
@@ -397,17 +391,14 @@ latexindent.pl tabular2.tex -l tabular2.yaml,tabular8.yaml
you run the command
\begin{commandshell}
latexindent.pl matrix1.tex
- \end{commandshell}
+\end{commandshell}
then the before-and-after results shown in \cref{lst:matrixbefore,lst:matrixafter} are achievable by
default.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/matrix1.tex}{\texttt{matrix1.tex}}{lst:matrixbefore}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/matrix1-default.tex}{\texttt{matrix1.tex} default output}{lst:matrixafter}
- \end{minipage}%
+ \end{cmhtcbraster}
If you have blocks of code that you wish to align at the \& character that are
\emph{not} wrapped in, for example, \lstinline!\begin{tabular}! \ldots
@@ -418,13 +409,10 @@ latexindent.pl matrix1.tex
\lstinline!*! and \lstinline!\begin{tabular}!; note also that you may use any
environment name that you have specified in \texttt{lookForAlignDelims}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/align-block.tex}{\texttt{align-block.tex}}{lst:alignmentmarkup}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/align-block-default.tex}{\texttt{align-block.tex} default output}{lst:alignmentmarkup-default}
- \end{minipage}%
+ \end{cmhtcbraster}
With reference to \vref{tab:code-blocks} and the, yet undiscussed, fields of
\texttt{noAdditionalIndent} and \texttt{indentRules}
@@ -432,21 +420,19 @@ latexindent.pl matrix1.tex
considered \texttt{environments}.
\yamltitle{indentAfterItems}*{fields}
- \begin{wrapfigure}[5]{r}[0pt]{7cm}
- \cmhlistingsfromfile[style=indentAfterItems]*{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{indentAfterItems}}{lst:indentafteritems}
- \end{wrapfigure}
- The environment names specified in \texttt{indentAfterItems} tell \texttt{latexindent.pl}
+ The environment names specified in \texttt{indentAfterItems} tell \texttt{latexindent.pl}
to look for \lstinline!\item! commands; if these switches are set to
\texttt{1} then indentation will be performed so as indent the code after
each \texttt{item}. A demonstration is given in \cref{lst:itemsbefore,lst:itemsafter}
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster columns=3,
+ raster left skip=-3.5cm,
+ raster right skip=-2cm,
+ raster column skip=.03\linewidth]
+ \cmhlistingsfromfile[style=indentAfterItems]*{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{indentAfterItems}}{lst:indentafteritems}
\cmhlistingsfromfile{demonstrations/items1.tex}{\texttt{items1.tex}}{lst:itemsbefore}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/items1-default.tex}{\texttt{items1.tex} default output}{lst:itemsafter}
- \end{minipage}
+ \end{cmhtcbraster}
\yamltitle{itemNames}*{fields}
\begin{wrapfigure}[5]{r}[0pt]{5cm}
@@ -461,7 +447,7 @@ latexindent.pl matrix1.tex
\vref{lst:mysettings} \\ in particular \label{page:examsettings}.)
\yamltitle{specialBeginEnd}*{fields}\label{yaml:specialBeginEnd}
- The fields specified%%%%
+ The fields specified%
\announce{2017-08-21}*{specialBeginEnd} in
\texttt{specialBeginEnd} are, in their default state, focused on math mode begin and end
statements, but there is no requirement for this to be the case; \cref{lst:specialBeginEnd}
@@ -477,20 +463,17 @@ latexindent.pl matrix1.tex
A demonstration of the before-and-after results are shown in \cref{lst:specialbefore,lst:specialafter}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/special1.tex}{\texttt{special1.tex} before}{lst:specialbefore}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/special1-default.tex}{\texttt{special1.tex} default output}{lst:specialafter}
- \end{minipage}
+ \end{cmhtcbraster}
For each field, \texttt{lookForThis} is set to \texttt{1} by default,
which means that \texttt{latexindent.pl} will look for this pattern; you can tell
\texttt{latexindent.pl} not to look for the pattern, by setting \texttt{lookForThis}
to \texttt{0}.
- There are%%%%
+ There are%
\announce{2017-08-21}{specialBeforeCommand} examples in which it
is advantageous to search for \texttt{specialBeginEnd} fields \emph{before}
searching for commands, and the \texttt{specialBeforeCommand} switch controls this behaviour.
@@ -500,20 +483,17 @@ latexindent.pl matrix1.tex
Now consider the YAML files shown in \cref{lst:specialsLeftRight-yaml,lst:specialBeforeCommand-yaml}
- \begin{minipage}{.49\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile[]*{demonstrations/specialsLeftRight.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{specialsLeftRight.yaml}}{lst:specialsLeftRight-yaml}
- \end{minipage}
- \hfill
- \begin{minipage}{.49\linewidth}
\cmhlistingsfromfile[]*{demonstrations/specialBeforeCommand.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{specialBeforeCommand.yaml}}{lst:specialBeforeCommand-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
Upon running the following commands
\begin{widepage}
\begin{commandshell}
latexindent.pl specialLR.tex -l=specialsLeftRight.yaml
latexindent.pl specialLR.tex -l=specialsLeftRight.yaml,specialBeforeCommand.yaml
- \end{commandshell}
+\end{commandshell}
\end{widepage}
we receive the respective outputs in \cref{lst:specialLR-comm-first-tex,lst:specialLR-special-first-tex}.
@@ -534,7 +514,7 @@ latexindent.pl specialLR.tex -l=specialsLeftRight.yaml,specialBeforeCommand.yaml
\texttt{specialBeginEnd} should be sought \emph{before} commands.
\end{itemize}
- You can,optionally, specify%%%%
+ You can,optionally, specify%
\announce{2018-04-27}{update to specialBeginEnd} the
\texttt{middle} field for anything that you specify in \texttt{specialBeginEnd}.
For example, let's consider the \texttt{.tex} file in \cref{lst:special2}.
@@ -545,24 +525,18 @@ latexindent.pl specialLR.tex -l=specialsLeftRight.yaml,specialBeforeCommand.yaml
\begin{commandshell}
latexindent.pl special2.tex -l=middle
latexindent.pl special2.tex -l=middle1
- \end{commandshell}
+\end{commandshell}
then we obtain the output given in \cref{lst:special2-mod1,lst:special2-mod2}.
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/middle.yaml}[yaml-TCB]{\texttt{middle.yaml}}{lst:middle-yaml}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile{demonstrations/special2-mod1.tex}{\texttt{special2.tex} using \cref{lst:middle-yaml}}{lst:special2-mod1}
- \end{minipage}
+ \end{cmhtcbraster}
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/middle1.yaml}[yaml-TCB]{\texttt{middle1.yaml}}{lst:middle1-yaml}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile{demonstrations/special2-mod2.tex}{\texttt{special2.tex} using \cref{lst:middle1-yaml}}{lst:special2-mod2}
- \end{minipage}
+ \end{cmhtcbraster}
We note that:
\begin{itemize}
@@ -576,25 +550,22 @@ latexindent.pl special2.tex -l=middle1
\cref{lst:special2-mod2}.
\end{itemize}
- You may%%
+ You may%
\announce{2018-08-13}{specialBeginEnd verbatim} specify fields in
\texttt{specialBeginEnd} to be treated as verbatim code blocks by changing
\texttt{lookForThis} to be \texttt{verbatim}.
- For example, beginning with the code in \cref{lst:special3-mod1} and the YAML in
+ For example, beginning with the code in \cref{lst:special3-mod1} and the YAML in
\cref{lst:special-verb1-yaml}, and running
\begin{commandshell}
latexindent.pl special3.tex -l=special-verb1
- \end{commandshell}
+\end{commandshell}
then the output in \cref{lst:special3-mod1} is unchanged.
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/special-verb1.yaml}[yaml-TCB]{\texttt{special-verb1.yaml}}{lst:special-verb1-yaml}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile{demonstrations/special3-mod1.tex}{\texttt{special3.tex} and output using \cref{lst:special-verb1-yaml}}{lst:special3-mod1}
- \end{minipage}
+ \end{cmhtcbraster}
\yamltitle{indentAfterHeadings}*{fields}
\begin{wrapfigure}[17]{r}[0pt]{8cm}
@@ -624,13 +595,10 @@ latexindent.pl special3.tex -l=special-verb1
\texttt{headings1.yaml}, and that you have the text from \cref{lst:headings1} saved
into \texttt{headings1.tex}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/headings1.yaml}[yaml-TCB]{\texttt{headings1.yaml}}{lst:headings1yaml}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/headings1.tex}{\texttt{headings1.tex}}{lst:headings1}
- \end{minipage}
+ \end{cmhtcbraster}
If you run the command
\begin{commandshell}
@@ -657,7 +625,7 @@ latexindent.pl headings1.tex -l=headings1.yaml
\yamltitle{maximumIndentation}*{horizontal space}
You can control the maximum indentation given to your file
- by%%%%
+ by%
\announce{2017-08-21}{maximumIndentation} specifying the
\texttt{maximumIndentation} field as horizontal space (but \emph{not} including
tabs). This feature uses the \texttt{Text::Tabs} module \cite{texttabs}, and
@@ -666,28 +634,22 @@ latexindent.pl headings1.tex -l=headings1.yaml
For example, consider the example shown in \cref{lst:mult-nested} together with the
default output shown in \cref{lst:mult-nested-default}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/mult-nested.tex}{\texttt{mult-nested.tex}}{lst:mult-nested}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[showtabs=true]{demonstrations/mult-nested-default.tex}{\texttt{mult-nested.tex} default output}{lst:mult-nested-default}
- \end{minipage}
+ \end{cmhtcbraster}
Now say that, for example, you have the \texttt{max-indentation1.yaml} from
\cref{lst:max-indentation1yaml} and that you run the following command:
\begin{commandshell}
latexindent.pl mult-nested.tex -l=max-indentation1
- \end{commandshell}
+\end{commandshell}
You should receive the output shown in \cref{lst:mult-nested-max-ind1}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/max-indentation1.yaml}[yaml-TCB]{\texttt{max-indentation1.yaml}}{lst:max-indentation1yaml}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[showspaces=true]{demonstrations/mult-nested-max-ind1.tex}{\texttt{mult-nested.tex} using \cref{lst:max-indentation1yaml}}{lst:mult-nested-max-ind1}
- \end{minipage}
+ \end{cmhtcbraster}
Comparing the output in \cref{lst:mult-nested-default,lst:mult-nested-max-ind1} we notice that the (default) tabs of
indentation have been replaced by a single space.
@@ -770,4 +732,6 @@ mand arg text
\end{widepage}
\end{table}
- We will refer to these code blocks in what follows.
+ We will refer to these code blocks in what follows.%
+ \announce*{2019-07-13}{fine tuning of code blocks} Note that the fine tuning of the definition of the code blocks
+ detailed in \cref{tab:code-blocks} is discussed in \vref{sec:finetuning}.
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-demonstration.tex b/Master/texmf-dist/doc/support/latexindent/sec-demonstration.tex
index 9049a5dfd8e..18459edcda4 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-demonstration.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-demonstration.tex
@@ -6,7 +6,7 @@
As you look at \crefrange{lst:filecontentsbefore}{lst:pstricksafter}, remember that \texttt{latexindent.pl} is just
following its rules, and there is nothing particular about these code snippets. All of
- the rules can be modified so that you can personalize your indentation scheme.
+ the rules can be modified so that you can personalise your indentation scheme.
In each of the samples given in \crefrange{lst:filecontentsbefore}{lst:pstricksafter} the `before' case is a `worst case
scenario' with no effort to make indentation. The `after' result would be the same,
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-fine-tuning.tex b/Master/texmf-dist/doc/support/latexindent/sec-fine-tuning.tex
new file mode 100644
index 00000000000..9a2cbbb5c81
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latexindent/sec-fine-tuning.tex
@@ -0,0 +1,109 @@
+% arara: pdflatex: {shell: yes, files: [latexindent]}
+\section{Fine tuning}\label{sec:finetuning}
+ \texttt{latexindent.pl} operates by looking for the code blocks detailed in
+ \vref{tab:code-blocks}.
+ \announce*{2019-07-13}{details of fine tuning of code blocks} The fine tuning of the details of such code blocks
+ is controlled by the \texttt{fineTuning} field, detailed in \cref{lst:fineTuning}.
+
+ This field is for those that would like to peek under the bonnet/hood and make some fine
+ tuning to \texttt{latexindent.pl}'s operating.
+
+ \begin{warning}
+ Making changes to the fine tuning may have significant consequences for your indentation scheme,
+ proceed with caution!
+ \end{warning}
+
+ \begin{widepage}
+ \cmhlistingsfromfile*[style=fineTuning]*{../defaultSettings.yaml}[width=0.95\linewidth,before=\centering,yaml-TCB]{\texttt{fineTuning}}{lst:fineTuning}
+ \end{widepage}
+
+ The fields given in \cref{lst:fineTuning} are all \emph{regular expressions}. This manual is
+ not intended to be a tutorial on regular expressions; you might like to read, for
+ example, \cite{masteringregexp} for a detailed covering of the topic.
+
+ We make the following comments with reference to \cref{lst:fineTuning}:
+ \begin{enumerate}
+ \item the \texttt{environments:name} field details that the \emph{name} of an
+ environment can contain:
+ \begin{enumerate}
+ \item \texttt{a-z} lower case letters
+ \item \texttt{A-Z} upper case letters
+ \item \texttt{@} the \texttt{@} 'letter'
+ \item \lstinline!\*! stars
+ \item \texttt{0-9} numbers
+ \item \lstinline!_! underscores
+ \item \lstinline!\! backslashes
+ \end{enumerate}
+ The \texttt{+} at the end means \emph{at least one} of the above
+ characters.
+ \item the \texttt{ifElseFi:name} field:
+ \begin{enumerate}
+ \item \lstinline^@?^ means that it \emph{can possibly} begin with
+ \lstinline^@^
+ \item followed by \texttt{if}
+ \item followed by 0 or more characters from \texttt{a-z}, \texttt{A-Z} and
+ \texttt{@}
+ \item the \texttt{?} the end means \emph{non-greedy}, which means `stop the
+ match as soon as possible'
+ \end{enumerate}
+ \item the \texttt{keyEqualsValuesBracesBrackets} contains some interesting syntax:
+ \begin{enumerate}
+ \item \lstinline!|! means `or'
+ \item \lstinline^(?:(?<!\\)\{)^ the \lstinline^(?:...)^ uses a \emph{non-capturing} group --
+ you don't necessarily need to worry about what this means, but just know that for the
+ \texttt{fineTuning} feature you should only ever use \emph{non}-capturing
+ groups, and \emph{not} capturing groups, which are simply
+ \lstinline!(...)!
+ \item \lstinline^(?<!\\)\{)^ means a \lstinline^{^ but it can \emph{not}
+ be immediately preceded by a \lstinline!\!
+ \end{enumerate}
+ \item in the \texttt{arguments:before} field
+ \begin{enumerate}
+ \item \lstinline^\d\h*^ means a digit (i.e. a number), followed by 0 or more horizontal
+ spaces
+ \item \lstinline^;?,?^ means \emph{possibly} a semi-colon, and possibly a comma
+ \item \lstinline^\<.*?\>^ is designed for 'beamer'-type commands; the
+ \lstinline^.*?^ means anything in between \lstinline^<...>^
+ \end{enumerate}
+ \item the \texttt{modifyLineBreaks} field refers to fine tuning settings detailed in
+ \vref{sec:modifylinebreaks}. In particular:
+ \begin{enumerate}
+ \item \texttt{betterFullStop} is in relation to the one sentence per line routine, detailed in
+ \vref{sec:onesentenceperline}
+ \item \texttt{doubleBackSlash} is in relation to the \texttt{DBSStartsOnOwnLine} and
+ \texttt{DBSFinishesWithLineBreak} polyswitches surrounding double back slashes, see
+ \vref{subsec:dbs}
+ \item \texttt{comma} is in relation to the \texttt{CommaStartsOnOwnLine} and
+ \texttt{CommaFinishesWithLineBreak} polyswitches surrounding commas in optional and mandatory
+ arguments; see \vref{tab:poly-switch-mapping}
+ \end{enumerate}
+ \end{enumerate}
+
+ It is not obvious from \cref{lst:fineTuning}, but each of the \texttt{follow},
+ \texttt{before} and \texttt{between} fields allow trailing comments, line
+ breaks, and horizontal spaces between each character.
+
+ As a demonstration, consider the file given in \cref{lst:finetuning1}, together with its
+ default output using the command
+ \begin{commandshell}
+latexindent.pl finetuning1.tex
+\end{commandshell}
+ is given in \cref{lst:finetuning1-default}.
+
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/finetuning1.tex}{\texttt{finetuning1.tex}}{lst:finetuning1}
+ \cmhlistingsfromfile*{demonstrations/finetuning1-default.tex}{\texttt{finetuning1.tex} default}{lst:finetuning1-default}
+ \end{cmhtcbraster}
+
+ It's clear from \cref{lst:finetuning1-default} that the indentation scheme has not worked as
+ expected. We can \emph{fine tune} the indentation scheme by employing the settings
+ given in \cref{lst:fine-tuning1} and running the command
+ \begin{commandshell}
+latexindent.pl finetuning1.tex -l=fine-tuning1.yaml
+\end{commandshell}
+ and the associated (desired) output is given in \cref{lst:finetuning1-mod1}.
+
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/finetuning1-mod1.tex}{\texttt{finetuning1.tex} using \cref{lst:fine-tuning1}}{lst:finetuning1-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/fine-tuning1.yaml}[yaml-TCB]{\texttt{finetuning1.yaml}}{lst:fine-tuning1}
+ \end{cmhtcbraster}
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex b/Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex
index 6a5aa290ca0..bdae2b428e4 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-how-to-use.tex
@@ -27,42 +27,41 @@
\subsection{From the command line}\label{sec:commandline}
\texttt{latexindent.pl} has a number of different switches/flags/options, which
can be combined in any way that you like, either in short or long form as detailed below.
- \texttt{latexindent.pl} produces a \texttt{.log} file,
- \texttt{indent.log}, every time it is run; the name of the log file can be customized,
- but we will refer to the log file as \texttt{indent.log} throughout this document.
- There is a base of information that is written to \texttt{indent.log}, but other
- additional information will be written depending on which of the following options are
- used.
+ \texttt{latexindent.pl} produces a \texttt{.log} file, \texttt{indent.log},
+ every time it is run; the name of the log file can be customised, but we will refer to
+ the log file as \texttt{indent.log} throughout this document. There is a base of
+ information that is written to \texttt{indent.log}, but other additional information
+ will be written depending on which of the following options are used.
\flagbox{-v, --version}
\announce{2017-06-25}{version}
\begin{commandshell}
latexindent.pl -v
- \end{commandshell}
+\end{commandshell}
This will output only the version number to the terminal.
\flagbox{-h, --help}
\begin{commandshell}
latexindent.pl -h
- \end{commandshell}
+\end{commandshell}
As above this will output a welcome message to the terminal, including the version number
and available options.
\begin{commandshell}
latexindent.pl myfile.tex
- \end{commandshell}
+\end{commandshell}
This will operate on \texttt{myfile.tex}, but will simply output to your terminal;
- \texttt{myfile.tex} will not be changed by \texttt{latexindent.pl} in any way
- using this command.
+ \texttt{myfile.tex} will not be changed by \texttt{latexindent.pl} in any way using
+ this command.
\flagbox{-w, --overwrite}
\begin{commandshell}
latexindent.pl -w myfile.tex
latexindent.pl --overwrite myfile.tex
latexindent.pl myfile.tex --overwrite
- \end{commandshell}
+\end{commandshell}
This \emph{will} overwrite \texttt{myfile.tex}, but it will make a copy of
\texttt{myfile.tex} first. You can control the name of the extension (default is
@@ -80,7 +79,7 @@ latexindent.pl -o=output.tex myfile.tex
latexindent.pl myfile.tex -o=output.tex
latexindent.pl --outputfile=output.tex myfile.tex
latexindent.pl --outputfile output.tex myfile.tex
- \end{commandshell}
+\end{commandshell}
This will indent \texttt{myfile.tex} and output it to \texttt{output.tex},
overwriting it (\texttt{output.tex}) if it already exists\footnote{Users of version 2.* should
@@ -105,7 +104,7 @@ latexindent.pl myfile.tex -o=output.tex
\end{commandshell}
You can call the \texttt{-o} switch using a \texttt{+} symbol at
- the beginning; this will%%%
+ the beginning; this will%
\announce{2017-06-25}{+ sign in o switch}
concatenate the name of the input file and the text given to the \texttt{-o}
switch. For example, the following two calls to \texttt{latexindent.pl} are equivalent:
@@ -115,7 +114,7 @@ latexindent.pl myfile.tex -o=myfilenew.tex
\end{commandshell}
You can call the \texttt{-o} switch using a \texttt{++} symbol at
- the end of the name%%%
+ the end of the name%
\announce{2017-06-25}{++ in o switch} of your output
file; this tells \texttt{latexindent.pl} to search successively for the name of your
output file concatenated with $0, 1, \ldots$ while the name of the output file
@@ -154,7 +153,7 @@ latexindent.pl myfile.tex -o=+out++.tex
\begin{commandshell}
latexindent.pl -s myfile.tex
latexindent.pl myfile.tex -s
- \end{commandshell}
+\end{commandshell}
Silent mode: no output will be given to the terminal.
@@ -162,7 +161,7 @@ latexindent.pl myfile.tex -s
\begin{commandshell}
latexindent.pl -t myfile.tex
latexindent.pl myfile.tex -t
- \end{commandshell}
+\end{commandshell}
\label{page:traceswitch}
Tracing mode: verbose output will be given to \texttt{indent.log}. This is useful if
@@ -175,7 +174,7 @@ latexindent.pl myfile.tex -t
\begin{commandshell}
latexindent.pl -tt myfile.tex
latexindent.pl myfile.tex -tt
- \end{commandshell}
+\end{commandshell}
\emph{More detailed} tracing mode: this option gives more details to
\texttt{indent.log}
@@ -191,7 +190,7 @@ latexindent.pl -l myyaml.yaml myfile.tex
latexindent.pl -l first.yaml,second.yaml,third.yaml myfile.tex
latexindent.pl -l=first.yaml,second.yaml,third.yaml myfile.tex
latexindent.pl myfile.tex -l=first.yaml,second.yaml,third.yaml
- \end{commandshell}
+\end{commandshell}
\label{page:localswitch}
\texttt{latexindent.pl} will always load \texttt{defaultSettings.yaml} (rhymes with camel)
@@ -204,7 +203,7 @@ latexindent.pl myfile.tex -l=first.yaml,second.yaml,third.yaml
details the name (or names separated by commas) of a YAML file(s) that resides in the
same directory as \texttt{myfile.tex}; you can use this option if you would like to
load a settings file in the current working directory that is \emph{not}
- called \texttt{localSettings.yaml}.%%%
+ called \texttt{localSettings.yaml}.%
\announce{2017-08-21}*{-l switch absolute paths}
In fact, you can specify both \emph{relative} and \emph{absolute paths} for
your YAML files; for example
@@ -212,31 +211,31 @@ latexindent.pl myfile.tex -l=first.yaml,second.yaml,third.yaml
latexindent.pl -l=../../myyaml.yaml myfile.tex
latexindent.pl -l=/home/cmhughes/Desktop/myyaml.yaml myfile.tex
latexindent.pl -l=C:\Users\cmhughes\Desktop\myyaml.yaml myfile.tex
- \end{commandshell}
+\end{commandshell}
You will find a lot of other explicit demonstrations of how to use the
\texttt{-l} switch throughout this documentation,
You can call the \texttt{-l} switch with a `+' symbol either before or after
\announce{2017-06-25}{+ sign with -l switch} another YAML file; for example:
\begin{commandshell}
-latexindent.pl -l=+myyaml.yaml myfile.tex
+latexindent.pl -l=+myyaml.yaml myfile.tex
latexindent.pl -l "+ myyaml.yaml" myfile.tex
latexindent.pl -l=myyaml.yaml+ myfile.tex
- \end{commandshell}
+\end{commandshell}
which translate, respectively, to
\begin{commandshell}
latexindent.pl -l=localSettings.yaml,myyaml.yaml myfile.tex
latexindent.pl -l=localSettings.yaml,myyaml.yaml myfile.tex
latexindent.pl -l=myyaml.yaml,localSettings.yaml myfile.tex
- \end{commandshell}
+\end{commandshell}
Note that the following is \emph{not} allowed:
\begin{commandshell}
latexindent.pl -l+myyaml.yaml myfile.tex
- \end{commandshell}
+\end{commandshell}
and
\begin{commandshell}
latexindent.pl -l + myyaml.yaml myfile.tex
- \end{commandshell}
+\end{commandshell}
will \emph{only} load \texttt{localSettings.yaml}, and \texttt{myyaml.yaml}
will be ignored. If you wish to use spaces between any of the YAML settings, then you
must wrap the entire list of YAML files in quotes, as demonstrated above.
@@ -245,7 +244,7 @@ latexindent.pl -l + myyaml.yaml myfile.tex
\announce{2017-06-25}{no extension for -l switch}
\begin{commandshell}
latexindent.pl -l=localSettings,myyaml myfile.tex
- \end{commandshell}
+\end{commandshell}
\flagbox{-y, --yaml=yaml settings}
\begin{commandshell}
latexindent.pl myfile.tex -y="defaultIndent: ' '"
@@ -253,7 +252,7 @@ latexindent.pl myfile.tex -y="defaultIndent: ' ',maximumIndentation:' '"
latexindent.pl myfile.tex -y="indentRules: one: '\t\t\t\t'"
latexindent.pl myfile.tex -y='modifyLineBreaks:environments:EndStartsOnOwnLine:3' -m
latexindent.pl myfile.tex -y='modifyLineBreaks:environments:one:EndStartsOnOwnLine:3' -m
- \end{commandshell}
+\end{commandshell}
\label{page:yamlswitch}You%
\announce{2017-08-21}{the -y switch} can specify YAML settings from the command line using the
\texttt{-y} or \texttt{--yaml} switch;
@@ -268,11 +267,11 @@ latexindent.pl myfile.tex -y='modifyLineBreaks:environments:one:EndStartsOnOwnLi
\flagbox{-d, --onlydefault}
\begin{commandshell}
latexindent.pl -d myfile.tex
- \end{commandshell}
+\end{commandshell}
Only \texttt{defaultSettings.yaml}: you might like to read \cref{sec:defuseloc} before using
this switch. By default, \texttt{latexindent.pl} will always search for
- \texttt{indentconfig.yaml} or \texttt{.indentconfig.yaml} in your home directory. If you would
+ \texttt{indentconfig.yaml} or \texttt{.indentconfig.yaml} in your home directory. If you would
prefer it not to do so then (instead of deleting or renaming \texttt{indentconfig.yaml} or
\texttt{.indentconfig.yaml}) you can simply call the script with the \texttt{-d}
switch; note that this will also tell the script to ignore \texttt{localSettings.yaml} even
@@ -283,7 +282,7 @@ latexindent.pl -d myfile.tex
\flagbox{-c, --cruft=<directory>}
\begin{commandshell}
latexindent.pl -c=/path/to/directory/ myfile.tex
- \end{commandshell}
+\end{commandshell}
If you wish to have backup files and \texttt{indent.log} written to a directory other
than the current working directory, then you can send these `cruft' files to another
@@ -295,7 +294,7 @@ latexindent.pl -g=other.log myfile.tex
latexindent.pl -g other.log myfile.tex
latexindent.pl --logfile other.log myfile.tex
latexindent.pl myfile.tex -g other.log
- \end{commandshell}
+\end{commandshell}
By default, \texttt{latexindent.pl} reports information to \texttt{indent.log}, but
if you wish to change the name of this file, simply call the script with your chosen name
@@ -305,8 +304,8 @@ latexindent.pl myfile.tex -g other.log
\begin{commandshell}
latexindent.pl -sl myfile.tex
latexindent.pl -screenlog myfile.tex
- \end{commandshell}
- Using this%%%%
+\end{commandshell}
+ Using this%
\announce{2018-01-13}{screenlog switch created} option tells
\texttt{latexindent.pl} to output the log file to the screen, as well as to your chosen
log file.
@@ -315,7 +314,7 @@ latexindent.pl -screenlog myfile.tex
\begin{commandshell}
latexindent.pl -m myfile.tex
latexindent.pl -modifylinebreaks myfile.tex
- \end{commandshell}
+\end{commandshell}
One of the most exciting developments in Version~3.0 is the ability to modify line
breaks; for full details see \vref{sec:modifylinebreaks}
@@ -324,26 +323,26 @@ latexindent.pl -modifylinebreaks myfile.tex
example
\begin{commandshell}
latexindent.pl myfile
- \end{commandshell}
+\end{commandshell}
and in which case, you can specify the order in which extensions are searched for; see
\vref{lst:fileExtensionPreference} for full details.
\flagbox{STDIN}
\begin{commandshell}
cat myfile.tex | latexindent.pl
- \end{commandshell}
+\end{commandshell}
\texttt{latexindent.pl} will%
\announce{2018-01-13}{STDIN allowed} allow input from STDIN, which means that you can pipe output from
other commands directly into the script. For example assuming that you have content in
\texttt{myfile.tex}, then the above command will output the results of operating upon
\texttt{myfile.tex}
- Similarly, if you%%%%
+ Similarly, if you%
\announce{2018-01-13}*{no options/filename updated} simply type
\texttt{latexindent.pl} at the command line, then it will expect (STDIN) input from the
command line.
\begin{commandshell}
latexindent.pl
- \end{commandshell}
+\end{commandshell}
Once you have finished typing your input, you can press
\begin{itemize}
@@ -352,6 +351,39 @@ latexindent.pl
\end{itemize}
to signify that your input has finished. Thanks to \cite{xu-cheng} for an update
to this feature.
+\flagbox{-r, --replacement}
+ \begin{commandshell}
+latexindent.pl -r myfile.tex
+latexindent.pl -replacement myfile.tex
+\end{commandshell}
+ You can%
+ \announce*{2019-07-13}{replacement mode switch} call
+ \texttt{latexindent.pl} with the \texttt{-r} switch to instruct it to perform
+ replacements/substitutions on your file; full details and examples are given in
+ \vref{sec:replacements}.
+
+\flagbox{-rv, --replacementrespectverb}
+ \begin{commandshell}
+latexindent.pl -rv myfile.tex
+latexindent.pl -replacementrespectverb myfile.tex
+\end{commandshell}
+ You can%
+ \announce*{2019-07-13}{replacement mode switch, respecting verbatim} instruct
+ \texttt{latexindent.pl} to perform replacements/substitutions by using the
+ \texttt{-rv} switch, but will \emph{respect verbatim code blocks}; full details and
+ examples are given in \vref{sec:replacements}.
+
+\flagbox{-rr, --onlyreplacement}
+ \begin{commandshell}
+latexindent.pl -rr myfile.tex
+latexindent.pl -onlyreplacement myfile.tex
+\end{commandshell}
+ You can%
+ \announce*{2019-07-13}{replacement (only) mode switch} instruct
+ \texttt{latexindent.pl} to skip all of its other indentation operations and
+ \emph{only} perform replacements/substitutions by using the
+ \texttt{-rr} switch; full details and examples are given in
+ \vref{sec:replacements}.
\subsection{From arara}\label{sec:arara}
Using \texttt{latexindent.pl} from the command line is fine for some folks, but others
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-indent-config-and-settings.tex b/Master/texmf-dist/doc/support/latexindent/sec-indent-config-and-settings.tex
index f69fda83dee..cb551194c0e 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-indent-config-and-settings.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-indent-config-and-settings.tex
@@ -64,7 +64,7 @@ lookForAlignDelims:
\end{yaml}
You can make sure that your settings are loaded by checking \texttt{indent.log} for
- details -- if you have specified a path that \texttt{latexindent.pl} doesn't recognize
+ details -- if you have specified a path that \texttt{latexindent.pl} doesn't recognise
then you'll get a warning, otherwise you'll get confirmation that \texttt{latexindent.pl}
has read your settings file \footnote{Windows users
may find that they have to end \texttt{.yaml} files with a blank line}.
@@ -118,29 +118,38 @@ verbatimEnvironments:
file.
\subsection{The -y|yaml switch}\label{sec:yamlswitch}
- You%%%%
+ You%
\announce{2017-08-21}{demonstration of the -y switch} may use the
\texttt{-y} switch to load your settings; for example, if you wished to
specify the settings from \cref{lst:localSettings} using the \texttt{-y} switch,
then you could use the following command:
\begin{commandshell}
latexindent.pl -y="verbatimEnvironments:cmhenvironment:0;myenv:1" myfile.tex
- \end{commandshell}
+\end{commandshell}
Note the use of \texttt{;} to specify another field within
\texttt{verbatimEnvironments}. This is shorthand, and equivalent, to using the following
command:
\begin{commandshell}
latexindent.pl -y="verbatimEnvironments:cmhenvironment:0,verbatimEnvironments:myenv:1" myfile.tex
- \end{commandshell}
+\end{commandshell}
You may, of course, specify settings using the \texttt{-y} switch as well as,
for example, settings loaded using the \texttt{-l} switch; for example,
\begin{commandshell}
latexindent.pl -l=mysettings.yaml -y="verbatimEnvironments:cmhenvironment:0;myenv:1" myfile.tex
- \end{commandshell}
+\end{commandshell}
Any settings specified using the \texttt{-y} switch will be loaded
\emph{after} any specified using \texttt{indentconfig.yaml} and the
\texttt{-l} switch.
+ If you wish to specify any regex-based settings using the \texttt{-y} switch,
+ it is important not to use quotes surrounding the regex; for example, with reference to
+ the `one sentence per line' feature (\vref{sec:onesentenceperline}) and the listings within
+ \vref{lst:sentencesEndWith}, the following settings give the option to have sentences end
+ with a semicolon
+ \begin{commandshell}
+latexindent.pl -m --yaml='modifyLineBreaks:oneSentencePerLine:sentencesEndWith:other:\;'
+\end{commandshell}
+
\subsection{Settings load order}\label{sec:loadorder}
\texttt{latexindent.pl} loads the settings files in the following order:
\begin{enumerate}
@@ -150,11 +159,11 @@ latexindent.pl -l=mysettings.yaml -y="verbatimEnvironments:cmhenvironment:0;myen
\item \texttt{localSettings.yaml} but only if found in the same directory as \texttt{myfile.tex}
and called with \texttt{-l} switch; this file can be renamed, provided that
the call to \texttt{latexindent.pl} is adjusted accordingly (see \cref{sec:localsettings}).
- You may specify both relative and absolute%%
+ You may specify both relative and absolute%
\announce{2017-08-21}*{-l absolute paths} paths to other YAML files using the \texttt{-l} switch,
separating multiple files using commas;
- \item any settings%%%%
- \announce{2017-08-21}{-y switch load order} specified in the
+ \item any settings%
+ \announce{2017-08-21}{-y switch load order} specified in the
\texttt{-y} switch.
\end{enumerate}
A visual representation of this is given in \cref{fig:loadorder}.
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-introduction.tex b/Master/texmf-dist/doc/support/latexindent/sec-introduction.tex
index c869b84596e..c6fafd92696 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-introduction.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-introduction.tex
@@ -86,9 +86,19 @@
for more details.
\end{minipage}%
+ \begin{minipage}{.55\textwidth}
+ \cmhlistingsfromfile*[style=replacements]*{../defaultSettings.yaml}[replace-TCB,width=.85\linewidth,before=\centering]{\texttt{replacements}}{lst:replacements-demo}
+ \end{minipage}%
+ \hfill
+ \begin{minipage}{.4\textwidth}
+ This type of listing is a \texttt{.yaml} file, but it will only
+ be relevant when the \texttt{-r} switch is active; see \vref{sec:replacements}
+ for more details.
+ \end{minipage}%
+
% \begin{latexonly}
You will occasionally see dates shown in the margin (for example, next to this
- paragraph!)%%%
+ paragraph!)%
\announce{2017-06-25}{announce} which detail the date
of the version in which the feature was implemented; the `N' stands for `new as of the
date shown' and `U' stands for `updated as of the date shown'. If you see \stardemo, it
@@ -104,7 +114,7 @@
If you'd like to get started with \texttt{latexindent.pl} then simply type
\begin{commandshell}
latexindent.pl myfile.tex
- \end{commandshell}
+\end{commandshell}
from the command line. If you receive an error message such as that given in
\cref{lst:poss-errors}, then you need to install the missing perl modules.
\begin{cmhlistings}[style=tcblatex,language=Perl]{Possible error messages}{lst:poss-errors}
@@ -115,6 +125,6 @@ BEGIN failed--compilation aborted at helloworld.pl line 10.
following script, you should be prompted to install the appropriate modules.
\begin{commandshell}
perl latexindent-module-installer.pl
- \end{commandshell}
+\end{commandshell}
You might also like to see \href{https://stackoverflow.com/questions/19590042/error-cant-locate-file-homedir-pm-in-inc}{https://stackoverflow.com/questions/19590042/error-cant-locate-file-homedir-pm-in-inc}, for example, as well as
\vref{sec:requiredmodules}.
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-replacements.tex b/Master/texmf-dist/doc/support/latexindent/sec-replacements.tex
new file mode 100644
index 00000000000..6bc7223d4d1
--- /dev/null
+++ b/Master/texmf-dist/doc/support/latexindent/sec-replacements.tex
@@ -0,0 +1,372 @@
+% arara: pdflatex: {shell: yes, files: [latexindent]}
+\section{The -r, -rv and -rr switches}\label{sec:replacements}
+ \fancyhead[R]{\bfseries\thepage%
+ \tikz[remember picture,overlay] {
+ \node at (1,0){\includegraphics{logo-bw}}; }
+ }
+
+ You can instruct \texttt{latexindent.pl} to perform replacements/substitutions on your
+ \announce*{2019-07-13}{replacement mode switches}
+ file by using any of the \texttt{-r}, \texttt{-rv} or
+ \texttt{-rr} switches:
+ \begin{itemize}
+ \item the \texttt{-r} switch will perform indentation and replacements, not
+ respecting verbatim code blocks;
+ \item the \texttt{-rv} switch will perform indentation and replacements, and
+ \emph{will} respect verbatim code blocks;
+ \item the \texttt{-rr} switch will \emph{not} perform indentation, and
+ will perform replacements not respecting verbatim code blocks.
+ \end{itemize}
+
+ We will demonstrate each of the \texttt{-r}, \texttt{-rv} and
+ \texttt{-rr} switches, but a summary is given in \cref{tab:replacementswitches}.
+
+ \begin{table}[!htb]
+ \centering
+ \caption{The replacement mode switches}\label{tab:replacementswitches}
+ \begin{tabular}{rcc}
+ \toprule
+ switch & indentation? & respect verbatim? \\
+ \midrule
+ \texttt{-r} & \faCheck & \faClose \\
+ \texttt{-rv} & \faCheck & \faCheck \\
+ \texttt{-rr} & \faClose & \faClose \\
+ \bottomrule
+ \end{tabular}
+ \end{table}
+
+ The default value of the \texttt{replacements} field is shown in
+ \cref{lst:replacements}; as with all of the other fields, you are encouraged to customise
+ and change this as you see fit. The options in this field will \emph{only} be
+ considered if the \texttt{-r}, \texttt{-rv} or
+ \texttt{-rr} switches are active; when discussing YAML settings related to the
+ replacement-mode switches, we will use the style given in \cref{lst:replacements}.
+
+ \cmhlistingsfromfile*[style=replacements]*{../defaultSettings.yaml}[width=0.95\linewidth,before=\centering,replace-TCB]{\texttt{replacements}}{lst:replacements}
+
+ The first entry within the \texttt{replacements} field is \texttt{amalgamate}, and
+ is \emph{optional}; by default it is set to 1, so that replacements will be
+ amalgamated from each settings file that you specify. As you'll see in the demonstrations
+ that follow, there is no need to specify this field.
+
+ You'll notice that, by default, there is only \emph{one} entry in the
+ \texttt{replacements} field, but it can take as many entries as you would like; each
+ one needs to begin with a \texttt{-} on its own line.
+
+\subsection{Introduction to replacements}
+ Let's explore the action of the default settings, and then we'll demonstrate the feature
+ with further examples. With reference to \cref{lst:replacements}, the default action will
+ replace every instance of the text \texttt{latexindent.pl} with \texttt{pl.latexindent}.
+
+ Beginning with the code in \cref{lst:replace1} and running the command
+ \begin{commandshell}
+latexindent.pl -r replace1.tex
+\end{commandshell}
+ gives the output given in \cref{lst:replace1-r1}.
+
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/replace1.tex}{\texttt{replace1.tex}}{lst:replace1}
+ \cmhlistingsfromfile*{demonstrations/replace1-r1.tex}{\texttt{replace1.tex} default}{lst:replace1-r1}
+ \end{cmhtcbraster}
+
+ If we don't wish to perform this replacement, then we can tweak the default settings of
+ \vref{lst:replacements} by changing \texttt{lookForThis} to 0; we perform this action
+ in \cref{lst:replace1-yaml}, and run the command
+ \begin{commandshell}
+latexindent.pl -r replace1.tex -l=replace1.yaml
+\end{commandshell}
+ which gives the output in \cref{lst:replace1-mod1}.
+
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/replace1-mod1.tex}{\texttt{replace1.tex} using \cref{lst:replace1-yaml}}{lst:replace1-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/replace1.yaml}[replace-TCB]{\texttt{replace1.yaml}}{lst:replace1-yaml}
+ \end{cmhtcbraster}
+
+ Note that in \cref{lst:replace1-yaml} we have specified \texttt{amalgamate} as 0 so
+ that the default replacements are overwritten.
+
+ We haven't yet discussed the \texttt{when} field; don't worry, we'll get to it
+ as part of the discussion in what follows.
+
+\subsection{The two types of replacements}
+ There are two types of replacements:
+ \begin{enumerate}
+ \item \emph{string}-based replacements, which replace the string in
+ \emph{this} with the string in \emph{that}.
+ If you specify \texttt{this} and you do not specify \texttt{that}, then
+ the \texttt{that} field will be assumed to be empty.
+ \item \emph{regex}-based replacements, which use the \texttt{substitution} field.
+ \end{enumerate}
+ We will demonstrate both in the examples that follow.
+
+ \texttt{latexindent.pl} chooses which type of replacement to make based on which fields
+ have been specified; if the \texttt{this} field is specified, then it will make
+ \emph{string}-based replacements, regardless of if \texttt{substitution} is
+ present or not.
+
+\subsection{Examples of replacements}
+ \begin{example}
+ We begin with code given in \cref{lst:colsep}
+
+ \cmhlistingsfromfile*{demonstrations/colsep.tex}{\texttt{colsep.tex}}{lst:colsep}
+
+ Let's assume that our goal is to remove both of the \texttt{arraycolsep} statements; we can achieve this in
+ a few different ways.
+
+ Using the YAML in \cref{lst:colsep-yaml}, and running the command
+ \begin{commandshell}
+latexindent.pl -r colsep.tex -l=colsep.yaml
+\end{commandshell}
+ then we achieve the output in \cref{lst:colsep-mod0}.
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/colsep-mod0.tex}{\texttt{colsep.tex} using \cref{lst:colsep}}{lst:colsep-mod0}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/colsep.yaml}[replace-TCB]{\texttt{colsep.yaml}}{lst:colsep-yaml}
+ \end{cmhtcbraster}
+ Note that in \cref{lst:colsep-yaml}, we have specified \emph{two} separate fields, each with their own `\emph{this}' field;
+ furthermore, for both of the separate fields, we have not specified `\texttt{that}', so the \texttt{that} field
+ is assumed to be blank by \texttt{latexindent.pl};
+
+ We can make the YAML in \cref{lst:colsep-yaml} more concise by exploring the \texttt{substitution} field. Using
+ the settings in \cref{lst:colsep1} and running the command
+ \begin{commandshell}
+latexindent.pl -r colsep.tex -l=colsep1.yaml
+\end{commandshell}
+ then we achieve the output in \cref{lst:colsep-mod1}.
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth,
+ raster force size=false,
+ raster column 1/.style={add to width=-.1\textwidth}]
+ \cmhlistingsfromfile*{demonstrations/colsep-mod1.tex}{\texttt{colsep.tex} using \cref{lst:colsep1}}{lst:colsep-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/colsep1.yaml}[replace-TCB,width=0.6\textwidth]{\texttt{colsep1.yaml}}{lst:colsep1}
+ \end{cmhtcbraster}
+
+ The code given in \cref{lst:colsep1} is an example of a \emph{regular expression}, which we may abbreviate to \emph{regex}
+ in what follows. This manual is not intended to be
+ a tutorial on regular expressions; you might like to read, for example, \cite{masteringregexp} for a detailed
+ covering of the topic. With reference to \cref{lst:colsep1}, we do note the following:
+ \begin{itemize}
+ \item the general form of the \texttt{substitution} field is \lstinline!s/regex/replacement/modifiers!. You can
+ place any regular expression you like within this;
+ \item we have `escaped' the backslash by using \lstinline!\\!
+ \item we have used \lstinline!\d+! to represent \emph{at least} one digit
+ \item the \texttt{s} \emph{modifier} (in the \texttt{sg} at the end of the line) instructs \texttt{latexindent.pl} to
+ treat your file as one single line;
+ \item the \texttt{g} \emph{modifier} (in the \texttt{sg} at the end of the line) instructs \texttt{latexindent.pl} to
+ make the substitution \emph{globally} throughout your file; you might try removing
+ the \texttt{g} modifier from \cref{lst:colsep1} and observing the
+ difference in output.
+ \end{itemize}
+ You might like to see \href{https://perldoc.perl.org/perlre.html#Modifiers}{https://perldoc.perl.org/perlre.html\#Modifiers}
+ for details of modifiers; in general, I recommend starting with the \texttt{sg} modifiers for this feature.
+ \end{example}
+
+ \begin{example}
+ We'll keep working with the file in \vref{lst:colsep} for this example.
+
+ Using the YAML in \cref{lst:multi-line}, and running the command
+ \begin{commandshell}
+latexindent.pl -r colsep.tex -l=multi-line.yaml
+\end{commandshell}
+ then we achieve the output in \cref{lst:colsep-mod2}.
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/colsep-mod2.tex}{\texttt{colsep.tex} using \cref{lst:multi-line}}{lst:colsep-mod2}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/multi-line.yaml}[replace-TCB]{\texttt{multi-line.yaml}}{lst:multi-line}
+ \end{cmhtcbraster}
+ With reference to \cref{lst:multi-line}, we have specified a \emph{multi-line} version of \texttt{this} by employing the \emph{literal}
+ YAML style \lstinline!|-!. See, for example, \href{https://stackoverflow.com/questions/3790454/in-yaml-how-do-i-break-a-string-over-multiple-lines}{https://stackoverflow.com/questions/3790454/in-yaml-how-do-i-break-a-string-over-multiple-lines}
+ for further options, all of which can be used in your YAML file.
+
+ This is a natural point to explore the \texttt{when} field, specified in \vref{lst:replacements}. This field can take two values: \emph{before}
+ and \emph{after}, which respectively instruct \texttt{latexindent.pl} to perform the replacements \emph{before} indentation or \emph{after} it.
+ The default value is \texttt{before}.
+
+ Using the YAML in \cref{lst:multi-line1}, and running the command
+ \begin{commandshell}
+latexindent.pl -r colsep.tex -l=multi-line1.yaml
+\end{commandshell}
+ then we achieve the output in \cref{lst:colsep-mod3}.
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/colsep-mod3.tex}{\texttt{colsep.tex} using \cref{lst:multi-line1}}{lst:colsep-mod3}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/multi-line1.yaml}[replace-TCB]{\texttt{multi-line1.yaml}}{lst:multi-line1}
+ \end{cmhtcbraster}
+ We note that, because we have specified \texttt{when: after}, that \texttt{latexindent.pl} has not found the string specified
+ in \cref{lst:multi-line1} within the file in \vref{lst:colsep}. As it has looked for the string within \cref{lst:multi-line1} \emph{after} the indentation has been performed. After
+ indentation, the string as written in \cref{lst:multi-line1} is no longer part of the file, and has therefore not been replaced.
+
+ As a final note on this example, if you use the \texttt{-rr} switch, as follows,
+ \begin{commandshell}
+latexindent.pl -rr colsep.tex -l=multi-line1.yaml
+\end{commandshell}
+ then the \texttt{when} field is ignored, no indentation is done, and the output is as in \cref{lst:colsep-mod2}.
+ \end{example}
+
+ \begin{example}
+ An important part of the substitution routine is in \emph{capture groups}.
+
+ Assuming that we start with
+ the code in \cref{lst:displaymath}, let's assume that our goal is to replace each occurrence of \lstinline!$$...$$!
+ with \lstinline!\begin{equation*}...\end{equation*}!. This example is partly motivated by \href{https://tex.stackexchange.com/questions/242150/good-looking-latex-code}{tex stackexchange question 242150}.
+
+ \cmhlistingsfromfile*{demonstrations/displaymath.tex}{\texttt{displaymath.tex}}{lst:displaymath}
+
+ We use the settings in \cref{lst:displaymath1} and run the command
+ \begin{commandshell}
+latexindent.pl -r displaymath.tex -l=displaymath1.yaml
+\end{commandshell}
+ to receive the output given in \cref{lst:displaymath-mod1}.
+
+ \begin{cmhtcbraster}[raster left skip=-3.75cm,
+ raster right skip=-2cm,]
+ \cmhlistingsfromfile*{demonstrations/displaymath-mod1.tex}{\texttt{displaymath.tex} using \cref{lst:displaymath1}}{lst:displaymath-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/displaymath1.yaml}[replace-TCB]{\texttt{displaymath1.yaml}}{lst:displaymath1}
+ \end{cmhtcbraster}
+
+ A few notes about \cref{lst:displaymath1}:
+ \begin{enumerate}
+ \item we have used the \texttt{x} modifier, which allows us to have white space
+ within the regex;
+ \item we have used a capture group, \lstinline!(.*?)! which captures the content between
+ the \lstinline!$$...$$! into the special variable, \lstinline!$1!;
+ \item we have used the content of the capture group, \lstinline!$1!, in the
+ replacement text.
+ \end{enumerate}
+ See \href{https://perldoc.perl.org/perlre.html#Capture-groups}{https://perldoc.perl.org/perlre.html\#Capture-groups} for a discussion
+ of capture groups.
+
+ The features of the replacement switches can, of course, be combined with others from the toolkit of \texttt{latexindent.pl}. For example,
+ we can combine the poly-switches of \vref{sec:poly-switches}, which we do in \cref{lst:equation}; upon running the command
+ \begin{commandshell}
+latexindent.pl -r -m displaymath.tex -l=displaymath1.yaml,equation.yaml
+\end{commandshell}
+ then we receive the output in \cref{lst:displaymath-mod2}.
+
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=-.1\textwidth},
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/displaymath-mod2.tex}{\texttt{displaymath.tex} using \cref{lst:displaymath1,lst:equation}}{lst:displaymath-mod2}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/equation.yaml}[MLB-TCB,width=0.55\textwidth]{\texttt{equation.yaml}}{lst:equation}
+ \end{cmhtcbraster}
+ \end{example}
+
+ \begin{example}
+ This example is motivated by \href{https://tex.stackexchange.com/questions/490086/bring-several-lines-together-to-fill-blank-spaces-in-texmaker}{tex stackexchange question 490086}.
+ We begin with the code in \cref{lst:phrase}.
+
+ \cmhlistingsfromfile*{demonstrations/phrase.tex}{\texttt{phrase.tex}}{lst:phrase}
+
+ Our goal is to make the spacing uniform between the phrases. To achieve this, we employ the settings in \cref{lst:hspace},
+ and run the command
+ \begin{commandshell}
+latexindent.pl -r phrase.tex -l=hspace.yaml
+\end{commandshell}
+ which gives the output in \cref{lst:phrase-mod1}.
+
+ \begin{cmhtcbraster}
+ \cmhlistingsfromfile*{demonstrations/phrase-mod1.tex}{\texttt{phrase.tex} using \cref{lst:hspace}}{lst:phrase-mod1}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/hspace.yaml}[replace-TCB]{\texttt{hspace.yaml}}{lst:hspace}
+ \end{cmhtcbraster}
+
+ The \lstinline!\h+! setting in \cref{lst:hspace} say to replace \emph{at least one horizontal space} with a single space.
+ \end{example}
+
+ \begin{example}
+ We begin with the code in \cref{lst:references}.
+
+ \cmhlistingsfromfile*{demonstrations/references.tex}{\texttt{references.tex}}{lst:references}
+
+ Our goal is to change each reference so that both the text and the reference are contained within one hyperlink. We
+ achieve this by employing \cref{lst:reference} and running the command
+ \begin{commandshell}
+latexindent.pl -r references.tex -l=reference.yaml
+\end{commandshell}
+ which gives the output in \cref{lst:references-mod1}.
+
+ \cmhlistingsfromfile*{demonstrations/references-mod1.tex}{\texttt{references.tex} using \cref{lst:reference}}{lst:references-mod1}
+
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/reference.yaml}[replace-TCB]{\texttt{reference.yaml}}{lst:reference}
+
+ Referencing \cref{lst:reference}, the \lstinline!|! means \emph{or}, we have used \emph{capture groups}, together with an example
+ of an \emph{optional} pattern, \lstinline!(?:eq)?!.
+ \end{example}
+
+ \begin{example}
+ Let's explore the three replacement mode switches (see \vref{tab:replacementswitches}) in the context of
+ an example that contains a verbatim code block, \cref{lst:verb1}; we will use the settings in \cref{lst:verbatim1-yaml}.
+
+ \begin{cmhtcbraster}
+ \cmhlistingsfromfile*{demonstrations/verb1.tex}{\texttt{verb1.tex}}{lst:verb1}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/verbatim1.yaml}[replace-TCB]{\texttt{verbatim1.yaml}}{lst:verbatim1-yaml}
+ \end{cmhtcbraster}
+
+ Upon running the following commands,
+ \begin{commandshell}
+latexindent.pl -r verb1.tex -l=verbatim1.yaml -o=+mod1
+latexindent.pl -rv verb1.tex -l=verbatim1.yaml -o=+-rv-mod1
+latexindent.pl -rr verb1.tex -l=verbatim1.yaml -o=+-rr-mod1
+\end{commandshell}
+ we receive the respective output in \crefrange{lst:verb1-mod1}{lst:verb1-rr-mod1}
+
+ \begin{cmhtcbraster}[raster columns=3,
+ raster left skip=-3.75cm,
+ raster right skip=-2cm,]
+ \cmhlistingsfromfile*{demonstrations/verb1-mod1.tex}{\texttt{verb1-mod1.tex}}{lst:verb1-mod1}
+ \cmhlistingsfromfile*{demonstrations/verb1-rv-mod1.tex}{\texttt{verb1-rv-mod1.tex}}{lst:verb1-rv-mod1}
+ \cmhlistingsfromfile*{demonstrations/verb1-rr-mod1.tex}{\texttt{verb1-rr-mod1.tex}}{lst:verb1-rr-mod1}
+ \end{cmhtcbraster}
+ \end{example}
+
+ We note that:
+ \begin{enumerate}
+ \item in \cref{lst:verb1-mod1} indentation has been performed, and that the replacements
+ specified in \cref{lst:verbatim1-yaml} have been performed, even within the verbatim code
+ block;
+ \item in \cref{lst:verb1-rv-mod1} indentation has been performed, but that the replacements have
+ \emph{not} been performed within the verbatim environment, because the
+ \texttt{rv} switch is active;
+ \item in \cref{lst:verb1-rr-mod1} indentation has \emph{not} been performed, but
+ that replacements have been performed, not respecting the verbatim code block.
+ \end{enumerate}
+ See the summary within \vref{tab:replacementswitches}.
+
+ \begin{example}
+ Let's explore the \texttt{amalgamate} field from \vref{lst:replacements} in the context of the file specified
+ in \cref{lst:amalg1}.
+
+ \cmhlistingsfromfile*{demonstrations/amalg1.tex}{\texttt{amalg1.tex}}{lst:amalg1}
+
+ Let's consider the YAML files given in \crefrange{lst:amalg1-yaml}{lst:amalg3-yaml}.
+
+ \begin{cmhtcbraster}[raster columns=3,
+ raster left skip=-3.75cm,
+ raster right skip=-2cm,]
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/amalg1-yaml.yaml}[replace-TCB]{\texttt{amalg1-yaml.yaml}}{lst:amalg1-yaml}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/amalg2-yaml.yaml}[replace-TCB]{\texttt{amalg2-yaml.yaml}}{lst:amalg2-yaml}
+ \cmhlistingsfromfile*[style=yaml-LST]{demonstrations/amalg3-yaml.yaml}[replace-TCB]{\texttt{amalg3-yaml.yaml}}{lst:amalg3-yaml}
+ \end{cmhtcbraster}
+
+ Upon running the following commands,
+ \begin{commandshell}
+latexindent.pl -r amalg1.tex -l=amalg1-yaml
+latexindent.pl -r amalg1.tex -l=amalg1-yaml,amalg2-yaml
+latexindent.pl -r amalg1.tex -l=amalg1-yaml,amalg2-yaml,amalg3-yaml
+\end{commandshell}
+ we receive the respective output in \crefrange{lst:amalg1-mod1}{lst:amalg1-mod123}.
+
+ \begin{cmhtcbraster}[raster columns=3,
+ raster left skip=-3.75cm,
+ raster right skip=-2cm,]
+ \cmhlistingsfromfile*{demonstrations/amalg1-mod1.tex}{\texttt{amalg1.tex} using \cref{lst:amalg1-yaml}}{lst:amalg1-mod1}
+ \cmhlistingsfromfile*{demonstrations/amalg1-mod12.tex}{\texttt{amalg1.tex} using \cref{lst:amalg1-yaml,lst:amalg2-yaml}}{lst:amalg1-mod12}
+ \cmhlistingsfromfile*{demonstrations/amalg1-mod123.tex}{\texttt{amalg1.tex} using \cref{lst:amalg1-yaml,lst:amalg2-yaml,lst:amalg3-yaml}}{lst:amalg1-mod123}
+ \end{cmhtcbraster}
+ We note that:
+ \begin{enumerate}
+ \item in \cref{lst:amalg1-mod1} the replacements from \cref{lst:amalg1-yaml} have been used;
+ \item in \cref{lst:amalg1-mod12} the replacements from \cref{lst:amalg1-yaml,lst:amalg2-yaml} have
+ \emph{both} been used, because the default value of \texttt{amalgamate}
+ is 1;
+ \item in \cref{lst:amalg1-mod123} \emph{only} the replacements from
+ \cref{lst:amalg3-yaml} have been used, because the value of \texttt{amalgamate} has
+ been set to 0.
+ \end{enumerate}
+ \end{example}
diff --git a/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex b/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex
index 0e959b2cf77..ec3a86871dd 100644
--- a/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex
+++ b/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex
@@ -1,9 +1,10 @@
% arara: pdflatex: {shell: yes, files: [latexindent]}
-\fancyhead[R]{\bfseries\thepage%
- \tikz[remember picture,overlay] {
- \node at (1,0){\includegraphics{logo}};
- }}
+\renewcommand{\imagetouse}{logo}
\section{The -m (modifylinebreaks) switch}\label{sec:modifylinebreaks}
+ \fancyhead[R]{\bfseries\thepage%
+ \tikz[remember picture,overlay] {
+ \node at (1,0){\includegraphics{logo}};
+ }}
All features described in this section will only be relevant if the
\texttt{-m} switch is used.
@@ -87,13 +88,10 @@ latexindent.pl -m textwrap1.tex -o textwrap1-mod1.tex -l textwrap1.yaml
\end{commandshell}
we obtain the output in \cref{lst:textwrap1-mod1}.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/textwrap1-mod1.tex}{\texttt{textwrap1-mod1.tex}}{lst:textwrap1-mod1}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\linewidth}
\cmhlistingsfromfile{demonstrations/textwrap1.yaml}[MLB-TCB]{\texttt{textwrap1.yaml}}{lst:textwrap1-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
The text wrapping routine is performed \emph{after} verbatim environments
have been stored, so verbatim environments and verbatim commands are exempt from the
@@ -128,7 +126,7 @@ latexindent.pl -m textwrap3.tex -o textwrap3-mod1.tex -l textwrap1.yaml
The text wrapping routine of \texttt{latexindent.pl} is performed by the
\texttt{Text::Wrap} module, which provides a \texttt{separator} feature
to separate lines with characters other than a new line (see
- \cite{textwrap}). By default, the separator is empty which means that a new
+ \cite{textwrap}). By default, the separator is empty which means that a new
line token will be used, but you can change it as you see fit.
For example starting with the file in \cref{lst:textwrap4}
@@ -141,13 +139,10 @@ latexindent.pl -m textwrap4.tex -o textwrap4-mod2.tex -l textwrap2.yaml
\end{commandshell}
then we obtain the output in \cref{lst:textwrap4-mod2}.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/textwrap4-mod2.tex}{\texttt{textwrap4-mod2.tex}}{lst:textwrap4-mod2}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\linewidth}
\cmhlistingsfromfile{demonstrations/textwrap2.yaml}[MLB-TCB]{\texttt{textwrap2.yaml}}{lst:textwrap2-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
\subsubsection{text wrapping on a per-code-block basis}
By default, if the value of \texttt{columns} is greater than 0 and the
@@ -179,20 +174,17 @@ latexindent.pl -m textwrap4.tex -o textwrap4-mod2.tex -l textwrap2.yaml
\cmhlistingsfromfile{demonstrations/textwrap5.tex}{\texttt{textwrap5.tex}}{lst:textwrap5}
\end{widepage}
- With reference to this codeblock, the settings given in \cref{lst:textwrap3-yaml,lst:textwrap4-yaml,lst:textwrap5-yaml} each
+ With reference to this code block, the settings given in \cref{lst:textwrap3-yaml,lst:textwrap4-yaml,lst:textwrap5-yaml} each
give the same output.
- \begin{adjustwidth}{-3.5cm}{-2.5cm}
- \begin{minipage}{.33\linewidth}
- \cmhlistingsfromfile{demonstrations/textwrap3.yaml}[MLB-TCB]{\texttt{textwrap3.yaml}}{lst:textwrap3-yaml}
- \end{minipage}%
- \begin{minipage}{.33\linewidth}
- \cmhlistingsfromfile{demonstrations/textwrap4.yaml}[MLB-TCB]{\texttt{textwrap4.yaml}}{lst:textwrap4-yaml}
- \end{minipage}%
- \begin{minipage}{.33\linewidth}
- \cmhlistingsfromfile{demonstrations/textwrap5.yaml}[MLB-TCB]{\texttt{textwrap5.yaml}}{lst:textwrap5-yaml}
- \end{minipage}
- \end{adjustwidth}
+ \begin{cmhtcbraster}[raster columns=3,
+ raster left skip=-3.5cm,
+ raster right skip=-2cm,
+ raster column skip=.03\linewidth]
+ \cmhlistingsfromfile{demonstrations/textwrap3.yaml}[MLB-TCB]{\texttt{textwrap3.yaml}}{lst:textwrap3-yaml}
+ \cmhlistingsfromfile{demonstrations/textwrap4.yaml}[MLB-TCB]{\texttt{textwrap4.yaml}}{lst:textwrap4-yaml}
+ \cmhlistingsfromfile{demonstrations/textwrap5.yaml}[MLB-TCB]{\texttt{textwrap5.yaml}}{lst:textwrap5-yaml}
+ \end{cmhtcbraster}
Let's explore the similarities and differences in the equivalent (with respect to
\cref{lst:textwrap5}) syntax specified in \cref{lst:textwrap3-yaml,lst:textwrap4-yaml,lst:textwrap5-yaml}:
@@ -214,7 +206,7 @@ latexindent.pl -m textwrap4.tex -o textwrap4-mod2.tex -l textwrap2.yaml
latexindent.pl -s textwrap5.tex -l=textwrap3.yaml -m
latexindent.pl -s textwrap5.tex -l=textwrap4.yaml -m
latexindent.pl -s textwrap5.tex -l=textwrap5.yaml -m
- \end{commandshell}
+\end{commandshell}
we obtain the output shown in \cref{lst:textwrap5-mod3}.
\cmhlistingsfromfile{demonstrations/textwrap5-mod3.tex}{\texttt{textwrap5-mod3.tex}}{lst:textwrap5-mod3}
@@ -229,7 +221,7 @@ latexindent.pl -s textwrap5.tex -l=textwrap5.yaml -m
In particular, upon running
\begin{commandshell}
latexindent.pl -s textwrap6.tex -l=textwrap5.yaml -m
- \end{commandshell}
+\end{commandshell}
we obtain the output given in \cref{lst:textwrap6-mod5}.
\begin{widepage}
@@ -261,7 +253,7 @@ latexindent.pl -s textwrap6.tex -l=textwrap5.yaml -m
latexindent.pl -s textwrap6.tex -l=textwrap6.yaml -m
latexindent.pl -s textwrap6.tex -l=textwrap7.yaml -m
latexindent.pl -s textwrap6.tex -l=textwrap8.yaml -m
- \end{commandshell}
+\end{commandshell}
we receive the respective output given in \crefrange{lst:textwrap6-mod6}{lst:textwrap6-mod8}.
\begin{widepage}
\cmhlistingsfromfile{demonstrations/textwrap6-mod6.tex}{\texttt{textwrap6.tex} using \cref{lst:textwrap6-yaml}}{lst:textwrap6-mod6}
@@ -288,24 +280,21 @@ latexindent.pl -s textwrap6.tex -l=textwrap8.yaml -m
\texttt{0}) and a positive integer (see \vref{lst:textwrap6}, for
example). We explore further options in \crefrange{lst:textwrap9-yaml}{lst:textwrap11-yaml}.
- \begin{adjustwidth}{-3.5cm}{-2.5cm}
- \begin{minipage}{.33\linewidth}
- \cmhlistingsfromfile{demonstrations/textwrap9.yaml}[MLB-TCB]{\texttt{textwrap9.yaml}}{lst:textwrap9-yaml}
- \end{minipage}%
- \begin{minipage}{.33\linewidth}
- \cmhlistingsfromfile{demonstrations/textwrap10.yaml}[MLB-TCB]{\texttt{textwrap10.yaml}}{lst:textwrap10-yaml}
- \end{minipage}%
- \begin{minipage}{.33\linewidth}
- \cmhlistingsfromfile{demonstrations/textwrap11.yaml}[MLB-TCB]{\texttt{textwrap11.yaml}}{lst:textwrap11-yaml}
- \end{minipage}
- \end{adjustwidth}
+ \begin{cmhtcbraster}[raster columns=3,
+ raster left skip=-3.5cm,
+ raster right skip=-2cm,
+ raster column skip=.03\linewidth]
+ \cmhlistingsfromfile{demonstrations/textwrap9.yaml}[MLB-TCB]{\texttt{textwrap9.yaml}}{lst:textwrap9-yaml}
+ \cmhlistingsfromfile{demonstrations/textwrap10.yaml}[MLB-TCB]{\texttt{textwrap10.yaml}}{lst:textwrap10-yaml}
+ \cmhlistingsfromfile{demonstrations/textwrap11.yaml}[MLB-TCB]{\texttt{textwrap11.yaml}}{lst:textwrap11-yaml}
+ \end{cmhtcbraster}
\Cref{lst:textwrap9-yaml} and \cref{lst:textwrap10-yaml} are equivalent. Upon running
the commands
\begin{commandshell}
latexindent.pl -s textwrap6.tex -l=textwrap9.yaml -m
latexindent.pl -s textwrap6.tex -l=textwrap11.yaml -m
- \end{commandshell}
+\end{commandshell}
we receive the respective output given in \cref{lst:textwrap6-mod9,lst:textwrap6-mod11}.
\begin{widepage}
@@ -330,12 +319,12 @@ latexindent.pl -s textwrap6.tex -l=textwrap11.yaml -m
\texttt{80} will be used.
\texttt{alignAtAmpersandTakesPriority} is set to \texttt{1} by default; assuming
- that text wrapping is occuring on a per-code-block basis, and the current
+ that text wrapping is occurring on a per-code-block basis, and the current
environment/code block is specified within \vref{lst:aligndelims:basic} then text wrapping
will be disabled for this code block.
If you wish to specify \texttt{afterHeading} commands (see
- \vref{lst:indentAfterHeadings}) on a per-name basis, then you need to append the name with
+ \vref{lst:indentAfterHeadings}) on a per-name basis, then you need to append the name with
\texttt{:heading}, for example, you might use \texttt{section:heading}.
\subsubsection{Summary of text wrapping}
@@ -357,7 +346,7 @@ latexindent.pl -s textwrap6.tex -l=textwrap11.yaml -m
\subsection{oneSentencePerLine: modifying line breaks for sentences}\label{sec:onesentenceperline}
You can instruct \texttt{latexindent.pl} to
- format%%%%%%
+ format%
\announce{2018-01-13}{one sentence per line} your file so that
it puts one sentence per line. Thank you to \cite{mlep} for helping to
shape and test this feature. The behaviour of this part of the script is controlled by
@@ -373,9 +362,9 @@ latexindent.pl -s textwrap6.tex -l=textwrap11.yaml -m
\yamltitle{removeSentenceLineBreaks}{0|1}
When operating upon sentences \texttt{latexindent.pl} will, by default, remove
- internal linebreaks as \texttt{removeSentenceLineBreaks} is set to \texttt{1}.
- Setting this switch to \texttt{0} instructs \texttt{latexindent.pl}
- not to do so.
+ internal line breaks as \texttt{removeSentenceLineBreaks} is set to
+ \texttt{1}. Setting this switch to \texttt{0} instructs
+ \texttt{latexindent.pl} not to do so.
For example, consider \texttt{multiple-sentences.tex} shown in \cref{lst:multiple-sentences}.
@@ -386,32 +375,26 @@ latexindent.pl -s textwrap6.tex -l=textwrap11.yaml -m
\begin{commandshell}
latexindent.pl multiple-sentences -m -l=manipulate-sentences.yaml
latexindent.pl multiple-sentences -m -l=keep-sen-line-breaks.yaml
- \end{commandshell}
+\end{commandshell}
\end{widepage}
then we obtain the respective output given in \cref{lst:multiple-sentences-mod1,lst:multiple-sentences-mod2}.
- \begin{minipage}{.5\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/multiple-sentences-mod1.tex}{\texttt{multiple-sentences.tex} using \cref{lst:manipulate-sentences-yaml}}{lst:multiple-sentences-mod1}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/manipulate-sentences.yaml}[MLB-TCB]{\texttt{manipulate-sentences.yaml}}{lst:manipulate-sentences-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
- \begin{minipage}{.5\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/multiple-sentences-mod2.tex}{\texttt{multiple-sentences.tex} using \cref{lst:keep-sen-line-breaks-yaml}}{lst:multiple-sentences-mod2}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/keep-sen-line-breaks.yaml}[MLB-TCB]{\texttt{keep-sen-line-breaks.yaml}}{lst:keep-sen-line-breaks-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
Notice, in particular, that the `internal' sentence line breaks in
\cref{lst:multiple-sentences} have been removed in \cref{lst:multiple-sentences-mod1}, but have
not been removed in \cref{lst:multiple-sentences-mod2}.
The remainder of the settings displayed in \vref{lst:oneSentencePerLine} instruct
- \texttt{latexindent.pl} on how to define a sentence. From the perpesctive of
+ \texttt{latexindent.pl} on how to define a sentence. From the perspective of
\texttt{latexindent.pl} a sentence must:
\begin{itemize}
\item \emph{follow} a certain character or set of characters (see
@@ -427,19 +410,14 @@ latexindent.pl multiple-sentences -m -l=keep-sen-line-breaks.yaml
pattern that you would like; you can specify anything in this field using the language of
regular expressions.
- \begin{adjustwidth}{-3.5cm}{-2.5cm}
- \begin{minipage}{.36\linewidth}
- \cmhlistingsfromfile[style=sentencesFollow]*{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesFollow}}{lst:sentencesFollow}
- \end{minipage}
- \hfill
- \begin{minipage}{.31\linewidth}
- \cmhlistingsfromfile[style=sentencesBeginWith]*{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesBeginWith}}{lst:sentencesBeginWith}
- \end{minipage}
- \hfill
- \begin{minipage}{.31\linewidth}
- \cmhlistingsfromfile[style=sentencesEndWith]*{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesEndWith}}{lst:sentencesEndWith}
- \end{minipage}
- \end{adjustwidth}
+ \begin{cmhtcbraster}[raster columns=3,
+ raster left skip=-3.5cm,
+ raster right skip=-2cm,
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile[style=sentencesFollow]*{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesFollow}}{lst:sentencesFollow}
+ \cmhlistingsfromfile[style=sentencesBeginWith]*{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesBeginWith}}{lst:sentencesBeginWith}
+ \cmhlistingsfromfile[style=sentencesEndWith]*{../defaultSettings.yaml}[MLB-TCB,width=.9\linewidth,before=\centering]{\texttt{sentencesEndWith}}{lst:sentencesEndWith}
+ \end{cmhtcbraster}
\subsubsection{sentencesFollow}
Let's explore a few of the switches in \texttt{sentencesFollow}; let's start with
@@ -450,13 +428,10 @@ latexindent.pl multiple-sentences -m -l=sentences-follow1.yaml
\end{commandshell}
we obtain the output given in \cref{lst:multiple-sentences-mod3}.
- \begin{minipage}{.5\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/multiple-sentences-mod3.tex}{\texttt{multiple-sentences.tex} using \cref{lst:sentences-follow1-yaml}}{lst:multiple-sentences-mod3}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentences-follow1.yaml}[MLB-TCB]{\texttt{sentences-follow1.yaml}}{lst:sentences-follow1-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
Notice that, because \texttt{blankLine} is set to \texttt{0},
\texttt{latexindent.pl} will not seek sentences following a blank line, and so the
@@ -472,18 +447,18 @@ latexindent.pl multiple-sentences -m -l=sentences-follow1.yaml
\begin{commandshell}
latexindent.pl multiple-sentences1 -m -l=manipulate-sentences.yaml
latexindent.pl multiple-sentences1 -m -l=manipulate-sentences.yaml,sentences-follow2.yaml
- \end{commandshell}
+\end{commandshell}
\end{widepage}
then we obtain the respective output given in \cref{lst:multiple-sentences1-mod1,lst:multiple-sentences1-mod2}.
\cmhlistingsfromfile{demonstrations/multiple-sentences1-mod1.tex}{\texttt{multiple-sentences1.tex} using \vref{lst:manipulate-sentences-yaml}}{lst:multiple-sentences1-mod1}
- \begin{minipage}{.55\linewidth}
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=1cm},
+ ]
\cmhlistingsfromfile{demonstrations/multiple-sentences1-mod2.tex}{\texttt{multiple-sentences1.tex} using \cref{lst:sentences-follow2-yaml}}{lst:multiple-sentences1-mod2}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentences-follow2.yaml}[MLB-TCB]{\texttt{sentences-follow2.yaml}}{lst:sentences-follow2-yaml}
- \end{minipage}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentences-follow2.yaml}[MLB-TCB,width=.45\textwidth]{\texttt{sentences-follow2.yaml}}{lst:sentences-follow2-yaml}
+ \end{cmhtcbraster}
Notice that in \cref{lst:multiple-sentences1-mod1} the first sentence after the
\texttt{)} has not been accounted for, but that following the inclusion
@@ -504,18 +479,18 @@ latexindent.pl multiple-sentences1 -m -l=manipulate-sentences.yaml,sentences-fol
\begin{commandshell}
latexindent.pl multiple-sentences2 -m -l=manipulate-sentences.yaml
latexindent.pl multiple-sentences2 -m -l=manipulate-sentences.yaml,sentences-begin1.yaml
- \end{commandshell}
+\end{commandshell}
\end{widepage}
then we obtain the respective output given in \cref{lst:multiple-sentences2-mod1,lst:multiple-sentences2-mod2}.
\cmhlistingsfromfile{demonstrations/multiple-sentences2-mod1.tex}{\texttt{multiple-sentences2.tex} using \vref{lst:manipulate-sentences-yaml}}{lst:multiple-sentences2-mod1}
- \begin{minipage}{.55\linewidth}
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=1cm},
+ ]
\cmhlistingsfromfile{demonstrations/multiple-sentences2-mod2.tex}{\texttt{multiple-sentences2.tex} using \cref{lst:sentences-begin1-yaml}}{lst:multiple-sentences2-mod2}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentences-begin1.yaml}[MLB-TCB]{\texttt{sentences-begin1.yaml}}{lst:sentences-begin1-yaml}
- \end{minipage}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentences-begin1.yaml}[MLB-TCB,width=.45\textwidth]{\texttt{sentences-begin1.yaml}}{lst:sentences-begin1-yaml}
+ \end{cmhtcbraster}
Notice that in \cref{lst:multiple-sentences2-mod1}, the first sentence has been accounted for but
that the subsequent sentences have not. In \cref{lst:multiple-sentences2-mod2}, all of the
sentences have been accounted for, because the \texttt{other} field in
@@ -535,21 +510,15 @@ latexindent.pl multiple-sentences -m -l=sentences-end2.yaml
\end{commandshell}
then we obtain the output in \cref{lst:multiple-sentences-mod4}.
- \begin{minipage}{.5\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/multiple-sentences-mod4.tex}{\texttt{multiple-sentences.tex} using \cref{lst:sentences-end1-yaml}}{lst:multiple-sentences-mod4}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentences-end1.yaml}[MLB-TCB]{\texttt{sentences-end1.yaml}}{lst:sentences-end1-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
- \begin{minipage}{.5\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/multiple-sentences-mod5.tex}{\texttt{multiple-sentences.tex} using \cref{lst:sentences-end2-yaml}}{lst:multiple-sentences-mod5}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentences-end2.yaml}[MLB-TCB]{\texttt{sentences-end2.yaml}}{lst:sentences-end2-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
There is a subtle difference between the output in \cref{lst:multiple-sentences-mod4,lst:multiple-sentences-mod5}; in
particular, in \cref{lst:multiple-sentences-mod4} the word \texttt{sentence} has not
@@ -584,27 +553,31 @@ latexindent.pl url -m -l=manipulate-sentences.yaml
\end{itemize}
If you find that the \texttt{betterFullStop} does not work for your purposes, then
you can switch it off by setting it to \texttt{0}, and you can
- experiment with the \texttt{other} field.
+ experiment with the \texttt{other}
+ field.%
+ \announce*{2019-07-13}{fine tuning the betterFullStop} You can also seek
+ to customise the \texttt{betterFullStop} routine by using the
+ \emph{fine tuning}, detailed in \vref{lst:fineTuning}.
The \texttt{basicFullStop} routine should probably be avoided in most situations, as
- it does not accomodate the specifications above. For example, using the following command
+ it does not accommodate the specifications above. For example, using the following
+ command
\begin{commandshell}
latexindent.pl url -m -l=alt-full-stop1.yaml
\end{commandshell}
and the YAML in \cref{lst:alt-full-stop1-yaml} gives the output in
\cref{lst:url-mod2}.
- \begin{adjustwidth}{-3.5cm}{-1.5cm}
- \begin{minipage}{.6\linewidth}
- \cmhlistingsfromfile{demonstrations/url-mod2.tex}{\texttt{url.tex} using \cref{lst:alt-full-stop1-yaml}}{lst:url-mod2}
- \end{minipage}
- \hfill
- \begin{minipage}{.4\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/alt-full-stop1.yaml}[MLB-TCB]{\texttt{alt-full-stop1.yaml}}{lst:alt-full-stop1-yaml}
- \end{minipage}
- \end{adjustwidth}
+ \begin{cmhtcbraster}[ raster left skip=-3.5cm,
+ raster right skip=-2cm,
+ raster force size=false,
+ raster column 1/.style={add to width=.1\textwidth},
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile{demonstrations/url-mod2.tex}{\texttt{url.tex} using \cref{lst:alt-full-stop1-yaml}}{lst:url-mod2}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/alt-full-stop1.yaml}[MLB-TCB,width=.5\textwidth]{\texttt{alt-full-stop1.yaml}}{lst:alt-full-stop1-yaml}
+ \end{cmhtcbraster}
- Notice that the full stop within the URL has not been accomodated correctly because of
+ Notice that the full stop within the URL has not been accommodated correctly because of
the non-default settings in \cref{lst:alt-full-stop1-yaml}.
\subsubsection{Features of the oneSentencePerLine routine}
@@ -617,7 +590,7 @@ latexindent.pl url -m -l=alt-full-stop1.yaml
\cref{lst:multiple-sentences3}, and run the command
\begin{commandshell}
latexindent.pl multiple-sentences3 -m -l=manipulate-sentences.yaml
- \end{commandshell}
+\end{commandshell}
then we obtain the output in \cref{lst:multiple-sentences3-mod1}. \cmhlistingsfromfile{demonstrations/multiple-sentences3.tex}{\texttt{multiple-sentences3.tex}}{lst:multiple-sentences3}
\cmhlistingsfromfile{demonstrations/multiple-sentences3-mod1.tex}{\texttt{multiple-sentences3.tex} using \vref{lst:manipulate-sentences-yaml}}{lst:multiple-sentences3-mod1}
@@ -627,30 +600,27 @@ latexindent.pl multiple-sentences3 -m -l=manipulate-sentences.yaml
\begin{commandshell}
latexindent.pl multiple-sentences4 -m -l=manipulate-sentences.yaml
latexindent.pl multiple-sentences4 -m -l=keep-sen-line-breaks.yaml
- \end{commandshell}
+\end{commandshell}
then we obtain the output in \cref{lst:multiple-sentences4-mod1,lst:multiple-sentences4-mod2}. \cmhlistingsfromfile{demonstrations/multiple-sentences4.tex}{\texttt{multiple-sentences4.tex}}{lst:multiple-sentences4}
\begin{widepage}
\cmhlistingsfromfile{demonstrations/multiple-sentences4-mod1.tex}{\texttt{multiple-sentences4.tex} using \vref{lst:manipulate-sentences-yaml}}{lst:multiple-sentences4-mod1}
\end{widepage}
\cmhlistingsfromfile{demonstrations/multiple-sentences4-mod2.tex}{\texttt{multiple-sentences4.tex} using \vref{lst:keep-sen-line-breaks-yaml}}{lst:multiple-sentences4-mod2}
- Once you've read \cref{sec:poly-switches}, you will know that you can accomodate the
+ Once you've read \cref{sec:poly-switches}, you will know that you can accommodate the
removal of internal sentence line breaks by using the YAML in \cref{lst:item-rules2-yaml}
and the command
\begin{commandshell}
latexindent.pl multiple-sentences4 -m -l=item-rules2.yaml
- \end{commandshell}
+\end{commandshell}
the output of which is shown in \cref{lst:multiple-sentences4-mod3}.
- \begin{minipage}{.5\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/multiple-sentences4-mod3.tex}{\texttt{multiple-sentences4.tex} using \cref{lst:item-rules2-yaml}}{lst:multiple-sentences4-mod3}
- \end{minipage}
- \hfill
- \begin{minipage}{.5\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/item-rules2.yaml}[MLB-TCB]{\texttt{item-rules2.yaml}}{lst:item-rules2-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
\subsubsection{text wrapping and indenting sentences}
- The \texttt{oneSentencePerLine}%%%
+ The \texttt{oneSentencePerLine}%
\announce{2018-08-13}{oneSentencePerline text wrap and indent} can be instructed to perform
text wrapping and indentation upon sentences.
@@ -664,19 +634,18 @@ latexindent.pl multiple-sentences5 -m -l=sentence-wrap1.yaml
\end{commandshell}
we receive the output given in \cref{lst:multiple-sentences5-mod1}.
- \begin{widepage}
- \begin{minipage}{.55\linewidth}
- \cmhlistingsfromfile{demonstrations/multiple-sentences5-mod1.tex}{\texttt{multiple-sentences5.tex} using \cref{lst:sentence-wrap1-yaml}}{lst:multiple-sentences5-mod1}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentence-wrap1.yaml}[MLB-TCB]{\texttt{sentence-wrap1.yaml}}{lst:sentence-wrap1-yaml}
- \end{minipage}
- \end{widepage}
+ \begin{cmhtcbraster}[ raster left skip=-3.5cm,
+ raster right skip=-2cm,
+ raster force size=false,
+ raster column 1/.style={add to width=.1\textwidth},
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile{demonstrations/multiple-sentences5-mod1.tex}{\texttt{multiple-sentences5.tex} using \cref{lst:sentence-wrap1-yaml}}{lst:multiple-sentences5-mod1}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/sentence-wrap1.yaml}[MLB-TCB,width=0.5\textwidth]{\texttt{sentence-wrap1.yaml}}{lst:sentence-wrap1-yaml}
+ \end{cmhtcbraster}
If you wish to specify the \texttt{columns} field on a per-code-block basis
for sentences, then you would use \texttt{sentence}; explicitly, starting with
- \vref{lst:textwrap9-yaml}, for example, you would replace/append
+ \vref{lst:textwrap9-yaml}, for example, you would replace/append
\texttt{environments} with, for example, \texttt{sentence: 50}.
The indentation of sentences requires that sentences are stored as code blocks. This
@@ -752,13 +721,10 @@ latexindent.pl multiple-sentences6 -m -l=sentence-wrap1.yaml,itemize.yaml
Let's start with the \texttt{.tex} file in \cref{lst:shortlines},
together with the YAML settings in \cref{lst:remove-para1-yaml}.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile[showspaces=true]{demonstrations/shortlines.tex}{\texttt{shortlines.tex}}{lst:shortlines}
- \end{minipage}
- \hfill
- \begin{minipage}{.49\linewidth}
\cmhlistingsfromfile{demonstrations/remove-para1.yaml}[MLB-TCB]{\texttt{remove-para1.yaml}}{lst:remove-para1-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
Upon running the command
\begin{commandshell}
@@ -774,7 +740,7 @@ latexindent.pl -m shortlines.tex -o shortlines1.tex -l remove-para1.yaml
\vref{lst:removeTWS-before} and running, for example,
\begin{commandshell}
latexindent.pl -m shortlines.tex -o shortlines1-tws.tex -l remove-para1.yaml,removeTWS-before.yaml
- \end{commandshell}
+\end{commandshell}
in which case the output is as in \cref{lst:shortlines1-tws}; notice that the double
spaces present in \cref{lst:shortlines1} have been addressed.
@@ -784,13 +750,10 @@ latexindent.pl -m shortlines.tex -o shortlines1-tws.tex -l remove-para1.yaml,rem
\texttt{all} switch applies to \emph{all} code block
types. So, for example, let's consider the files in \cref{lst:shortlines-mand,lst:shortlines-opt}
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/shortlines-mand.tex}{\texttt{shortlines-mand.tex}}{lst:shortlines-mand}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\linewidth}
\cmhlistingsfromfile{demonstrations/shortlines-opt.tex}{\texttt{shortlines-opt.tex}}{lst:shortlines-opt}
- \end{minipage}
+ \end{cmhtcbraster}
Upon running the commands
\begin{widepage}
@@ -837,7 +800,7 @@ latexindent.pl -m shortlines-envs.tex -o shortlines-envs3.tex -l remove-para3.ya
\cmhlistingsfromfile{demonstrations/shortlines-envs2.tex}{\texttt{shortlines-envs2.tex}}{lst:shortlines-envs2}
\cmhlistingsfromfile{demonstrations/shortlines-envs3.tex}{\texttt{shortlines-envs3.tex}}{lst:shortlines-envs3}
- The remaining code-block types can be customized in analogous ways, although note that
+ The remaining code-block types can be customised in analogous ways, although note that
\texttt{commands}, \texttt{keyEqualsValuesBracesBrackets}, \texttt{namedGroupingBracesBrackets},
\texttt{UnNamedGroupingBracesBrackets} are controlled by the \texttt{optionalArguments} and the
\texttt{mandatoryArguments}.
@@ -847,13 +810,10 @@ latexindent.pl -m shortlines-envs.tex -o shortlines-envs3.tex -l remove-para3.ya
code-blocks. For example, consider the file in \cref{lst:shortlines-md}, with the YAML
settings in \cref{lst:remove-para4-yaml}.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/shortlines-md.tex}{\texttt{shortlines-md.tex}}{lst:shortlines-md}
- \end{minipage}
- \hfill
- \begin{minipage}{.49\linewidth}
\cmhlistingsfromfile{demonstrations/remove-para4.yaml}[MLB-TCB]{\texttt{remove-para4.yaml}}{lst:remove-para4-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
Upon running the following command
\begin{widepage}
@@ -863,7 +823,7 @@ latexindent.pl -m shortlines-md.tex -o shortlines-md4.tex -l remove-para4.yaml
\end{widepage}
then we obtain the output in \cref{lst:shortlines-md4}. \cmhlistingsfromfile{demonstrations/shortlines-md4.tex}{\texttt{shortlines-md4.tex}}{lst:shortlines-md4}
- Note%%%%%
+ Note%
\announce{2018-08-13}*{updates to all in removeParagraphLineBreaks} that the
\texttt{all} field can take the same exceptions detailed in
\cref{lst:textwrap6-yaml}{lst:textwrap8-yaml}.
@@ -903,7 +863,7 @@ latexindent.pl -m shortlines-md.tex -o shortlines-md4.tex -l remove-para4.yaml
latexindent.pl -m sl-stop.tex -o sl-stop4.tex -l remove-para4.yaml
latexindent.pl -m sl-stop.tex -o sl-stop4-command.tex -l=remove-para4.yaml,stop-command.yaml
latexindent.pl -m sl-stop.tex -o sl-stop4-comment.tex -l=remove-para4.yaml,stop-comment.yaml
- \end{commandshell}
+\end{commandshell}
\end{widepage}
we obtain the respective outputs in \crefrange{lst:sl-stop4}{lst:sl-stop4-comment}; notice in particular
that:
@@ -931,7 +891,7 @@ latexindent.pl -m sl-stop.tex -o sl-stop4-comment.tex -l=remove-para4.yaml,stop-
\subsection{Combining removeParagraphLineBreaks and textWrapOptions}\label{subsec:removeparagraphlinebreaks:and:textwrap}
- The%%%%%
+ The%
\announce{2018-08-13}{combine text wrap and remove paragraph line breaks} text wrapping
routine (\vref{subsec:textwrapping}) and remove paragraph line breaks routine
(\vref{subsec:removeparagraphlinebreaks}) can be combined.
@@ -953,25 +913,22 @@ latexindent.pl -m sl-stop.tex -o sl-stop4-comment.tex -l=remove-para4.yaml,stop-
Explicitly, using the settings in \cref{lst:textwrap12-yaml} and running the command
\begin{commandshell}
latexindent.pl -m textwrap7.tex -l=textwrap12.yaml -o=+-mod12
- \end{commandshell}
+\end{commandshell}
we obtain the output in \cref{lst:textwrap7-mod12}.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/textwrap7-mod12.tex}{\texttt{textwrap7-mod12.tex}}{lst:textwrap7-mod12}
- \end{minipage}
- \hfill
- \begin{minipage}{.49\linewidth}
\cmhlistingsfromfile{demonstrations/textwrap12.yaml}[MLB-TCB]{\texttt{textwrap12.yaml}}{lst:textwrap12-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
- In \cref{lst:textwrap7-mod12} the paragraph linebreaks have first been removed from
- \cref{lst:textwrap7}, and then the text wrapping routine has been applied. It is
+ In \cref{lst:textwrap7-mod12} the paragraph line breaks have first been removed from
+ \cref{lst:textwrap7}, and then the text wrapping routine has been applied. It is
envisaged that variants of \cref{lst:textwrap12-yaml} will be among the most useful
settings for these two features.
\subsection{Poly-switches}\label{sec:poly-switches}
Every other field in the \texttt{modifyLineBreaks} field uses poly-switches, and can
- take one of \emph{five}%%%%%%
+ take one of \emph{five}%
\announce{2017-08-21}*{blank line poly-switch} integer values:
\begin{itemize}[font=\bfseries]
\item[$-1$] \emph{remove mode}: line breaks before or after the
@@ -989,7 +946,11 @@ latexindent.pl -m textwrap7.tex -l=textwrap12.yaml -o=+-mod12
\announce{2017-08-21}{blank line poly-switch}: a line break will be added before or after the
\emph{<part of thing>} under consideration, assuming that
there is not already a line break before or after the \emph{<part of thing>},
- followed by a blank line.
+ followed by a blank line;
+ \item[4] \emph{add blank line mode}%
+ \announce*{2019-07-13}{blank line poly-switch}; a blank line will
+ be added before or after the \emph{<part of thing>} under consideration, even if the
+ \emph{<part of thing>} is already on its own line.
\end{itemize}
In the above, \emph{<part of thing>} refers to either the
\emph{begin statement}, \emph{body} or \emph{end statement}
@@ -1002,8 +963,9 @@ latexindent.pl -m textwrap7.tex -l=textwrap12.yaml -o=+-mod12
\cref{lst:environments-mlb}; note that it contains \emph{global} settings
(immediately after the \texttt{environments} field) and that
\emph{per-name} settings are also allowed -- in the case of
- \cref{lst:environments-mlb}, settings for \texttt{equation*} have been
- specified. Note that all poly-switches are \emph{off} by default.
+ \cref{lst:environments-mlb}, settings for \texttt{equation*} have been specified
+ for demonstration. Note that all poly-switches are \emph{off} (set to 0) by
+ default.
\cmhlistingsfromfile[style=modifylinebreaksEnv]*{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,MLB-TCB]{\texttt{environments}}{lst:environments-mlb}
@@ -1070,7 +1032,7 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/env-mlb4.yaml}[MLB-TCB]{\texttt{env-mlb4.yaml}}{lst:env-mlb4}
\end{minipage}
- Upon running commands analogous to the above, we obtain \cref{lst:env-mlb-mod3,lst:env-mlb-mod4}.
+ Upon running commands analogous to the above, we obtain \cref{lst:env-mlb-mod3,lst:env-mlb-mod4}.
\begin{widepage}
\begin{minipage}{.56\linewidth}
@@ -1086,9 +1048,9 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
comment symbol has been added before adding the line break; in both cases, trailing
horizontal space has been stripped before doing so.
- Let's%%%%%%
- \announce{2017-08-21}{demonstration of blank line poly-switch (3)} now change each
- of the \texttt{1} values in \cref{lst:env-mlb1,lst:env-mlb2} so that they are
+ Let's%
+ \announce{2017-08-21}{demonstration of blank line poly-switch (3)} now change each of
+ the \texttt{1} values in \cref{lst:env-mlb1,lst:env-mlb2} so that they are
$3$ and save them into \texttt{env-mlb5.yaml} and
\texttt{env-mlb6.yaml} respectively (see \cref{lst:env-mlb5,lst:env-mlb6}).
@@ -1100,7 +1062,7 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/env-mlb6.yaml}[MLB-TCB]{\texttt{env-mlb6.yaml}}{lst:env-mlb6}
\end{minipage}
- Upon running commands analogous to the above, we obtain \cref{lst:env-mlb-mod5,lst:env-mlb-mod6}.
+ Upon running commands analogous to the above, we obtain \cref{lst:env-mlb-mod5,lst:env-mlb-mod6}.
\begin{widepage}
\begin{minipage}{.56\linewidth}
@@ -1115,6 +1077,46 @@ latexindent.pl -m env-mlb.tex -l env-mlb2.yaml
Note that line breaks have been added as in \cref{lst:env-mlb-mod1,lst:env-mlb-mod2}, but this time a
\emph{blank line} has been added after adding the line break.
+ Let's now change%
+ \announce*{2019-07-13}{demonstration of new blank line poly-switch} each of
+ the \texttt{1} values in \cref{lst:env-mlb5,lst:env-mlb6} so that they are
+ $4$ and save them into \texttt{env-beg4.yaml} and
+ \texttt{env-body4.yaml} respectively (see \cref{lst:env-beg4,lst:env-body4}).
+
+ \begin{minipage}{.45\textwidth}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/env-beg4.yaml}[MLB-TCB]{\texttt{env-beg4.yaml}}{lst:env-beg4}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{.45\textwidth}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/env-body4.yaml}[MLB-TCB]{\texttt{env-body4.yaml}}{lst:env-body4}
+ \end{minipage}
+
+ We will demonstrate this poly-switch value using the code in \cref{lst:env-mlb1-text}.
+
+ \cmhlistingsfromfile*{demonstrations/env-mlb1.tex}{\texttt{env-mlb1.tex}}{lst:env-mlb1-text}
+
+ Upon running the commands
+ \begin{commandshell}
+latexindent.pl -m env-mlb1.tex -l env-beg4.yaml
+latexindent.pl -m env-mlb.1tex -l env-body4.yaml
+\end{commandshell}
+
+ then we receive the respective outputs in \cref{lst:env-mlb1-beg4,lst:env-mlb1-body4}.
+
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
+ \cmhlistingsfromfile*{demonstrations/env-mlb1-beg4.tex}{\texttt{env-mlb1.tex} using \cref{lst:env-beg4}}{lst:env-mlb1-beg4}
+ \cmhlistingsfromfile*{demonstrations/env-mlb1-body4.tex}{\texttt{env-mlb1.tex} using \cref{lst:env-body4}}{lst:env-mlb1-body4}
+ \end{cmhtcbraster}
+
+ We note in particular that, by design, for this value of the poly-switches:
+ \begin{enumerate}
+ \item in \cref{lst:env-mlb1-beg4} a blank line has been inserted before the
+ \lstinline!\begin! statement, even though the \lstinline!\begin!
+ statement was already on its own line;
+ \item in \cref{lst:env-mlb1-body4} a blank line has been inserted before the beginning of the
+ \emph{body}, even though it already began on its own line.
+ \end{enumerate}
+
\subsubsection{Adding line breaks using EndStartsOnOwnLine and EndFinishesWithLineBreak}
Let's explore \texttt{EndStartsOnOwnLine} and \texttt{EndFinishesWithLineBreak} in
\cref{lst:env-mlb7,lst:env-mlb8}, and in particular, let's allow each of them in turn to take
@@ -1168,7 +1170,7 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/env-mlb10.yaml}[MLB-TCB]{\texttt{env-mlb10.yaml}}{lst:env-mlb10}
\end{minipage}
- Upon running commands analogous to the above, we obtain \cref{lst:env-mlb-mod9,lst:env-mlb-mod10}.
+ Upon running commands analogous to the above, we obtain \cref{lst:env-mlb-mod9,lst:env-mlb-mod10}.
\begin{widepage}
\begin{minipage}{.43\linewidth}
@@ -1184,7 +1186,7 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
comment symbol has been added before adding the line break; in both cases, trailing
horizontal space has been stripped before doing so.
- Let's%%%%%%
+ Let's%
\announce{2017-08-21}{demonstration of blank line poly-switch (3)} now change each of
the \texttt{1} values in \cref{lst:env-mlb7,lst:env-mlb8} so that they are
$3$ and save them into \texttt{env-mlb11.yaml} and
@@ -1198,7 +1200,7 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/env-mlb12.yaml}[MLB-TCB]{\texttt{env-mlb12.yaml}}{lst:env-mlb12}
\end{minipage}
- Upon running commands analogous to the above, we obtain \cref{lst:env-mlb-mod11,lst:env-mlb-mod12}.
+ Upon running commands analogous to the above, we obtain \cref{lst:env-mlb-mod11,lst:env-mlb-mod12}.
\begin{widepage}
\begin{minipage}{.42\linewidth}
@@ -1213,11 +1215,50 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
Note that line breaks have been added as in \cref{lst:env-mlb-mod7,lst:env-mlb-mod8}, and that a
\emph{blank line} has been added after the line break.
-\subsubsection{poly-switches only add line breaks when necessary}
+ Let's now change%
+ \announce*{2019-07-13}{demonstration of new blank line poly-switch} each of
+ the \texttt{1} values in \cref{lst:env-mlb11,lst:env-mlb12} so that they are
+ $4$ and save them into \texttt{env-end4.yaml} and
+ \texttt{env-end-f4.yaml} respectively (see \cref{lst:env-end4,lst:env-end-f4}).
+
+ \begin{minipage}{.45\textwidth}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/env-end4.yaml}[MLB-TCB]{\texttt{env-end4.yaml}}{lst:env-end4}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{.5\textwidth}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/env-end-f4.yaml}[MLB-TCB]{\texttt{env-end-f4.yaml}}{lst:env-end-f4}
+ \end{minipage}
+
+ We will demonstrate this poly-switch value using the code from
+ \vref{lst:env-mlb1-text}.
+
+ Upon running the commands
+ \begin{commandshell}
+latexindent.pl -m env-mlb1.tex -l env-end4.yaml
+latexindent.pl -m env-mlb.1tex -l env-end-f4.yaml
+\end{commandshell}
+
+ then we receive the respective outputs in \cref{lst:env-mlb1-end4,lst:env-mlb1-end-f4}.
+
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
+ \cmhlistingsfromfile*{demonstrations/env-mlb1-end4.tex}{\texttt{env-mlb1.tex} using \cref{lst:env-end4}}{lst:env-mlb1-end4}
+ \cmhlistingsfromfile*{demonstrations/env-mlb1-end-f4.tex}{\texttt{env-mlb1.tex} using \cref{lst:env-end-f4}}{lst:env-mlb1-end-f4}
+ \end{cmhtcbraster}
+
+ We note in particular that, by design, for this value of the poly-switches:
+ \begin{enumerate}
+ \item in \cref{lst:env-mlb1-end4} a blank line has been inserted before the
+ \lstinline!\end! statement, even though the \lstinline!\end!
+ statement was already on its own line;
+ \item in \cref{lst:env-mlb1-end-f4} a blank line has been inserted after the
+ \lstinline!\end! statement, even though it already began on its own line.
+ \end{enumerate}
+
+\subsubsection{poly-switches 1, 2, and 3 only add line breaks when necessary}
If you ask \texttt{latexindent.pl} to add a line break (possibly with a comment)
- using a poly-switch value of $1$ (or $2$),
- it will only do so if necessary. For example, if you process the file in
- \vref{lst:mlb2} using any of the YAML files presented so far in this section,
+ using a poly-switch value of $1$ (or $2$
+ or $3$), it will only do so if necessary. For example, if you
+ process the file in \vref{lst:mlb2} using poly-switch values of 1, 2, or 3,
it will be left unchanged.
\begin{minipage}{.45\linewidth}
@@ -1228,37 +1269,39 @@ latexindent.pl -m env-mlb.tex -l env-mlb8.yaml
\cmhlistingsfromfile{demonstrations/env-mlb3.tex}{\texttt{env-mlb3.tex}}{lst:mlb3}
\end{minipage}
- In contrast, the output from processing the file in \cref{lst:mlb3} will vary
- depending on the poly-switches used; in \cref{lst:env-mlb3-mod2} you'll see that the
- comment symbol after the \lstinline!\begin{myenv}! has been moved to the next line, as
- \texttt{BodyStartsOnOwnLine} is set to \texttt{1}. In
+ Setting the poly-switches to a value of $4$ instructs
+ \texttt{latexindent.pl} to add a line break even if the \emph{<part of thing>}
+ is already on its own line; see \cref{lst:env-mlb1-beg4,lst:env-mlb1-body4} and
+ \cref{lst:env-mlb1-end4,lst:env-mlb1-end-f4}.
+
+ In contrast, the output from processing the file in \cref{lst:mlb3} will
+ vary depending on the poly-switches used; in \cref{lst:env-mlb3-mod2} you'll see that
+ the comment symbol after the \lstinline!\begin{myenv}! has been moved to the next line,
+ as \texttt{BodyStartsOnOwnLine} is set to \texttt{1}. In
\cref{lst:env-mlb3-mod4} you'll see that the comment has been accounted for correctly
- because \texttt{BodyStartsOnOwnLine} has been set to \texttt{2}, and the
- comment symbol has \emph{not} been moved to its own line. You're
+ because \texttt{BodyStartsOnOwnLine} has been set to \texttt{2}, and
+ the comment symbol has \emph{not} been moved to its own line. You're
encouraged to experiment with \cref{lst:mlb3} and by setting the other
poly-switches considered so far to \texttt{2} in turn.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/env-mlb3-mod2.tex}{\texttt{env-mlb3.tex} using \vref{lst:env-mlb2}}{lst:env-mlb3-mod2}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\linewidth}
\cmhlistingsfromfile{demonstrations/env-mlb3-mod4.tex}{\texttt{env-mlb3.tex} using \vref{lst:env-mlb4}}{lst:env-mlb3-mod4}
- \end{minipage}
+ \end{cmhtcbraster}
The details of the discussion in this section have concerned \emph{global}
- poly-switches in the \texttt{environments} field; each switch can also be specified
- on a \emph{per-name} basis, which would take priority over the global values;
- with reference to \vref{lst:environments-mlb}, an example is shown for the
- \texttt{equation*} environment.
+ poly-switches in the \texttt{environments} field; each switch can also be
+ specified on a \emph{per-name} basis, which would take priority over the
+ global values; with reference to \vref{lst:environments-mlb}, an example is shown for
+ the \texttt{equation*} environment.
\subsubsection{Removing line breaks (poly-switches set to $-1$)}
- Setting poly-switches to $-1$ tells \texttt{latexindent.pl} to
- remove line breaks of the \emph{<part of the thing>}, if necessary. We will consider the
- example code given in \cref{lst:mlb4}, noting in particular the positions of
- the line break highlighters, $\BeginStartsOnOwnLine$, $\BodyStartsOnOwnLine$,
- $\EndStartsOnOwnLine$ and $\EndFinishesWithLineBreak$, together with the associated
- YAML files in \crefrange{lst:env-mlb13}{lst:env-mlb16}.
+ Setting poly-switches to $-1$ tells \texttt{latexindent.pl}
+ to remove line breaks of the \emph{<part of the thing>}, if necessary. We will consider
+ the example code given in \cref{lst:mlb4}, noting in particular the
+ positions of the line break highlighters, $\BeginStartsOnOwnLine$,
+ $\BodyStartsOnOwnLine$, $\EndStartsOnOwnLine$ and $\EndFinishesWithLineBreak$,
+ together with the associated YAML files in \crefrange{lst:env-mlb13}{lst:env-mlb16}.
\begin{minipage}{.45\linewidth}
\begin{cmhlistings}[style=tcblatex,escapeinside={(*@}{@*)}]{\texttt{env-mlb4.tex}}{lst:mlb4}
@@ -1333,10 +1376,10 @@ latexindent.pl -m env-mlb4.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,e
\texttt{removeTrailingWhitespace}, and that it has two (binary) switches to determine if
horizontal space should be removed \texttt{beforeProcessing} and
\texttt{afterProcessing}. The \texttt{beforeProcessing} is particularly relevant
- when considering the \texttt{-m} switch; let's consider the file shown in
- \cref{lst:mlb5}, which highlights trailing spaces.
+ when considering the \texttt{-m} switch; let's consider the file shown
+ in \cref{lst:mlb5}, which highlights trailing spaces.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}
\begin{cmhlistings}[style=tcblatex,showspaces=true,escapeinside={(*@}{@*)}]{\texttt{env-mlb5.tex}}{lst:mlb5}
before words (*@$\BeginStartsOnOwnLine$@*)
\begin{myenv} (*@$\BodyStartsOnOwnLine$@*)
@@ -1344,11 +1387,8 @@ body of myenv (*@$\EndStartsOnOwnLine$@*)
\end{myenv} (*@$\EndFinishesWithLineBreak$@*)
after words
\end{cmhlistings}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/removeTWS-before.yaml}[yaml-TCB]{\texttt{removeTWS-before.yaml}}{lst:removeTWS-before}
- \end{minipage}
+ \end{cmhtcbraster}
The output from the following commands
\begin{widepage}
@@ -1357,9 +1397,9 @@ latexindent.pl -m env-mlb5.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,e
latexindent.pl -m env-mlb5.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,env-mlb16.yaml,removeTWS-before.yaml
\end{commandshell}
\end{widepage}
- is shown, respectively, in \cref{lst:env-mlb5-modAll,lst:env-mlb5-modAll-remove-WS}; note that the trailing horizontal
- white space has been preserved (by default) in \cref{lst:env-mlb5-modAll}, while in
- \cref{lst:env-mlb5-modAll-remove-WS}, it has been removed using the switch specified in
+ is shown, respectively, in \cref{lst:env-mlb5-modAll,lst:env-mlb5-modAll-remove-WS}; note that the trailing
+ horizontal white space has been preserved (by default) in \cref{lst:env-mlb5-modAll},
+ while in \cref{lst:env-mlb5-modAll-remove-WS}, it has been removed using the switch specified in
\cref{lst:removeTWS-before}.
\begin{widepage}
@@ -1371,7 +1411,7 @@ latexindent.pl -m env-mlb5.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,e
\subsubsection{poly-switch line break removal and blank lines}
Now let's consider the file in \cref{lst:mlb6}, which contains blank lines.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}
\begin{cmhlistings}[style=tcblatex,escapeinside={(*@}{@*)}]{\texttt{env-mlb6.tex}}{lst:mlb6}
before words(*@$\BeginStartsOnOwnLine$@*)
@@ -1386,11 +1426,8 @@ body of myenv(*@$\EndStartsOnOwnLine$@*)
after words
\end{cmhlistings}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/UnpreserveBlankLines.yaml}[MLB-TCB]{\texttt{UnpreserveBlankLines.yaml}}{lst:UnpreserveBlankLines}
- \end{minipage}
+ \end{cmhtcbraster}
Upon running the following commands
\begin{widepage}
@@ -1400,22 +1437,23 @@ latexindent.pl -m env-mlb6.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,e
\end{commandshell}
\end{widepage}
we receive the respective outputs in \cref{lst:env-mlb6-modAll,lst:env-mlb6-modAll-un-Preserve-Blank-Lines}. In
- \cref{lst:env-mlb6-modAll} we see that the multiple blank lines have each been condensed
- into one blank line, but that blank lines have \emph{not} been removed
- by the poly-switches -- this is because, by default, \texttt{preserveBlankLines} is set
- to \texttt{1}. By contrast, in \cref{lst:env-mlb6-modAll-un-Preserve-Blank-Lines}, we have
- allowed the poly-switches to remove blank lines because, in \cref{lst:UnpreserveBlankLines},
- we have set \texttt{preserveBlankLines} to \texttt{0}.
-
- \begin{widepage}
- \begin{minipage}{.30\linewidth}
- \cmhlistingsfromfile{demonstrations/env-mlb6-modAll.tex}{\texttt{env-mlb6.tex} using \crefrange{lst:env-mlb4-mod13}{lst:env-mlb4-mod16}}{lst:env-mlb6-modAll}
- \end{minipage}
- \hfill
- \begin{minipage}{.65\linewidth}
- \cmhlistingsfromfile{demonstrations/env-mlb6-modAll-un-Preserve-Blank-Lines.tex}{\texttt{env-mlb6.tex} using \crefrange{lst:env-mlb4-mod13}{lst:env-mlb4-mod16} \emph{and} \cref{lst:UnpreserveBlankLines}}{lst:env-mlb6-modAll-un-Preserve-Blank-Lines}
- \end{minipage}
- \end{widepage}
+ \cref{lst:env-mlb6-modAll} we see that the multiple blank lines have each been
+ condensed into one blank line, but that blank lines have \emph{not}
+ been removed by the poly-switches -- this is because, by default,
+ \texttt{preserveBlankLines} is set to \texttt{1}. By contrast, in
+ \cref{lst:env-mlb6-modAll-un-Preserve-Blank-Lines}, we have allowed the poly-switches to remove blank lines
+ because, in \cref{lst:UnpreserveBlankLines}, we have set \texttt{preserveBlankLines} to
+ \texttt{0}.
+
+ \begin{cmhtcbraster}[ raster left skip=-3.5cm,
+ raster right skip=-2cm,
+ raster force size=false,
+ raster column 1/.style={add to width=-.2\textwidth},
+ raster column 2/.style={add to width=.2\textwidth},
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile{demonstrations/env-mlb6-modAll.tex}{\texttt{env-mlb6.tex} using \crefrange{lst:env-mlb4-mod13}{lst:env-mlb4-mod16}}{lst:env-mlb6-modAll}
+ \cmhlistingsfromfile{demonstrations/env-mlb6-modAll-un-Preserve-Blank-Lines.tex}{\texttt{env-mlb6.tex} using \crefrange{lst:env-mlb4-mod13}{lst:env-mlb4-mod16} \emph{and} \cref{lst:UnpreserveBlankLines}}{lst:env-mlb6-modAll-un-Preserve-Blank-Lines}
+ \end{cmhtcbraster}
We can explore this further using the blank-line poly-switch value of
$3$; let's use the file given in \cref{lst:env-mlb7-tex}.
@@ -1426,7 +1464,7 @@ latexindent.pl -m env-mlb6.tex -l env-mlb13.yaml,env-mlb14.yaml,env-mlb15.yaml,e
\begin{commandshell}
latexindent.pl -m env-mlb7.tex -l env-mlb12.yaml,env-mlb13.yaml
latexindent.pl -m env-mlb7.tex -l env-mlb13.yaml,env-mlb14.yaml,UnpreserveBlankLines.yaml
- \end{commandshell}
+\end{commandshell}
we receive the outputs given in \cref{lst:env-mlb7-preserve,lst:env-mlb7-no-preserve}.
\cmhlistingsfromfile{demonstrations/env-mlb7-preserve.tex}{\texttt{env-mlb7-preserve.tex}}{lst:env-mlb7-preserve}
@@ -1443,80 +1481,266 @@ latexindent.pl -m env-mlb7.tex -l env-mlb13.yaml,env-mlb14.yaml,UnpreserveBlankL
because of the settings in \cref{lst:UnpreserveBlankLines}.
\end{itemize}
+\subsection{Poly-switches for double back slash}\label{subsec:dbs}
+ With reference to \texttt{lookForAlignDelims} (see \vref{lst:aligndelims:basic})%
+ \announce*{2019-07-13}{poly-switch for double back slash} you can
+ specify poly-switches to dictate the line-break behaviour of double back slashes in
+ environments (\vref{lst:tabularafter:basic}), commands (\vref{lst:matrixafter}), or
+ special code blocks (\vref{lst:specialafter}). Note that for these poly-switches to
+ take effect, the name of the code block must necessarily be specified within
+ \texttt{lookForAlignDelims} (\vref{lst:aligndelims:basic}); we will demonstrate this in what follows.
+
+ Consider the code given in \cref{lst:dbs-demo}.
+ \begin{cmhlistings}*[style=tcblatex,escapeinside={(*@}{@*)}]{\texttt{tabular3.tex}}{lst:dbs-demo}
+\begin{tabular}{cc}
+ 1 & 2 (*@$\ElseStartsOnOwnLine$@*)\\(*@$\ElseFinishesWithLineBreak$@*) 3 & 4 (*@$\ElseStartsOnOwnLine$@*)\\(*@$\ElseFinishesWithLineBreak$@*)
+\end{tabular}
+\end{cmhlistings}
+ Referencing \cref{lst:dbs-demo}:
+ \begin{itemize}
+ \item \texttt{DBS} stands for \emph{double back slash};
+ \item line breaks ahead of the double back slash are annotated by $\ElseStartsOnOwnLine$,
+ and are controlled by \texttt{DBSStartsOnOwnLine};
+ \item line breaks after the double back slash are annotated by $\ElseFinishesWithLineBreak$, and
+ are controlled by \texttt{DBSFinishesWithLineBreak}.
+ \end{itemize}
+
+ Let's explore each of these in turn.
+
+\subsubsection{Double back slash starts on own line}
+ We explore \texttt{DBSStartsOnOwnLine} ($\ElseStartsOnOwnLine$ in \cref{lst:dbs-demo}); starting with the code in
+ \cref{lst:dbs-demo}, together with the YAML files given in
+ \cref{lst:DBS1} and \cref{lst:DBS2} and running the following
+ commands
+ \begin{commandshell}
+latexindent.pl -m tabular3.tex -l DBS1.yaml
+latexindent.pl -m tabular3.tex -l DBS2.yaml
+\end{commandshell}
+ then we receive the respective output given in \cref{lst:tabular3-DBS1} and
+ \cref{lst:tabular3-DBS2}.
+
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/tabular3-mod1.tex}{\texttt{tabular3.tex} using \cref{lst:DBS1}}{lst:tabular3-DBS1}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/DBS1.yaml}[MLB-TCB]{\texttt{DBS1.yaml}}{lst:DBS1}
+ \end{cmhtcbraster}
+
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/tabular3-mod2.tex}{\texttt{tabular3.tex} using \cref{lst:DBS2}}{lst:tabular3-DBS2}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/DBS2.yaml}[MLB-TCB]{\texttt{DBS2.yaml}}{lst:DBS2}
+ \end{cmhtcbraster}
+
+ We note that
+ \begin{itemize}
+ \item \cref{lst:DBS1} specifies \texttt{DBSStartsOnOwnLine} for
+ \emph{every} environment (that is within \texttt{lookForAlignDelims},
+ \vref{yaml:lookforaligndelims});
+ the double back slashes from \cref{lst:dbs-demo} have been moved to their own
+ line in \cref{lst:tabular3-DBS1};
+ \item \cref{lst:DBS2} specifies \texttt{DBSStartsOnOwnLine} on a
+ \emph{per-name} basis for \texttt{tabular} (that is within \texttt{lookForAlignDelims}, \vref{yaml:lookforaligndelims});
+ the double back slashes from \cref{lst:dbs-demo} have been moved to their own
+ line in \cref{lst:tabular3-DBS2}, having added comment symbols before moving them.
+ \end{itemize}
+
+\subsubsection{Double back slash finishes with line break}
+ Let's now explore \texttt{DBSFinishesWithLineBreak} ($\ElseFinishesWithLineBreak$ in \cref{lst:dbs-demo}); starting with the code in
+ \cref{lst:dbs-demo}, together with the YAML files given in
+ \cref{lst:DBS3} and \cref{lst:DBS4} and running the following
+ commands
+ \begin{commandshell}
+latexindent.pl -m tabular3.tex -l DBS3.yaml
+latexindent.pl -m tabular3.tex -l DBS4.yaml
+\end{commandshell}
+ then we receive the respective output given in \cref{lst:tabular3-DBS3} and
+ \cref{lst:tabular3-DBS4}.
+
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/tabular3-mod3.tex}{\texttt{tabular3.tex} using \cref{lst:DBS3}}{lst:tabular3-DBS3}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/DBS3.yaml}[MLB-TCB]{\texttt{DBS3.yaml}}{lst:DBS3}
+ \end{cmhtcbraster}
+
+ \begin{cmhtcbraster}[raster column skip=.01\linewidth]
+ \cmhlistingsfromfile*{demonstrations/tabular3-mod4.tex}{\texttt{tabular3.tex} using \cref{lst:DBS4}}{lst:tabular3-DBS4}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/DBS4.yaml}[MLB-TCB]{\texttt{DBS4.yaml}}{lst:DBS4}
+ \end{cmhtcbraster}
+
+ We note that
+ \begin{itemize}
+ \item \cref{lst:DBS3} specifies \texttt{DBSFinishesWithLineBreak} for
+ \emph{every} environment (that is within \texttt{lookForAlignDelims},
+ \vref{yaml:lookforaligndelims});
+ the code following the double back slashes from \cref{lst:dbs-demo} has been
+ moved to their own line in \cref{lst:tabular3-DBS3};
+ \item \cref{lst:DBS4} specifies \texttt{DBSFinishesWithLineBreak} on a
+ \emph{per-name} basis for \texttt{tabular} (that is within \texttt{lookForAlignDelims}, \vref{yaml:lookforaligndelims});
+ the first double back slashes from \cref{lst:dbs-demo} have moved code following
+ them to their own line in \cref{lst:tabular3-DBS4}, having added comment symbols
+ before moving them; the final double back slashes have \emph{not} added
+ a line break as they are at the end of the body within the code block.
+ \end{itemize}
+
+\subsubsection{Double back slash poly switches for specialBeginEnd}
+ Let's explore the double back slash poly-switches for code blocks within
+ \texttt{specialBeginEnd} code blocks (\vref{lst:specialBeginEnd}); we begin with
+ the code within \cref{lst:special4}.
+
+ \cmhlistingsfromfile*{demonstrations/special4.tex}{\texttt{special4.tex}}{lst:special4}
+
+ Upon using the YAML settings in \cref{lst:DBS5}, and running the command
+ \begin{commandshell}
+latexindent.pl -m special4.tex -l DBS5.yaml
+\end{commandshell}
+ then we receive the output given in \cref{lst:special4-DBS5}.
+
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=-.1\textwidth},
+ raster column skip=.06\linewidth]
+ \cmhlistingsfromfile*{demonstrations/special4-mod5.tex}{\texttt{special4.tex} using \cref{lst:DBS5}}{lst:special4-DBS5}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/DBS5.yaml}[MLB-TCB,width=0.6\textwidth]{\texttt{DBS5.yaml}}{lst:DBS5}
+ \end{cmhtcbraster}
+
+ There are a few things to note:
+ \begin{itemize}
+ \item in \cref{lst:DBS5} we have specified \texttt{cmhMath} within
+ \texttt{lookForAlignDelims}; without this, the double back slash poly-switches would be
+ ignored for this code block;
+ \item the \texttt{DBSFinishesWithLineBreak} poly-switch has controlled the line breaks following the
+ double back slashes;
+ \item the \texttt{SpecialEndStartsOnOwnLine} poly-switch has controlled the addition of a comment
+ symbol, followed by a line break, as it is set to a value of 2.
+ \end{itemize}
+
+\subsubsection{Double back slash poly switches for optional and mandatory arguments}
+ For clarity, we provide a demonstration of controlling the double back slash
+ poly-switches for optional and mandatory arguments. We begin with the code in
+ \cref{lst:mycommand2}.
+
+ \cmhlistingsfromfile*{demonstrations/mycommand2.tex}{\texttt{mycommand2.tex}}{lst:mycommand2}
+
+ Upon using the YAML settings in \cref{lst:DBS6,lst:DBS7}, and running the command
+ \begin{commandshell}
+latexindent.pl -m mycommand2.tex -l DBS6.yaml
+latexindent.pl -m mycommand2.tex -l DBS7.yaml
+\end{commandshell}
+ then we receive the output given in \cref{lst:mycommand2-DBS6,lst:mycommand2-DBS7}.
+
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=-.1\textwidth},
+ raster column skip=.03\linewidth]
+ \cmhlistingsfromfile*{demonstrations/mycommand2-mod6.tex}{\texttt{mycommand2.tex} using \cref{lst:DBS6}}{lst:mycommand2-DBS6}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/DBS6.yaml}[MLB-TCB,width=0.6\textwidth]{\texttt{DBS6.yaml}}{lst:DBS6}
+ \end{cmhtcbraster}
+
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=-.1\textwidth},
+ raster column skip=.03\linewidth]
+ \cmhlistingsfromfile*{demonstrations/mycommand2-mod7.tex}{\texttt{mycommand2.tex} using \cref{lst:DBS7}}{lst:mycommand2-DBS7}
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/DBS7.yaml}[MLB-TCB,width=0.6\textwidth]{\texttt{DBS7.yaml}}{lst:DBS7}
+ \end{cmhtcbraster}
+
+\subsubsection{Double back slash optional square brackets}
+ The pattern matching for the double back slash will also, optionally, allow trailing
+ square brackets that contain a measurement of vertical spacing, for example
+ \lstinline!\\[3pt]!.
+
+ For example, beginning with the code in \cref{lst:pmatrix3}
+
+ \cmhlistingsfromfile*{demonstrations/pmatrix3.tex}{\texttt{pmatrix3.tex}}{lst:pmatrix3}
+
+ and running the following command, using \cref{lst:DBS3},
+ \begin{commandshell}
+latexindent.pl -m pmatrix3.tex -l DBS3.yaml
+\end{commandshell}
+ then we receive the output given in \cref{lst:pmatrix3-DBS3}.
+
+ \cmhlistingsfromfile*{demonstrations/pmatrix3-mod3.tex}{\texttt{pmatrix3.tex} using \cref{lst:DBS3}}{lst:pmatrix3-DBS3}
+
+ You can customise the pattern for the double back slash by exploring the
+ \emph{fine tuning} field detailed in \vref{lst:fineTuning}.
+
\subsection{Poly-switches for other code blocks}
Rather than repeat the examples shown for the environment code blocks (in
\vref{sec:modifylinebreaks-environments}), we choose to detail the poly-switches for all other code
blocks in \cref{tab:poly-switch-mapping}; note that each and every one of these
poly-switches is \emph{off by default}, i.e, set to \texttt{0}.
- Note also that, by design, line breaks involving,
- \texttt{filecontents} and `comment-marked' code blocks
- (\vref{lst:alignmentmarkup}) can \emph{not} be modified using
- \texttt{latexindent.pl}.\announce*{2019-05-05}*{verbatim poly-switch} However, there are two poly-switches available for \texttt{verbatim}
- code blocks: environments (\vref{lst:verbatimEnvironments}), commands (\vref{lst:verbatimCommands}) and \texttt{specialBeginEnd} (\vref{lst:special-verb1-yaml}).
+ Note also that, by design, line breaks involving, \texttt{filecontents} and
+ `comment-marked' code blocks (\vref{lst:alignmentmarkup}) can
+ \emph{not} be modified using
+ \texttt{latexindent.pl}.%
+ \announce{2019-05-05}*{verbatim poly-switch} However, there are two poly-switches available for
+ \texttt{verbatim} code blocks: environments (\vref{lst:verbatimEnvironments}),
+ commands (\vref{lst:verbatimCommands}) and \texttt{specialBeginEnd} (\vref{lst:special-verb1-yaml}).
- \clearpage
+ \clearpage
\begin{longtable}{llll}
- \caption{Poly-switch mappings for all code-block types}\label{tab:poly-switch-mapping} \\
+ \caption{Poly-switch mappings for all code-block types}\label{tab:poly-switch-mapping} \\
\toprule
- Code block & Sample & \multicolumn{2}{c}{Poly-switch mapping} \\
+ Code block & Sample & \multicolumn{2}{c}{Poly-switch mapping} \\
\midrule
- environment & \verb!before words!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & BeginStartsOnOwnLine \\
- & \verb!\begin{myenv}!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & BodyStartsOnOwnLine \\
- & \verb!body of myenv!$\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & EndStartsOnOwnLine \\
- & \verb!\end{myenv}!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & EndFinishesWithLineBreak \\
- & \verb!after words! & & \\
+ environment & \verb!before words!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & BeginStartsOnOwnLine \\
+ & \verb!\begin{myenv}!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & BodyStartsOnOwnLine \\
+ & \verb!body of myenv!$\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & EndStartsOnOwnLine \\
+ & \verb!\end{myenv}!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & EndFinishesWithLineBreak \\
+ & \verb!after words! & & \\
\cmidrule{2-4}
- ifelsefi & \verb!before words!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & IfStartsOnOwnLine \\
- & \verb!\if...!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & BodyStartsOnOwnLine \\
- & \verb!body of if/or statement!$\OrStartsOnOwnLine$ & $\OrStartsOnOwnLine$ & OrStartsOnOwnLine %
- \announce{2018-04-27}{new ifElseFi code block polyswitches} \\
- & \verb!\or!$\OrFinishesWithLineBreak$ & $\OrFinishesWithLineBreak$ & OrFinishesWithLineBreak \\
- & \verb!body of if/or statement!$\ElseStartsOnOwnLine$ & $\ElseStartsOnOwnLine$ & ElseStartsOnOwnLine \\
- & \verb!\else!$\ElseFinishesWithLineBreak$ & $\ElseFinishesWithLineBreak$ & ElseFinishesWithLineBreak \\
- & \verb!body of else statement!$\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & FiStartsOnOwnLine \\
- & \verb!\fi!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & FiFinishesWithLineBreak \\
- & \verb!after words! & & \\
+ ifelsefi & \verb!before words!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & IfStartsOnOwnLine \\
+ & \verb!\if...!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & BodyStartsOnOwnLine \\
+ & \verb!body of if/or statement!$\OrStartsOnOwnLine$ & $\OrStartsOnOwnLine$ & OrStartsOnOwnLine %
+ \announce{2018-04-27}{new ifElseFi code block poly-switches} \\
+ & \verb!\or!$\OrFinishesWithLineBreak$ & $\OrFinishesWithLineBreak$ & OrFinishesWithLineBreak \\
+ & \verb!body of if/or statement!$\ElseStartsOnOwnLine$ & $\ElseStartsOnOwnLine$ & ElseStartsOnOwnLine \\
+ & \verb!\else!$\ElseFinishesWithLineBreak$ & $\ElseFinishesWithLineBreak$ & ElseFinishesWithLineBreak \\
+ & \verb!body of else statement!$\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & FiStartsOnOwnLine \\
+ & \verb!\fi!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & FiFinishesWithLineBreak \\
+ & \verb!after words! & & \\
\cmidrule{2-4}
- optionalArguments & \verb!...!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & LSqBStartsOnOwnLine\footnote{LSqB stands for Left Square Bracket} \\
- & \verb![!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & OptArgBodyStartsOnOwnLine \\
- & \verb!body of opt arg!$\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & RSqBStartsOnOwnLine \\
- & \verb!]!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & RSqBFinishesWithLineBreak \\
- & \verb!...! & & \\
+ optionalArguments & \verb!...!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & LSqBStartsOnOwnLine\footnote{LSqB stands for Left Square Bracket} \\
+ & \verb![!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & OptArgBodyStartsOnOwnLine \\
+ \announce*{2019-07-13}{new comma-related poly-switches} & \verb!value before comma!$\ElseStartsOnOwnLine$, & $\ElseStartsOnOwnLine$ & CommaStartsOnOwnLine \\
+ & $\ElseFinishesWithLineBreak$ & $\ElseFinishesWithLineBreak$ & CommaFinishesWithLineBreak \\
+ & \verb!end of body of opt arg!$\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & RSqBStartsOnOwnLine \\
+ & \verb!]!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & RSqBFinishesWithLineBreak \\
+ & \verb!...! & & \\
\cmidrule{2-4}
- mandatoryArguments & \verb!...!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & LCuBStartsOnOwnLine\footnote{LCuB stands for Left Curly Brace} \\
- & \verb!{!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & MandArgBodyStartsOnOwnLine \\
- & \verb!body of mand arg!$\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & RCuBStartsOnOwnLine \\
- & \verb!}!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & RCuBFinishesWithLineBreak \\
- & \verb!...! & & \\
+ mandatoryArguments & \verb!...!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & LCuBStartsOnOwnLine\footnote{LCuB stands for Left Curly Brace} \\
+ & \verb!{!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & MandArgBodyStartsOnOwnLine \\
+ \announce*{2019-07-13}{new comma-related poly-switches} & \verb!value before comma!$\ElseStartsOnOwnLine$, & $\ElseStartsOnOwnLine$ & CommaStartsOnOwnLine \\
+ & $\ElseFinishesWithLineBreak$ & $\ElseFinishesWithLineBreak$ & CommaFinishesWithLineBreak \\
+ & \verb!end of body of mand arg!$\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & RCuBStartsOnOwnLine \\
+ & \verb!}!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & RCuBFinishesWithLineBreak \\
+ & \verb!...! & & \\
\cmidrule{2-4}
- commands & \verb!before words!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & CommandStartsOnOwnLine \\
- & \verb!\mycommand!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & CommandNameFinishesWithLineBreak \\
- & $\langle$\itshape{arguments}$\rangle$ & & \\
+ commands & \verb!before words!$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & CommandStartsOnOwnLine \\
+ & \verb!\mycommand!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & CommandNameFinishesWithLineBreak \\
+ & $\langle$\itshape{arguments}$\rangle$ & & \\
\cmidrule{2-4}
- namedGroupingBraces Brackets & before words$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & NameStartsOnOwnLine \\
- & myname$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & NameFinishesWithLineBreak \\
- & $\langle$\itshape{braces/brackets}$\rangle$ & & \\
+ namedGroupingBraces Brackets & before words$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & NameStartsOnOwnLine \\
+ & myname$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & NameFinishesWithLineBreak \\
+ & $\langle$\itshape{braces/brackets}$\rangle$ & & \\
\cmidrule{2-4}
- keyEqualsValuesBraces\newline Brackets & before words$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & KeyStartsOnOwnLine \\
- & key$\EqualsStartsOnOwnLine$=$\BodyStartsOnOwnLine$ & $\EqualsStartsOnOwnLine$ & EqualsStartsOnOwnLine \\
- & $\langle$\itshape{braces/brackets}$\rangle$ & $\BodyStartsOnOwnLine$ & EqualsFinishesWithLineBreak \\
+ keyEqualsValuesBraces\newline Brackets & before words$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & KeyStartsOnOwnLine \\
+ & key$\EqualsStartsOnOwnLine$=$\BodyStartsOnOwnLine$ & $\EqualsStartsOnOwnLine$ & EqualsStartsOnOwnLine \\
+ & $\langle$\itshape{braces/brackets}$\rangle$ & $\BodyStartsOnOwnLine$ & EqualsFinishesWithLineBreak \\
\cmidrule{2-4}
- items & before words$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & ItemStartsOnOwnLine \\
- & \verb!\item!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & ItemFinishesWithLineBreak \\
- & \verb!...! & & \\
+ items & before words$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & ItemStartsOnOwnLine \\
+ & \verb!\item!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & ItemFinishesWithLineBreak \\
+ & \verb!...! & & \\
\cmidrule{2-4}
- specialBeginEnd & before words$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & SpecialBeginStartsOnOwnLine \\
- & \verb!\[!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & SpecialBodyStartsOnOwnLine \\
- & \verb!body of special/middle!$\ElseStartsOnOwnLine$ & $\ElseStartsOnOwnLine$ & SpecialMiddleStartsOnOwnLine %
- \announce{2018-04-27}{new special code block polyswitches} \\
- & \verb!\middle!$\ElseFinishesWithLineBreak$ & $\ElseFinishesWithLineBreak$ & SpecialMiddleFinishesWithLineBreak \\
- & body of special/middle $\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & SpecialEndStartsOnOwnLine \\
- & \verb!\]!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & SpecialEndFinishesWithLineBreak \\
- & after words & & \\
+ specialBeginEnd & before words$\BeginStartsOnOwnLine$ & $\BeginStartsOnOwnLine$ & SpecialBeginStartsOnOwnLine \\
+ & \verb!\[!$\BodyStartsOnOwnLine$ & $\BodyStartsOnOwnLine$ & SpecialBodyStartsOnOwnLine \\
+ & \verb!body of special/middle!$\ElseStartsOnOwnLine$ & $\ElseStartsOnOwnLine$ & SpecialMiddleStartsOnOwnLine %
+ \announce{2018-04-27}{new special code block poly-switches} \\
+ & \verb!\middle!$\ElseFinishesWithLineBreak$ & $\ElseFinishesWithLineBreak$ & SpecialMiddleFinishesWithLineBreak \\
+ & body of special/middle $\EndStartsOnOwnLine$ & $\EndStartsOnOwnLine$ & SpecialEndStartsOnOwnLine \\
+ & \verb!\]!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & SpecialEndFinishesWithLineBreak \\
+ & after words & & \\
\cmidrule{2-4}
- verbatim & before words$\BeginStartsOnOwnLine$\verb!\begin{verbatim}! & $\BeginStartsOnOwnLine$ & VerbatimBeginStartsOnOwnLine \\
- \announce*{2019-05-05}{verbatim poly-switches} & body of verbatim \verb!\end{verbatim}!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & VerbatimEndFinishesWithLineBreak \\
- & after words & & \\
+ verbatim & before words$\BeginStartsOnOwnLine$\verb!\begin{verbatim}! & $\BeginStartsOnOwnLine$ & VerbatimBeginStartsOnOwnLine \\
+ \announce{2019-05-05}{verbatim poly-switches} & body of verbatim \verb!\end{verbatim}!$\EndFinishesWithLineBreak$ & $\EndFinishesWithLineBreak$ & VerbatimEndFinishesWithLineBreak \\
+ & after words & & \\
\bottomrule
\end{longtable}
diff --git a/Master/texmf-dist/doc/support/latexindent/subsec-commands-and-their-options.tex b/Master/texmf-dist/doc/support/latexindent/subsec-commands-and-their-options.tex
index a6caa007060..a1184bf3a59 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsec-commands-and-their-options.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsec-commands-and-their-options.tex
@@ -7,7 +7,7 @@
\yamltitle{commandCodeBlocks}*{fields}
- The \texttt{commandCodeBlocks} field%%%%
+ The \texttt{commandCodeBlocks} field%
\announce{2018-04-27}*{commandCodeBlocks}
contains a few switches detailed in \cref{lst:commandCodeBlocks}.
@@ -43,16 +43,13 @@
Upon using the YAML settings in \cref{lst:noRoundParentheses}, and running the command
\begin{commandshell}
latexindent.pl pstricks1.tex -l noRoundParentheses.yaml
- \end{commandshell}
+\end{commandshell}
we obtain the output given in \cref{lst:pstricks1-nrp}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/pstricks1-nrp.tex}{\texttt{pstricks1.tex} using \cref{lst:noRoundParentheses}}{lst:pstricks1-nrp}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/noRoundParentheses.yaml}[yaml-TCB]{\texttt{noRoundParentheses.yaml}}{lst:noRoundParentheses}
- \end{minipage}
+ \end{cmhtcbraster}
Notice the difference between \cref{lst:pstricks1-default} and \cref{lst:pstricks1-nrp}; in
particular, in \cref{lst:pstricks1-nrp}, because round parentheses are
@@ -65,16 +62,13 @@ latexindent.pl pstricks1.tex -l noRoundParentheses.yaml
Let's explore this using the YAML given in \cref{lst:defFunction} and run the command
\begin{commandshell}
latexindent.pl pstricks1.tex -l defFunction.yaml
- \end{commandshell}
+\end{commandshell}
then the output is as in \cref{lst:pstricks1-indent-rules}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile[showspaces=true]{demonstrations/pstricks1-indent-rules.tex}{\texttt{pstricks1.tex} using \cref{lst:defFunction}}{lst:pstricks1-indent-rules}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/defFunction.yaml}[yaml-TCB]{\texttt{defFunction.yaml}}{lst:defFunction}
- \end{minipage}
+ \end{cmhtcbraster}
Notice in \cref{lst:pstricks1-indent-rules} that the \emph{body} of the
\lstinline!defFunction! command i.e, the subsequent lines containing arguments after the
@@ -121,13 +115,10 @@ latexindent.pl tikz-node1.tex -l draw.yaml
\end{commandshell}
we receive the output given in \cref{lst:tikz-node1-draw}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile[showspaces=true]{demonstrations/tikz-node1-draw.tex}{\texttt{tikz-node1.tex} using \cref{lst:draw}}{lst:tikz-node1-draw}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/draw.yaml}[yaml-TCB]{\texttt{draw.yaml}}{lst:draw}
- \end{minipage}
+ \end{cmhtcbraster}
Notice that each line after the \lstinline!\draw! command (its `body') in
\cref{lst:tikz-node1-draw} has been given the appropriate two-spaces worth of indentation
@@ -140,13 +131,10 @@ latexindent.pl tikz-node1.tex -l no-strings.yaml
\end{commandshell}
given in \cref{lst:tikz-node1-no-strings}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/tikz-node1-no-strings.tex}{\texttt{tikz-node1.tex} using \cref{lst:no-strings}}{lst:tikz-node1-no-strings}
- \end{minipage}
- \hfill
- \begin{minipage}{.49\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/no-strings.yaml}[yaml-TCB]{\texttt{no-strings.yaml}}{lst:no-strings}
- \end{minipage}
+ \end{cmhtcbraster}
In this case, \texttt{latexindent.pl} sees that:
\begin{itemize}
@@ -166,19 +154,15 @@ latexindent.pl tikz-node1.tex -l no-strings.yaml
the settings in either \cref{lst:amalgamate-demo} or\cref{lst:amalgamate-demo1} is equivalent to
using the settings in \cref{lst:amalgamate-demo2}.
- \begin{adjustwidth}{-3.5cm}{-1.5cm}
- \begin{minipage}{.32\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/amalgamate-demo.yaml}[yaml-TCB]{\texttt{amalgamate-demo.yaml}}{lst:amalgamate-demo}
- \end{minipage}%
- \hfill
- \begin{minipage}{.32\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/amalgamate-demo1.yaml}[yaml-TCB]{\texttt{amalgamate-demo1.yaml}}{lst:amalgamate-demo1}
- \end{minipage}%
- \hfill
- \begin{minipage}{.32\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/amalgamate-demo2.yaml}[yaml-TCB]{\texttt{amalgamate-demo2.yaml}}{lst:amalgamate-demo2}
- \end{minipage}
- \end{adjustwidth}
+ \begin{cmhtcbraster}[raster columns=3,
+ raster left skip=-3.5cm,
+ raster right skip=-2cm,
+ raster column skip=.03\linewidth]
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/amalgamate-demo.yaml}[yaml-TCB]{\texttt{amalgamate-demo.yaml}}{lst:amalgamate-demo}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/amalgamate-demo1.yaml}[yaml-TCB]{\texttt{amalgamate-demo1.yaml}}{lst:amalgamate-demo1}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/amalgamate-demo2.yaml}[yaml-TCB]{\texttt{amalgamate-demo2.yaml}}{lst:amalgamate-demo2}
+ \end{cmhtcbraster}
+
We specify \texttt{amalgamate} to be set to \texttt{0} and in which case
any settings loaded prior to those specified, including the default, will be overwritten.
For example, using the settings in \cref{lst:amalgamate-demo3} means that only the strings
@@ -192,13 +176,10 @@ latexindent.pl tikz-node1.tex -l no-strings.yaml
We may explore this feature further with the code in \cref{lst:for-each}, whose
default output is given in \cref{lst:for-each-default}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/for-each.tex}{\texttt{for-each.tex}}{lst:for-each}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/for-each-default.tex}{\texttt{for-each} default output}{lst:for-each-default}
- \end{minipage}
+ \end{cmhtcbraster}
Let's compare this with the output from using the YAML settings in
\cref{lst:foreach}, and running the command
@@ -207,13 +188,10 @@ latexindent.pl for-each.tex -l foreach.yaml
\end{commandshell}
given in \cref{lst:for-each-mod1}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/for-each-mod1.tex}{\texttt{for-each.tex} using \cref{lst:foreach}}{lst:for-each-mod1}
- \end{minipage}
- \hfill
- \begin{minipage}{.49\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/foreach.yaml}[yaml-TCB]{\texttt{foreach.yaml}}{lst:foreach}
- \end{minipage}
+ \end{cmhtcbraster}
You might like to compare the output given in \cref{lst:for-each-default} and
\cref{lst:for-each-mod1}. Note,in particular, in \cref{lst:for-each-default} that the
@@ -225,7 +203,7 @@ latexindent.pl for-each.tex -l foreach.yaml
\yamltitle{commandNameSpecial}*{fields}
There are some special command names%
- \announce{2018-04-27}*{commandNameSpecial} that do not fit within the names recognized by
+ \announce{2018-04-27}*{commandNameSpecial} that do not fit within the names recognised by
\texttt{latexindent.pl}, the first one of which is \lstinline!\@ifnextchar[!. From the
perspective of \texttt{latexindent.pl}, the whole of the text \lstinline!\@ifnextchar[! is
a command, because it is immediately followed by sets of mandatory arguments. However,
@@ -236,13 +214,10 @@ latexindent.pl for-each.tex -l foreach.yaml
For example, consider the sample file in \cref{lst:ifnextchar}, which has default
output in \cref{lst:ifnextchar-default}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/ifnextchar.tex}{\texttt{ifnextchar.tex}}{lst:ifnextchar}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/ifnextchar-default.tex}{\texttt{ifnextchar.tex} default output}{lst:ifnextchar-default}
- \end{minipage}
+ \end{cmhtcbraster}
Notice that in \cref{lst:ifnextchar-default} the \texttt{parbox} command has been able
to indent its body, because \texttt{latexindent.pl} has successfully found the command
@@ -256,13 +231,10 @@ latexindent.pl for-each.tex -l foreach.yaml
to indent its body successfully, because the \lstinline!\@ifnextchar[! command has not been
found.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/ifnextchar-off.tex}{\texttt{ifnextchar.tex} using \cref{lst:no-ifnextchar}}{lst:ifnextchar-off}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/no-ifnextchar.yaml}[yaml-TCB]{\texttt{no-ifnextchar.yaml}}{lst:no-ifnextchar}
- \end{minipage}
+ \end{cmhtcbraster}
The \texttt{amalgamate} field can be used for \texttt{commandNameSpecial}, just as for
\texttt{stringsAllowedBetweenArguments}. The same condition holds as stated previously, which we state
diff --git a/Master/texmf-dist/doc/support/latexindent/subsec-conflicting-poly-switches.tex b/Master/texmf-dist/doc/support/latexindent/subsec-conflicting-poly-switches.tex
index 2a5d0bcd340..25ebe3efaa2 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsec-conflicting-poly-switches.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsec-conflicting-poly-switches.tex
@@ -8,13 +8,10 @@ latexindent.pl -m -l=mycom-mlb4.yaml mycommand1.tex
\end{commandshell}
is given in \cref{lst:mycom-mlb4}.
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/mycommand1-mlb4.tex}{\texttt{mycommand1.tex} using \cref{lst:mycom-mlb4}}{lst:mycommand1-mlb4}
- \end{minipage}
- \hfill
- \begin{minipage}{.55\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb4.yaml}[MLB-TCB,width=\linewidth]{\texttt{mycom-mlb4.yaml}}{lst:mycom-mlb4}
- \end{minipage}
+ \end{cmhtcbraster}
Studying \cref{lst:mycom-mlb4}, we see that the two poly-switches are at opposition with
one another:
@@ -35,26 +32,20 @@ latexindent.pl -m -l=mycom-mlb5.yaml mycommand1.tex
\end{commandshell}
we obtain the output given in \cref{lst:mycommand1-mlb5}.
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/mycommand1-mlb5.tex}{\texttt{mycommand1.tex} using \cref{lst:mycom-mlb5}}{lst:mycommand1-mlb5}
- \end{minipage}
- \hfill
- \begin{minipage}{.55\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb5.yaml}[MLB-TCB,width=\linewidth]{\texttt{mycom-mlb5.yaml}}{lst:mycom-mlb5}
- \end{minipage}
+ \end{cmhtcbraster}
As previously, the most-recently-processed code block takes priority -- as before, the
second (i.e, \emph{last}) argument. Exploring this further, we consider the
YAML settings in \cref{lst:mycom-mlb6}, which give associated output in
\cref{lst:mycommand1-mlb6}.
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/mycommand1-mlb6.tex}{\texttt{mycommand1.tex} using \cref{lst:mycom-mlb6}}{lst:mycommand1-mlb6}
- \end{minipage}
- \hfill
- \begin{minipage}{.55\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb6.yaml}[MLB-TCB,width=\linewidth]{\texttt{mycom-mlb6.yaml}}{lst:mycom-mlb6}
- \end{minipage}
+ \end{cmhtcbraster}
Note that a \lstinline!%! \emph{has} been added to the trailing
first \lstinline!}!; this is because:
@@ -78,16 +69,13 @@ latexindent.pl -m -l=mycom-mlb5.yaml mycommand1.tex
command
\begin{commandshell}
latexindent.pl -m -l=nested-env-mlb1.yaml nested-env.tex
- \end{commandshell}
+\end{commandshell}
gives the output in \cref{lst:nested-env-mlb1}.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}[raster column skip=.05\linewidth]
\cmhlistingsfromfile{demonstrations/nested-env-mlb1.tex}{\texttt{nested-env.tex} using \cref{lst:nested-env-mlb1-yaml}}{lst:nested-env-mlb1}
- \end{minipage}
- \hfill
- \begin{minipage}{.55\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/nested-env-mlb1.yaml}[MLB-TCB,width=\linewidth]{\texttt{nested-env-mlb1.yaml}}{lst:nested-env-mlb1-yaml}
- \end{minipage}
+ \end{cmhtcbraster}
In \cref{lst:nested-env-mlb1}, let's first of all note that both environments have received
the appropriate (default) indentation; secondly, note that the poly-switch
@@ -146,16 +134,13 @@ latexindent.pl -m -l=nested-env-mlb1.yaml nested-env.tex
running the command
\begin{commandshell}
latexindent.pl -m -l=nested-env-mlb2.yaml nested-env.tex
- \end{commandshell}
+\end{commandshell}
we obtain the output given in \cref{lst:nested-env-mlb2-output}.
- \begin{minipage}{.45\linewidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/nested-env-mlb2.tex}{\texttt{nested-env.tex} using \cref{lst:nested-env-mlb2}}{lst:nested-env-mlb2-output}
- \end{minipage}
- \hfill
- \begin{minipage}{.55\linewidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/nested-env-mlb2.yaml}[MLB-TCB,width=\linewidth]{\texttt{nested-env-mlb2.yaml}}{lst:nested-env-mlb2}
- \end{minipage}
+ \end{cmhtcbraster}
During Phase 1:
\begin{itemize}
diff --git a/Master/texmf-dist/doc/support/latexindent/subsec-noAdditionalIndent-indentRules.tex b/Master/texmf-dist/doc/support/latexindent/subsec-noAdditionalIndent-indentRules.tex
index 8f0a737a353..53fd835392f 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsec-noAdditionalIndent-indentRules.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsec-noAdditionalIndent-indentRules.tex
@@ -3,7 +3,7 @@
\subsection{noAdditionalIndent and indentRules}\label{sec:noadd-indent-rules}
\texttt{latexindent.pl} operates on files by looking for code blocks, as detailed in
\vref{subsubsec:code-blocks};
- for each type of code block in \vref{tab:code-blocks} (which we will call a \emph{$\langle$thing$\rangle$} in what follows) it searches YAML fields for
+ for each type of code block in \vref{tab:code-blocks} (which we will call a \emph{$\langle$thing$\rangle$} in what follows) it searches YAML fields for
information in the following order:
\begin{enumerate}
\item \texttt{noAdditionalIndent} for the \emph{name} of the current \emph{$\langle$thing$\rangle$};
diff --git a/Master/texmf-dist/doc/support/latexindent/subsec-partnering-poly-switches.tex b/Master/texmf-dist/doc/support/latexindent/subsec-partnering-poly-switches.tex
index 05734f54bea..03337669efb 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsec-partnering-poly-switches.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsec-partnering-poly-switches.tex
@@ -19,33 +19,33 @@ latexindent.pl -m -l=mycom-mlb1.yaml mycommand1.tex
beginning brace \lstinline!{! has had its leading line break removed, but that
the \emph{first} brace has not.
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=-1cm},
+ ]
\cmhlistingsfromfile{demonstrations/mycommand1-mlb1.tex}{\texttt{mycommand1.tex} using \cref{lst:mycom-mlb1}}{lst:mycommand1-mlb1}
- \end{minipage}
- \hfill
- \begin{minipage}{.55\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb1.yaml}[MLB-TCB,width=\linewidth]{\texttt{mycom-mlb1.yaml}}{lst:mycom-mlb1}
- \end{minipage}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb1.yaml}[MLB-TCB,width=.6\textwidth]{\texttt{mycom-mlb1.yaml}}{lst:mycom-mlb1}
+ \end{cmhtcbraster}
Now let's change the YAML file so that it is as in \cref{lst:mycom-mlb2}; upon running
the analogous command to that given above, we obtain \cref{lst:mycommand1-mlb2}; both
beginning braces \lstinline!{! have had their leading line breaks removed.
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=-1cm},
+ ]
\cmhlistingsfromfile{demonstrations/mycommand1-mlb2.tex}{\texttt{mycommand1.tex} using \cref{lst:mycom-mlb2}}{lst:mycommand1-mlb2}
- \end{minipage}
- \hfill
- \begin{minipage}{.55\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb2.yaml}[MLB-TCB,width=\linewidth]{\texttt{mycom-mlb2.yaml}}{lst:mycom-mlb2}
- \end{minipage}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb2.yaml}[MLB-TCB,width=.6\textwidth]{\texttt{mycom-mlb2.yaml}}{lst:mycom-mlb2}
+ \end{cmhtcbraster}
Now let's change the YAML file so that it is as in \cref{lst:mycom-mlb3}; upon running
the analogous command to that given above, we obtain \cref{lst:mycommand1-mlb3}.
- \begin{minipage}{.4\linewidth}
+ \begin{cmhtcbraster}[
+ raster force size=false,
+ raster column 1/.style={add to width=-1cm},
+ ]
\cmhlistingsfromfile{demonstrations/mycommand1-mlb3.tex}{\texttt{mycommand1.tex} using \cref{lst:mycom-mlb3}}{lst:mycommand1-mlb3}
- \end{minipage}
- \hfill
- \begin{minipage}{.55\linewidth}
- \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb3.yaml}[MLB-TCB,width=\linewidth]{\texttt{mycom-mlb3.yaml}}{lst:mycom-mlb3}
- \end{minipage}
+ \cmhlistingsfromfile[style=yaml-LST]*{demonstrations/mycom-mlb3.yaml}[MLB-TCB,width=.6\textwidth]{\texttt{mycom-mlb3.yaml}}{lst:mycom-mlb3}
+ \end{cmhtcbraster}
diff --git a/Master/texmf-dist/doc/support/latexindent/subsubsec-commands-with-arguments.tex b/Master/texmf-dist/doc/support/latexindent/subsubsec-commands-with-arguments.tex
index 6e6b0074c1e..84bff810a1e 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsubsec-commands-with-arguments.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsubsec-commands-with-arguments.tex
@@ -5,13 +5,10 @@
\cref{lst:mycommand-default}. \footnote{The command code blocks
have quite a few subtleties, described in \vref{subsec:commands-string-between}.}
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/mycommand.tex}{\texttt{mycommand.tex}}{lst:mycommand}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile{demonstrations/mycommand-default.tex}{\texttt{mycommand.tex} default output}{lst:mycommand-default}
- \end{minipage}
+ \end{cmhtcbraster}
As in the environment-based case (see \vref{lst:myenv-noAdd1,lst:myenv-noAdd2}) we may specify
\texttt{noAdditionalIndent} either in `scalar' form, or in `field' form, as shown in
diff --git a/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex b/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex
index 9a137aa622f..a37e3eb0edb 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-and-their-arguments.tex
@@ -47,7 +47,11 @@ latexindent.pl myenv.tex -l myenv-noAdd4.yaml
\cmhlistingsfromfile{demonstrations/myenvironment-simple-noAdd-body4.tex}{\texttt{myenv.tex output} (using either \cref{lst:myenv-noAdd3} or \cref{lst:myenv-noAdd4})}{lst:myenv-output-4}
Let's now allow \texttt{myenv} to have some optional and mandatory arguments, as
- in \cref{lst:myenv-args}. \cmhlistingsfromfile{demonstrations/myenvironment-args.tex}{\texttt{myenv-args.tex}}{lst:myenv-args} Upon running
+ in \cref{lst:myenv-args}.
+
+ \cmhlistingsfromfile{demonstrations/myenvironment-args.tex}{\texttt{myenv-args.tex}}{lst:myenv-args}
+
+ Upon running
\begin{commandshell}
latexindent.pl -l=myenv-noAdd1.yaml myenv-args.tex
\end{commandshell}
@@ -92,13 +96,10 @@ latexindent.pl myenv.tex -l myenv-noAdd6.yaml
We may also specify indentation rules for environment code blocks using the
\texttt{indentRules} field; see, for example, \cref{lst:myenv-rules1,lst:myenv-rules2}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/myenv-rules1.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{myenv-rules1.yaml}}{lst:myenv-rules1}
- \end{minipage}
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/myenv-rules2.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{myenv-rules2.yaml}}{lst:myenv-rules2}
- \end{minipage}
+ \end{cmhtcbraster}
On applying either of the following commands,
\begin{commandshell}
@@ -206,8 +207,8 @@ latexindent.pl myenv-args.tex -l myenv-rules1.yaml,env-noAdditionalGlobal.yaml
we may run the commands
\begin{commandshell}
-latexindent.pl myenv-args.tex -local opt-args-no-add-glob.yaml
-latexindent.pl myenv-args.tex -local mand-args-no-add-glob.yaml
+latexindent.pl myenv-args.tex -local opt-args-no-add-glob.yaml
+latexindent.pl myenv-args.tex -local mand-args-no-add-glob.yaml
\end{commandshell}
which produces the respective outputs given in \cref{lst:myenv-args-no-add-opt,lst:myenv-args-no-add-mand}. Notice that in
\cref{lst:myenv-args-no-add-opt} the \emph{optional} argument has not received any
@@ -232,8 +233,8 @@ latexindent.pl myenv-args.tex -local mand-args-no-add-glob.yaml
\lstinline!" "!, and then run the following commands
\begin{commandshell}
-latexindent.pl myenv-args.tex -l env-indentRules.yaml
-latexindent.pl myenv-args.tex -l myenv-rules1.yaml,env-indentRules.yaml
+latexindent.pl myenv-args.tex -l env-indentRules.yaml
+latexindent.pl myenv-args.tex -l myenv-rules1.yaml,env-indentRules.yaml
\end{commandshell}
then the respective output is shown in \cref{lst:myenv-args-indent-rules-global1,lst:myenv-args-indent-rules-global2}. Note that in
\cref{lst:myenv-args-indent-rules-global1}, both the environment blocks have received a single-space
@@ -263,8 +264,8 @@ latexindent.pl myenv-args.tex -l myenv-rules1.yaml,env-indentRules.yaml
Upon running the following commands
\begin{commandshell}
-latexindent.pl myenv-args.tex -local opt-args-indent-rules-glob.yaml
-latexindent.pl myenv-args.tex -local mand-args-indent-rules-glob.yaml
+latexindent.pl myenv-args.tex -local opt-args-indent-rules-glob.yaml
+latexindent.pl myenv-args.tex -local mand-args-indent-rules-glob.yaml
\end{commandshell}
we obtain the respective outputs in \cref{lst:myenv-args-indent-rules-global3,lst:myenv-args-indent-rules-global4}. Note that the
\emph{optional} argument in \cref{lst:myenv-args-indent-rules-global3} has received two tabs worth
diff --git a/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-with-items.tex b/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-with-items.tex
index c5b71a71e38..4cc53e654f3 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-with-items.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsubsec-environments-with-items.tex
@@ -11,13 +11,10 @@
the indentation that your \texttt{item} receives using \texttt{indentRules},
as in \cref{lst:item-rules1}
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/item-noAdd1.yaml}[yaml-TCB]{\texttt{item-noAdd1.yaml}}{lst:item-noAdd1}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/item-rules1.yaml}[yaml-TCB]{\texttt{item-rules1.yaml}}{lst:item-rules1}
- \end{minipage}
+ \end{cmhtcbraster}
Upon running the following commands
\begin{commandshell}
diff --git a/Master/texmf-dist/doc/support/latexindent/subsubsec-headings.tex b/Master/texmf-dist/doc/support/latexindent/subsubsec-headings.tex
index a8a344e41c1..088ece973dd 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsubsec-headings.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsubsec-headings.tex
@@ -9,35 +9,29 @@
On using the YAML file in \cref{lst:headings3yaml} by running the command
\begin{commandshell}
latexindent.pl headings2.tex -l headings3.yaml
- \end{commandshell}
+\end{commandshell}
we obtain the output in \cref{lst:headings2-mod3}. Note that the argument of
\texttt{paragraph} has received (default) indentation, and that the body after the
heading statement has received (default) indentation.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/headings2-mod3.tex}{\texttt{headings2.tex} using \cref{lst:headings3yaml}}{lst:headings2-mod3}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/headings3.yaml}[yaml-TCB]{\texttt{headings3.yaml}}{lst:headings3yaml}
- \end{minipage}
+ \end{cmhtcbraster}
If we specify \texttt{noAdditionalIndent} as in \cref{lst:headings4yaml} and run the command
\begin{commandshell}
latexindent.pl headings2.tex -l headings4.yaml
- \end{commandshell}
+\end{commandshell}
then we receive the output in \cref{lst:headings2-mod4}. Note that the arguments
\emph{and} the body after the heading of \texttt{paragraph} has received
no additional indentation, because we have specified \texttt{noAdditionalIndent} in scalar
form.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/headings2-mod4.tex}{\texttt{headings2.tex} using \cref{lst:headings4yaml}}{lst:headings2-mod4}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/headings4.yaml}[yaml-TCB]{\texttt{headings4.yaml}}{lst:headings4yaml}
- \end{minipage}
+ \end{cmhtcbraster}
Similarly, if we specify \texttt{indentRules} as in \cref{lst:headings5yaml} and run
analogous commands to those above, we receive the output in \cref{lst:headings2-mod5}; note
@@ -45,37 +39,31 @@ latexindent.pl headings2.tex -l headings4.yaml
\emph{after the heading} of \texttt{paragraph} have \emph{all} received
three tabs worth of indentation.
- \begin{minipage}{.55\textwidth}
+ \begin{cmhtcbraster}[raster force size=false,
+ raster column 1/.style={add to width=1cm},
+ raster column 2/.style={add to width=-1cm},
+ ]
\cmhlistingsfromfile[showtabs=true]{demonstrations/headings2-mod5.tex}{\texttt{headings2.tex} using \cref{lst:headings5yaml}}{lst:headings2-mod5}
- \end{minipage}%
- \hfill
- \begin{minipage}{.42\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/headings5.yaml}[yaml-TCB]{\texttt{headings5.yaml}}{lst:headings5yaml}
- \end{minipage}
+ \end{cmhtcbraster}
We may, instead, specify \texttt{noAdditionalIndent} in `field' form, as in
\cref{lst:headings6yaml} which gives the output in \cref{lst:headings2-mod6}.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/headings2-mod6.tex}{\texttt{headings2.tex} using \cref{lst:headings6yaml}}{lst:headings2-mod6}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/headings6.yaml}[yaml-TCB]{\texttt{headings6.yaml}}{lst:headings6yaml}
- \end{minipage}
+ \end{cmhtcbraster}
Analogously, we may specify \texttt{indentRules} as in \cref{lst:headings7yaml} which
gives the output in \cref{lst:headings2-mod7}; note that mandatory argument text has only
received a single space of indentation, while the body after the heading has received
three tabs worth of indentation.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile[showtabs=true]{demonstrations/headings2-mod7.tex}{\texttt{headings2.tex} using \cref{lst:headings7yaml}}{lst:headings2-mod7}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/headings7.yaml}[yaml-TCB]{\texttt{headings7.yaml}}{lst:headings7yaml}
- \end{minipage}
+ \end{cmhtcbraster}
Finally, let's consider \texttt{noAdditionalIndentGlobal} and \texttt{indentRulesGlobal} shown in
\cref{lst:headings8yaml,lst:headings9yaml} respectively, with respective output in \cref{lst:headings2-mod8,lst:headings2-mod9}.
@@ -86,18 +74,12 @@ latexindent.pl headings2.tex -l headings4.yaml
(from the global rule specified in \cref{lst:headings9yaml}), and the remaining body after
\texttt{paragraph} has received just two spaces of indentation.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile{demonstrations/headings2-mod8.tex}{\texttt{headings2.tex} using \cref{lst:headings8yaml}}{lst:headings2-mod8}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/headings8.yaml}[yaml-TCB]{\texttt{headings8.yaml}}{lst:headings8yaml}
- \end{minipage}
+ \end{cmhtcbraster}
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}
\cmhlistingsfromfile[showspaces=true,showtabs=true]{demonstrations/headings2-mod9.tex}{\texttt{headings2.tex} using \cref{lst:headings9yaml}}{lst:headings2-mod9}
- \end{minipage}%
- \hfill
- \begin{minipage}{.45\textwidth}
\cmhlistingsfromfile[style=yaml-LST]*{demonstrations/headings9.yaml}[yaml-TCB]{\texttt{headings9.yaml}}{lst:headings9yaml}
- \end{minipage}
+ \end{cmhtcbraster}
diff --git a/Master/texmf-dist/doc/support/latexindent/subsubsec-ifelsefi.tex b/Master/texmf-dist/doc/support/latexindent/subsubsec-ifelsefi.tex
index 8be17304247..c7171bc7525 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsubsec-ifelsefi.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsubsec-ifelsefi.tex
@@ -60,7 +60,7 @@ latexindent.pl ifelsefi1.tex -l ifnum-indent-rules.yaml
latexindent.pl ifelsefi1.tex -local ifelsefi-noAdd-glob.yaml
latexindent.pl ifelsefi1.tex -l ifelsefi-indent-rules-global.yaml
\end{commandshell}
- we receive the outputs in \cref{lst:ifelsefi1-output-noAdd-glob,lst:ifelsefi1-output-indent-rules-global}; notice that in \cref{lst:ifelsefi1-output-noAdd-glob}
+ we receive the outputs in \cref{lst:ifelsefi1-output-noAdd-glob,lst:ifelsefi1-output-indent-rules-global}; notice that in \cref{lst:ifelsefi1-output-noAdd-glob}
neither of the \texttt{ifelsefi} code blocks have received indentation, while in
\cref{lst:ifelsefi1-output-indent-rules-global} both code blocks have received a single space of indentation.
@@ -73,15 +73,12 @@ latexindent.pl ifelsefi1.tex -l ifelsefi-indent-rules-global.yaml
\end{minipage}
We can further explore the treatment of \texttt{ifElseFi} code
- blocks%%%%
+ blocks%
\announce{2018-04-27}*{updates to ifElseFi code blocks} in \cref{lst:ifelsefi2},
and the associated default output given in \cref{lst:ifelsefi2-default}; note, in particular,
that the bodies of each of the `or statements' have been indented.
- \begin{minipage}{.45\textwidth}
+ \begin{cmhtcbraster}[raster column skip=.1\linewidth]
\cmhlistingsfromfile{demonstrations/ifelsefi2.tex}{\texttt{ifelsefi2.tex}}{lst:ifelsefi2}
- \end{minipage}%
- \hfill
- \begin{minipage}{.54\textwidth}
\cmhlistingsfromfile{demonstrations/ifelsefi2-default.tex}{\texttt{ifelsefi2.tex} default output}{lst:ifelsefi2-default}
- \end{minipage}
+ \end{cmhtcbraster}
diff --git a/Master/texmf-dist/doc/support/latexindent/subsubsec-no-add-remaining-code-blocks.tex b/Master/texmf-dist/doc/support/latexindent/subsubsec-no-add-remaining-code-blocks.tex
index e9f6c36ebb6..a91b4b0c98f 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsubsec-no-add-remaining-code-blocks.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsubsec-no-add-remaining-code-blocks.tex
@@ -9,12 +9,15 @@
\texttt{latexindent.pl} defines this type of code block by the following criteria:
\begin{itemize}
\item it must immediately follow either \lstinline!{! OR \lstinline![! OR
- \lstinline!,! with comments and blank lines allowed;
+ \lstinline!,! with comments and blank lines allowed.
\item then it has a name made up of the characters detailed in \vref{tab:code-blocks};
\item then an $=$ symbol;
\item then at least one set of curly braces or square brackets (comments and line breaks
allowed throughout).
\end{itemize}
+ See the \texttt{keyEqualsValuesBracesBrackets: follow} and \texttt{keyEqualsValuesBracesBrackets: name} fields of the fine tuning
+ section in \vref{lst:fineTuning}%
+ \announce*{2019-07-13}{fine tuning: keyEqualsValuesBracesBrackets}
An example is shown in \cref{lst:pgfkeysbefore}, with the default output given in
\cref{lst:pgfkeys1:default}.
@@ -43,11 +46,15 @@
\begin{itemize}
\item it must immediately follow either \emph{horizontal space} OR \emph{one or more line breaks} OR
\lstinline!{! OR \lstinline![! OR \lstinline!$! OR
- \lstinline!)! OR \lstinline!(!;
+ \lstinline!)! OR \lstinline!(!
\item the name may contain the characters detailed in \vref{tab:code-blocks};
\item then at least one set of curly braces or square brackets (comments and line breaks
allowed throughout).
\end{itemize}
+ See the \texttt{NamedGroupingBracesBrackets: follow} and \texttt{NamedGroupingBracesBrackets: name} fields of the fine tuning
+ section in \vref{lst:fineTuning}%
+ \announce*{2019-07-13}{fine tuning: namedGroupingBracesBrackets}
+
A simple example is given in \cref{lst:child1}, with default output in
\cref{lst:child1:default}.
@@ -81,6 +88,8 @@
\item then at least one set of curly braces or square brackets (comments and line breaks
allowed throughout).
\end{itemize}
+ See the \texttt{UnNamedGroupingBracesBrackets: follow} field of the fine tuning section in \vref{lst:fineTuning}%
+ \announce*{2019-07-13}{fine tuning: namedGroupingBracesBrackets}
An example is shown in \cref{lst:psforeach1} with default output give in
\cref{lst:psforeach:default}.
diff --git a/Master/texmf-dist/doc/support/latexindent/subsubsec-special.tex b/Master/texmf-dist/doc/support/latexindent/subsubsec-special.tex
index d93f8926e12..378c4d1413b 100644
--- a/Master/texmf-dist/doc/support/latexindent/subsubsec-special.tex
+++ b/Master/texmf-dist/doc/support/latexindent/subsubsec-special.tex
@@ -50,7 +50,7 @@ latexindent.pl special1.tex -l displayMath-indent-rules.yaml
latexindent.pl special1.tex -local special-noAdd-glob.yaml
latexindent.pl special1.tex -l special-indent-rules-global.yaml
\end{commandshell}
- we receive the outputs in \cref{lst:special1-output-noAdd-glob,lst:special1-output-indent-rules-global}; notice that in \cref{lst:special1-output-noAdd-glob}
+ we receive the outputs in \cref{lst:special1-output-noAdd-glob,lst:special1-output-indent-rules-global}; notice that in \cref{lst:special1-output-noAdd-glob}
neither of the \texttt{special} code blocks have received indentation, while in
\cref{lst:special1-output-indent-rules-global} both code blocks have received a single space of indentation.
diff --git a/Master/texmf-dist/doc/support/latexindent/title.tex b/Master/texmf-dist/doc/support/latexindent/title.tex
index 22959c788e4..4e0ae04a2b6 100644
--- a/Master/texmf-dist/doc/support/latexindent/title.tex
+++ b/Master/texmf-dist/doc/support/latexindent/title.tex
@@ -8,7 +8,7 @@
sharp corners,
enhanced,
overlay={\node[anchor=north east,outer sep=2pt] at ([xshift=3cm,yshift=4mm]frame.north east) {\includegraphics[width=3cm]{logo}}; }]
- \centering\ttfamily\bfseries latexindent.pl\\[1cm] Version 3.6
+ \centering\ttfamily\bfseries latexindent.pl\\[1cm] Version 3.7
\end{tcolorbox}
}
\author{Chris Hughes \thanks{and contributors!
@@ -21,6 +21,7 @@
\texttt{latexindent.pl} is a \texttt{Perl} script that indents \texttt{.tex} (and other) files according to an indentation scheme that the user can modify to suit their taste.
Environments, including those with alignment delimiters (such as \texttt{tabular}), and commands, including those that can split braces and brackets across lines, are \emph{usually} handled correctly by the script.
Options for \texttt{verbatim}-like environments and commands, together with indentation after headings (such as \lstinline!chapter!, \lstinline!section!, etc) are also available.
- The script also has the ability to modifiy line breaks, and add comment symbols.
- All user options are customisable via the switches in the YAML interface; you can find a quick start guide in \vref{sec:quickstart}.
+ The script also has the ability to modify line breaks, and to add comment symbols and blank lines; furthermore, it permits string or
+ regex-based substitutions.
+ All user options are customisable via the switches and the YAML interface; you can find a quick start guide in \vref{sec:quickstart}.
\end{adjustwidth}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm
index 7a4a9727c89..8b8e387d095 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm
@@ -27,7 +27,7 @@ use LatexIndent::GetYamlSettings qw/%masterSettings/;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::LogFile qw/$logger/;
our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
-our @EXPORT_OK = qw/align_at_ampersand find_aligned_block/;
+our @EXPORT_OK = qw/align_at_ampersand find_aligned_block double_back_slash_else/;
our $alignmentBlockCounter;
sub find_aligned_block{
@@ -258,7 +258,7 @@ sub align_at_ampersand{
}
# output some of the info so far to the log file
- $logger->trace("*Alignment at ampersand routine") if $is_t_switch_active;
+ $logger->trace("*Alignment at ampersand routine for ${$self}{name} (see lookForAlignDelims)") if $is_t_switch_active;
$logger->trace("Maximum column sizes of horizontally stripped formatted block (${$self}{name}): @maximumColumnWidth") if $is_t_switch_active;
$logger->trace("align at ampersand: ${$self}{lookForAlignDelims}") if $is_t_switch_active;
$logger->trace("align at \\\\: ${$self}{alignDoubleBackSlash}") if $is_t_switch_active;
@@ -505,4 +505,21 @@ sub align_at_ampersand{
${$self}{body} =~ s/\h*\R$//s if !${$self}{linebreaksAtEnd}{body};
}
+sub double_back_slash_else{
+ my $self = shift;
+
+ # check for existence of \\ statement, and associated line break information
+ $self->check_for_else_statement(
+ # else name regexp
+ elseNameRegExp=>qr/${${$masterSettings{fineTuning}}{modifyLineBreaks}}{doubleBackSlash}/,
+ # else statements name: note that DBS stands for 'Double Back Slash'
+ ElseStartsOnOwnLine=>"DBSStartsOnOwnLine",
+ # end statements
+ ElseFinishesWithLineBreak=>"DBSFinishesWithLineBreak",
+ # for the YAML settings storage
+ storageNameAppend=>"DBS",
+ # logfile information
+ logName=>"double-back-slash-block (for align at ampersand, see lookForAlignDelims)",
+ );
+}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm
index 7c84a0e65f3..96450fdaaf2 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Arguments.pm
@@ -24,7 +24,7 @@ use LatexIndent::LogFile qw/$logger/;
use Data::Dumper;
use Exporter qw/import/;
our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
-our @EXPORT_OK = qw/get_arguments_regexp find_opt_mand_arguments get_numbered_arg_regexp construct_arguments_regexp $optAndMandRegExp/;
+our @EXPORT_OK = qw/get_arguments_regexp find_opt_mand_arguments construct_arguments_regexp $optAndMandRegExp comma_else/;
our $ArgumentCounter;
our $optAndMandRegExp;
our $optAndMandRegExpWithLineBreaks;
@@ -222,13 +222,6 @@ sub create_unique_id{
return;
}
-sub get_numbered_arg_regexp{
-
- # for example #1 #2, etc
- my $numberedArgRegExp = qr/(?:#\d\h*;?,?\/?)+/;
- return $numberedArgRegExp;
-}
-
sub get_arguments_regexp{
my $self = shift;
@@ -240,11 +233,9 @@ sub get_arguments_regexp{
# some calls to this routine need to account for the linebreaks at the end, some do not
my $lineBreaksAtEnd = (defined ${input}{mode} and ${input}{mode} eq 'lineBreaksAtEnd')?'\R*':q();
- # for example #1 #2, etc
- my $numberedArgRegExp = $self->get_numbered_arg_regexp;
-
- # beamer special
- my $beamerRegExp = qr/\<.*?\>/;
+ # arguments Before, by default, includes beamer special and numbered arguments, for example #1 #2, etc
+ my $argumentsBefore = qr/${${$masterSettings{fineTuning}}{arguments}}{before}/;
+ my $argumentsBetween = qr/${${$masterSettings{fineTuning}}{arguments}}{between}/;
# commands are allowed strings between arguments, e.g node, decoration, etc, specified in stringsAllowedBetweenArguments
my $stringsBetweenArguments = q();
@@ -272,7 +263,7 @@ sub get_arguments_regexp{
return qr/
( # capture into $1
(?:
- (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$numberedArgRegExp|$beamerRegExp|_|\^|$stringsBetweenArguments)*
+ (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$argumentsBefore|$argumentsBetween|$stringsBetweenArguments)*
(?:
(?:
\h* # 0 or more spaces
@@ -332,7 +323,7 @@ sub get_arguments_regexp{
# NOT followed by
(?!
(?:
- (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$numberedArgRegExp|$beamerRegExp|$stringsBetweenArguments)* # 0 or more h-space, blanklines, trailing comments
+ (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$argumentsBefore|$stringsBetweenArguments)* # 0 or more h-space, blanklines, trailing comments
(?:
(?:(?<!\\)\[)
|
@@ -350,7 +341,7 @@ sub get_arguments_regexp{
return qr/
( # capture into $1
(?:
- (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$numberedArgRegExp|$beamerRegExp|_|\^|$stringsBetweenArguments)*
+ (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$argumentsBefore|$argumentsBetween|$stringsBetweenArguments)*
(?:
(?:
\h* # 0 or more spaces
@@ -383,7 +374,7 @@ sub get_arguments_regexp{
# NOT followed by
(?!
(?:
- (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$numberedArgRegExp|$beamerRegExp)* # 0 or more h-space, blanklines, trailing comments
+ (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$argumentsBefore)* # 0 or more h-space, blanklines, trailing comments
(?:
(?:(?<!\\)\[)
|
@@ -398,4 +389,21 @@ sub get_arguments_regexp{
}
}
+sub comma_else{
+ my $self = shift;
+
+ # check for existence of \\ statement, and associated line break information
+ $self->check_for_else_statement(
+ # else name regexp
+ elseNameRegExp=>qr/${${$masterSettings{fineTuning}}{modifyLineBreaks}}{comma}/,
+ # else statements name
+ ElseStartsOnOwnLine=>"CommaStartsOnOwnLine",
+ # end statements
+ ElseFinishesWithLineBreak=>"CommaFinishesWithLineBreak",
+ # for the YAML settings storage
+ storageNameAppend=>"comma",
+ # logfile information
+ logName=>"comma block, see CommaStartsOnOwnLine and CommaFinishesWithLineBreak",
+ );
+}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Command.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Command.pm
index 2ba44bd5a62..a877a6295c1 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Command.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Command.pm
@@ -64,11 +64,14 @@ sub construct_command_regexp{
# details to log file
$logger->trace("*The special command names regexp is: $commandNameSpecialRegExp (see commandNameSpecial)") if $is_t_switch_active;
+ # read from fine tuning
+ my $commandNameRegExp = qr/${${$masterSettings{fineTuning}}{commands}}{name}/;
+
# construct the command regexp
$commandRegExp = qr/
(\\|\\@|@)
(
- [+a-zA-Z@\*0-9_\:]+?|$commandNameSpecialRegExp # lowercase|uppercase letters, @, *, numbers
+ $commandNameRegExp|$commandNameSpecialRegExp # lowercase|uppercase letters, @, *, numbers
)
(\h*)
(\R*)?
@@ -203,4 +206,10 @@ sub align_at_ampersand{
return;
}
+sub double_back_slash_else{
+ # need an empty routine here for commands; see
+ # test-cases/alignment/command-align.tex for example
+ return;
+}
+
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
index b4441b99455..7f6694d0493 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
@@ -21,8 +21,9 @@ use utf8;
use open ':std', ':encoding(UTF-8)';
# gain access to subroutines in the following modules
-use LatexIndent::Switches qw/storeSwitches %switches $is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
+use LatexIndent::Switches qw/storeSwitches %switches $is_m_switch_active $is_t_switch_active $is_tt_switch_active $is_r_switch_active $is_rr_switch_active $is_rv_switch_active/;
use LatexIndent::LogFile qw/processSwitches $logger/;
+use LatexIndent::Replacement qw/make_replacements/;
use LatexIndent::GetYamlSettings qw/yaml_read_settings yaml_modify_line_breaks_settings yaml_get_indentation_settings_for_this_object yaml_poly_switch_get_every_or_custom_value yaml_get_indentation_information yaml_get_object_attribute_for_indentation_settings yaml_alignment_at_ampersand_settings yaml_get_textwrap_removeparagraphline_breaks %masterSettings yaml_get_columns/;
use LatexIndent::FileExtension qw/file_extension_check/;
use LatexIndent::BackUpFileProcedure qw/create_back_up_file/;
@@ -34,15 +35,15 @@ use LatexIndent::HorizontalWhiteSpace qw/remove_trailing_whitespace remove_leadi
use LatexIndent::Indent qw/indent wrap_up_statement determine_total_indentation indent_begin indent_body indent_end_statement final_indentation_check get_surrounding_indentation indent_children_recursively check_for_blank_lines_at_beginning put_blank_lines_back_in_at_beginning add_surrounding_indentation_to_begin_statement post_indentation_check/;
use LatexIndent::Tokens qw/token_check %tokens/;
use LatexIndent::HiddenChildren qw/find_surrounding_indentation_for_children update_family_tree get_family_tree check_for_hidden_children/;
-use LatexIndent::AlignmentAtAmpersand qw/align_at_ampersand find_aligned_block/;
+use LatexIndent::AlignmentAtAmpersand qw/align_at_ampersand find_aligned_block double_back_slash_else/;
use LatexIndent::DoubleBackSlash qw/dodge_double_backslash un_dodge_double_backslash/;
# code blocks
use LatexIndent::Verbatim qw/put_verbatim_back_in find_verbatim_environments find_noindent_block find_verbatim_commands find_verbatim_special verbatim_common_tasks/;
-use LatexIndent::Environment qw/find_environments $environmentBasicRegExp/;
+use LatexIndent::Environment qw/find_environments $environmentBasicRegExp construct_environments_regexp/;
use LatexIndent::IfElseFi qw/find_ifelsefi construct_ifelsefi_regexp $ifElseFiBasicRegExp/;
use LatexIndent::Else qw/check_for_else_statement/;
-use LatexIndent::Arguments qw/get_arguments_regexp find_opt_mand_arguments get_numbered_arg_regexp construct_arguments_regexp/;
+use LatexIndent::Arguments qw/get_arguments_regexp find_opt_mand_arguments construct_arguments_regexp comma_else/;
use LatexIndent::OptionalArgument qw/find_optional_arguments/;
use LatexIndent::MandatoryArgument qw/find_mandatory_arguments get_mand_arg_reg_exp/;
use LatexIndent::RoundBrackets qw/find_round_brackets/;
@@ -83,28 +84,34 @@ sub operate_on_file{
$self->create_back_up_file;
$self->token_check;
- $self->construct_regular_expressions;
- $self->find_noindent_block;
- $self->find_verbatim_commands;
- $self->find_aligned_block;
- $self->remove_trailing_comments;
- $self->find_verbatim_environments;
- $self->find_verbatim_special;
- $self->verbatim_modify_line_breaks if $is_m_switch_active;
- $self->text_wrap if ($is_m_switch_active and !${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}>1);
- $self->protect_blank_lines;
- $self->remove_trailing_whitespace(when=>"before");
- $self->find_file_contents_environments_and_preamble;
- $self->dodge_double_backslash;
- $self->remove_leading_space;
- $self->process_body_of_text;
- $self->remove_trailing_whitespace(when=>"after");
- $self->condense_blank_lines;
- $self->unprotect_blank_lines;
- $self->un_dodge_double_backslash;
- $self->put_verbatim_back_in (match=>"everything-except-commands");
- $self->put_trailing_comments_back_in;
- $self->put_verbatim_back_in (match=>"just-commands");
+ $self->make_replacements(when=>"before") if ($is_r_switch_active and !$is_rv_switch_active);
+ unless ($is_rr_switch_active){
+ $self->construct_regular_expressions;
+ $self->find_noindent_block;
+ $self->find_verbatim_commands;
+ $self->find_aligned_block;
+ $self->remove_trailing_comments;
+ $self->find_verbatim_environments;
+ $self->find_verbatim_special;
+ $self->verbatim_modify_line_breaks if $is_m_switch_active;
+ $self->make_replacements(when=>"before") if $is_rv_switch_active;
+ $self->text_wrap if ($is_m_switch_active and !${$masterSettings{modifyLineBreaks}{textWrapOptions}}{perCodeBlockBasis} and ${$masterSettings{modifyLineBreaks}{textWrapOptions}}{columns}>1);
+ $self->protect_blank_lines;
+ $self->remove_trailing_whitespace(when=>"before");
+ $self->find_file_contents_environments_and_preamble;
+ $self->dodge_double_backslash;
+ $self->remove_leading_space;
+ $self->process_body_of_text;
+ $self->remove_trailing_whitespace(when=>"after");
+ $self->condense_blank_lines;
+ $self->unprotect_blank_lines;
+ $self->un_dodge_double_backslash;
+ $self->make_replacements(when=>"after") if $is_rv_switch_active;
+ $self->put_verbatim_back_in (match=>"everything-except-commands");
+ $self->put_trailing_comments_back_in;
+ $self->put_verbatim_back_in (match=>"just-commands");
+ $self->make_replacements(when=>"after") if ($is_r_switch_active and !$is_rv_switch_active);
+ }
$self->output_indented_text;
return
}
@@ -112,6 +119,7 @@ sub operate_on_file{
sub construct_regular_expressions{
my $self = shift;
$self->construct_trailing_comment_regexp;
+ $self->construct_environments_regexp;
$self->construct_ifelsefi_regexp;
$self->construct_list_of_items;
$self->construct_special_begin;
@@ -335,7 +343,7 @@ sub tasks_common_to_each_object{
$self->adjust_replacement_text_line_breaks_at_end;
# modify line breaks on body and end statements
- $self->modify_line_breaks_body if $is_m_switch_active;
+ $self->modify_line_breaks_body if ($is_m_switch_active and defined ${$self}{BodyStartsOnOwnLine});
# modify line breaks end statements
$self->modify_line_breaks_end if $is_m_switch_active;
@@ -343,6 +351,8 @@ sub tasks_common_to_each_object{
# check the body for current children
$self->check_for_hidden_children if ${$self}{body} =~ m/$tokens{beginOfToken}/;
+ # double back slash poly-switch check
+ $self->double_back_slash_else if ($is_m_switch_active and ${$self}{lookForAlignDelims});
return;
}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Else.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Else.pm
index 10b1cc4d41b..5a367c784fc 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Else.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Else.pm
@@ -55,27 +55,32 @@ sub check_for_else_statement{
while(${$self}{body} =~ m/$elseRegExp(\h*)($trailingCommentRegExp)?/){
${$self}{body} =~ s/$elseRegExp(\h*)($trailingCommentRegExp)?
/
- # create a new IfElseFi object
+ # create a new Else object
my $else = LatexIndent::Else->new(begin=>$1,
- name=>${$self}{name},
- storageNameAppend=>$input{storageNameAppend},
- body=>$3,
- end=>q(),
- linebreaksAtEnd=>{
- begin=>$2?1:0,
- body=>0,
- end=>0,
- },
- aliases=>{
- # begin statements
- BeginStartsOnOwnLine=>$input{ElseStartsOnOwnLine},
- # end statements
- BodyStartsOnOwnLine=>$input{ElseFinishesWithLineBreak},
- },
- modifyLineBreaksYamlName=>${$self}{modifyLineBreaksYamlName},
- endImmediatelyFollowedByComment=>0,
- horizontalTrailingSpace=>q(),
- );
+ name=>${$self}{name},
+ storageNameAppend=>$input{storageNameAppend},
+ body=>$3,
+ end=>q(),
+ linebreaksAtEnd=>{
+ begin=>$2?1:0,
+ body=>0,
+ end=>0,
+ },
+ aliases=>{
+ # begin statements
+ BeginStartsOnOwnLine=>$input{ElseStartsOnOwnLine},
+ # end statements
+ BodyStartsOnOwnLine=>$input{ElseFinishesWithLineBreak},
+ },
+ modifyLineBreaksYamlName=>${$self}{modifyLineBreaksYamlName},
+ endImmediatelyFollowedByComment=>0,
+ horizontalTrailingSpace=>q(),
+ # mandatory and optional arguments have a parent, which we need
+ # to detail for double back slash poly-switches
+ # (see test-cases alignment command-align.tex, for example)
+ parent=>(${$self}{parent}?${$self}{parent}:"none"),
+ );
+
# log file output
$logger->trace("*$input{logName} found: ${$self}{name}")if $is_t_switch_active;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm
index 2c74f47554e..401cbecbee2 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm
@@ -28,35 +28,41 @@ use LatexIndent::Special qw/$specialBeginAndBracesBracketsBasicRegExp/;
use Data::Dumper;
use Exporter qw/import/;
our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
-our @EXPORT_OK = qw/find_environments $environmentBasicRegExp/;
+our @EXPORT_OK = qw/find_environments $environmentBasicRegExp construct_environments_regexp/;
our $environmentCounter;
our $environmentBasicRegExp = qr/\\begin\{/;
+our $environmentRegExp;
# store the regular expresssion for matching and replacing the \begin{}...\end{} statements
-our $environmentRegExp = qr/
- (
- \\begin\{
- (
- [a-zA-Z@\*0-9_\\]+ # lowercase|uppercase letters, @, *, numbers
- ) # environment name captured into $2
- \} # \begin{<something>} statement
- \h* # horizontal space
- (\R*)? # possible line breaks (into $3)
- ) # begin statement captured into $1
- (
- (?: # cluster-only (), don't capture
- (?! # don't include \begin in the body
- (?:\\begin) # cluster-only (), don't capture
- ). # any character, but not \\begin
- )*? # non-greedy
- (\R*)? # possible line breaks (into $5)
- ) # environment body captured into $4
- (
- \\end\{\2\} # \end{<something>} statement
- ) # captured into $6
- (\h*)? # possibly followed by horizontal space
- (\R)? # possibly followed by a line break
- /sx;
+sub construct_environments_regexp{
+
+ # read from fine tuning
+ my $environmentNameRegExp = qr/${${$masterSettings{fineTuning}}{environments}}{name}/;
+ $environmentRegExp = qr/
+ (
+ \\begin\{
+ (
+ $environmentNameRegExp # lowercase|uppercase letters, @, *, numbers
+ ) # environment name captured into $2
+ \} # \begin{<something>} statement
+ \h* # horizontal space
+ (\R*)? # possible line breaks (into $3)
+ ) # begin statement captured into $1
+ (
+ (?: # cluster-only (), don't capture
+ (?! # don't include \begin in the body
+ (?:\\begin) # cluster-only (), don't capture
+ ). # any character, but not \\begin
+ )*? # non-greedy
+ (\R*)? # possible line breaks (into $5)
+ ) # environment body captured into $4
+ (
+ \\end\{\2\} # \end{<something>} statement
+ ) # captured into $6
+ (\h*)? # possibly followed by horizontal space
+ (\R)? # possibly followed by a line break
+ /sx;
+}
sub find_environments{
my $self = shift;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm
index 93f8016f030..716598de777 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/FileExtension.pm
@@ -35,28 +35,23 @@ sub file_extension_check{
# grab the filename
my $fileName = ${$self}{fileName};
+ # see if an extension exists for the fileName
+ my ($name,$dir,$ext) = fileparse($fileName,qr/\..[^.]*$/);
+
# grab the file extension preferences
my %fileExtensionPreference= %{$masterSettings{fileExtensionPreference}};
# sort the file extensions by preference
my @fileExtensions = sort { $fileExtensionPreference{$a} <=> $fileExtensionPreference{$b} } keys(%fileExtensionPreference);
- # get the base file name, allowing for different extensions (possibly no extension)
- my ($name, $dir, $ext) = fileparse($fileName, @fileExtensions);
+ # store the base name
${$self}{baseName} = $name;
- # check to make sure given file type is supported
- if( -e $fileName and !$ext ){
- my $message = "The file $fileName exists , but the extension does not correspond to any given in fileExtensionPreference; consinder updating fileExtensionPreference.";
- $logger->fatal("*$message");
- die($message);
- }
-
# if no extension, search according to fileExtensionPreference
if ($fileName ne "-"){
if (!$ext) {
$logger->info("*File extension work:");
- $logger->info("latexindent called to act upon $fileName with a file extension;\nsearching for file with an extension in the following order (see fileExtensionPreference):");
+ $logger->info("latexindent called to act upon $fileName without a file extension;\nsearching for file with an extension in the following order (see fileExtensionPreference):");
$logger->info(join("\n",@fileExtensions));
my $fileFound = 0;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
index 97cb36df823..3029043f23f 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm
@@ -256,6 +256,23 @@ sub yaml_read_settings{
}
}
}
+ } elsif (ref($firstLevelValue) eq "ARRAY") {
+ # update amalgamate in master settings
+ if(ref(${$firstLevelValue}[0]) eq "HASH" and defined ${$firstLevelValue}[0]{amalgamate}){
+ ${$masterSettings{$firstLevelKey}[0]}{amalgamate} = ${$firstLevelValue}[0]{amalgamate};
+ shift @{$firstLevelValue} if ${$masterSettings{$firstLevelKey}[0]}{amalgamate};
+ }
+
+ # if amalgamate is set to 1, then append
+ if(${$masterSettings{$firstLevelKey}[0]}{amalgamate}){
+ # loop through the other settings
+ foreach (@{$firstLevelValue}){
+ push (@{$masterSettings{$firstLevelKey}},$_);
+ }
+ } else {
+ # otherwise overwrite
+ $masterSettings{$firstLevelKey} = $firstLevelValue;
+ }
} else {
$masterSettings{$firstLevelKey} = $firstLevelValue;
}
@@ -375,7 +392,7 @@ sub yaml_read_settings{
# loop through each of the settings specified in the -y switch
foreach(@yamlSettings){
# split each value at semi-colon
- my (@keysValues) = split(/(?<!\\):/,$_);
+ my (@keysValues) = split(/(?<!(?:\\|\[)):(?!\])/,$_);
# $value will always be the last element
my $value = $keysValues[-1];
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm
index 29a0065bfe6..056b36d8c3e 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm
@@ -17,6 +17,7 @@ package LatexIndent::IfElseFi;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
+use LatexIndent::GetYamlSettings qw/%masterSettings/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
@@ -33,10 +34,11 @@ our $ifElseFiBasicRegExp = qr/\\if/;
# note: we search for \else separately in an attempt to keep this regexp a little more managable
sub construct_ifelsefi_regexp{
+ my $ifElseFiNameRegExp = qr/${${$masterSettings{fineTuning}}{ifElseFi}}{name}/;
$ifElseFiRegExp = qr/
(
\\
- (@?if[a-zA-Z@]*?)
+ ($ifElseFiNameRegExp)
\h*
(\R*)
) # begin statement, e.g \ifnum, \ifodd
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm
index fce49e2c660..eb36db21082 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Indent.pm
@@ -325,40 +325,57 @@ sub indent_children_recursively{
if(defined ${$child}{BeginStartsOnOwnLine}){
my $BeginStringLogFile = ${$child}{aliases}{BeginStartsOnOwnLine}||"BeginStartsOnOwnLine";
- # if the child ID is not the first character and BeginStartsOnOwnLine>=1
- # then we will need to add a line break (==1), a comment (==2) or another blank line (==3)
- if(${$child}{BeginStartsOnOwnLine}>=1 and !$IDFirstNonWhiteSpaceCharacter){
- # by default, assume that no trailing comment token is needed
- my $trailingCharacterToken = q();
- if(${$child}{BeginStartsOnOwnLine}==2){
- $logger->trace("Removing space immediately before ${$child}{id}, in preparation for adding % ($BeginStringLogFile == 2)") if $is_t_switch_active;
- ${$self}{body} =~ s/\h*${$child}{idRegExp}/${$child}{id}/s;
- $logger->trace("Adding a % at the end of the line that ${$child}{begin} is on, then a linebreak ($BeginStringLogFile == 2)") if $is_t_switch_active;
- $trailingCharacterToken = "%".$self->add_comment_symbol;
- } elsif (${$child}{BeginStartsOnOwnLine}==3){
- $logger->trace("Adding a blank line at the end of the line that ${$child}{begin} is on, then a linebreak ($BeginStringLogFile == 3)") if $is_t_switch_active;
- $trailingCharacterToken = "\n".(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
- } else {
- $logger->trace("Adding a linebreak at the beginning of ${$child}{begin} (see $BeginStringLogFile)") if $is_t_switch_active;
+ #
+ # Blank line poly-switch notes (==4)
+ #
+ # when BeginStartsOnOwnLine=4 we adopt the following approach:
+ # temporarily change BeginStartsOnOwnLine to -1, make adjustments
+ # temporarily change BeginStartsOnOwnLine to 3, make adjustments
+ #
+ # we use an array, @polySwitchValues to facilitate this
+ my @polySwitchValues = (${$child}{BeginStartsOnOwnLine}==4)?(-1,3):(${$child}{BeginStartsOnOwnLine});
+
+ foreach(@polySwitchValues){
+ # if BeginStartsOnOwnLine is 4, then we hack
+ # $IDFirstNonWhiteSpaceCharacter
+ # to be 0 on the second time through (poly-switch set to 3)
+ $IDFirstNonWhiteSpaceCharacter = 0 if (${$child}{BeginStartsOnOwnLine}==4 and $_==3);
+
+ # if the child ID is not the first character and BeginStartsOnOwnLine>=1
+ # then we will need to add a line break (==1), a comment (==2) or another blank line (==3)
+ if($_>=1 and !$IDFirstNonWhiteSpaceCharacter){
+ # by default, assume that no trailing comment token is needed
+ my $trailingCharacterToken = q();
+ if($_==2){
+ $logger->trace("Removing space immediately before ${$child}{id}, in preparation for adding % ($BeginStringLogFile == 2)") if $is_t_switch_active;
+ ${$self}{body} =~ s/\h*${$child}{idRegExp}/${$child}{id}/s;
+ $logger->trace("Adding a % at the end of the line that ${$child}{begin} is on, then a linebreak ($BeginStringLogFile == 2)") if $is_t_switch_active;
+ $trailingCharacterToken = "%".$self->add_comment_symbol;
+ } elsif ($_==3){
+ $logger->trace("Adding a blank line at the end of the line that ${$child}{begin} is on, then a linebreak ($BeginStringLogFile == 3)") if $is_t_switch_active;
+ $trailingCharacterToken = "\n".(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
+ } else {
+ $logger->trace("Adding a linebreak at the beginning of ${$child}{begin} (see $BeginStringLogFile)") if $is_t_switch_active;
+ }
+
+ # the trailing comment/linebreak magic
+ ${$child}{begin} = "$trailingCharacterToken\n".${$child}{begin};
+ $child->add_surrounding_indentation_to_begin_statement;
+
+ # remove surrounding indentation ahead of %
+ ${$child}{begin} =~ s/^(\h*)%/%/ if($_==2);
+ } elsif ($_==-1 and $IDFirstNonWhiteSpaceCharacter){
+ # finally, if BeginStartsOnOwnLine == -1 then we might need to *remove* a blank line(s)
+ # important to check we don't move the begin statement next to a blank-line-token
+ my $blankLineToken = $tokens{blanklines};
+ if(${$self}{body} !~ m/$blankLineToken\R*\h*${$child}{idRegExp}/s){
+ $logger->trace("Removing linebreak before ${$child}{begin} (see $BeginStringLogFile in ${$child}{modifyLineBreaksYamlName} YAML)") if $is_t_switch_active;
+ ${$self}{body} =~ s/(\h*)(?:\R*|\h*)+${$child}{idRegExp}/$1${$child}{id}/s;
+ } else {
+ $logger->trace("Not removing linebreak ahead of ${$child}{begin}, as blank-line-token present (see preserveBlankLines)") if $is_t_switch_active;
+ }
}
-
- # the trailing comment/linebreak magic
- ${$child}{begin} = "$trailingCharacterToken\n".${$child}{begin};
- $child->add_surrounding_indentation_to_begin_statement;
-
- # remove surrounding indentation ahead of %
- ${$child}{begin} =~ s/^(\h*)%/%/ if(${$child}{BeginStartsOnOwnLine}==2);
- } elsif (${$child}{BeginStartsOnOwnLine}==-1 and $IDFirstNonWhiteSpaceCharacter){
- # finally, if BeginStartsOnOwnLine == -1 then we might need to *remove* a blank line(s)
- # important to check we don't move the begin statement next to a blank-line-token
- my $blankLineToken = $tokens{blanklines};
- if(${$self}{body} !~ m/$blankLineToken\R*\h*${$child}{idRegExp}/s){
- $logger->trace("Removing linebreak before ${$child}{begin} (see $BeginStringLogFile in ${$child}{modifyLineBreaksYamlName} YAML)") if $is_t_switch_active;
- ${$self}{body} =~ s/(\h*)(?:\R*|\h*)+${$child}{idRegExp}/$1${$child}{id}/s;
- } else {
- $logger->trace("Not removing linebreak ahead of ${$child}{begin}, as blank-line-token present (see preserveBlankLines)") if $is_t_switch_active;
- }
- }
+ }
}
$logger->trace(Dumper(\%{$child})) if($is_tt_switch_active);
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
index 0e939731015..590d9acb8c5 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm
@@ -17,6 +17,7 @@ package LatexIndent::KeyEqualsValuesBraces;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
+use LatexIndent::GetYamlSettings qw/%masterSettings/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
@@ -37,21 +38,19 @@ sub construct_key_equals_values_regexp{
# blank line token
my $blankLineToken = $tokens{blanklines};
+ # read from fine tuning
+ my $keyEqualsValuesBracesBrackets = qr/${${$masterSettings{fineTuning}}{keyEqualsValuesBracesBrackets}}{name}/;
+ my $keyEqualsValuesBracesBracketsFollow = qr/${${$masterSettings{fineTuning}}{keyEqualsValuesBracesBrackets}}{follow}/;
+
# store the regular expresssion for matching and replacing
$key_equals_values_bracesRegExp = qr/
(
- (?:
- (?:(?<!\\)\{)
- |
- ,
- |
- (?:(?<!\\)\[)
- )
+ (?:$keyEqualsValuesBracesBracketsFollow)
(?:\h|\R|$blankLineToken|$trailingCommentRegExp)*
) # $1 pre-key bit: could be { OR , OR [
(\\)? # $2 possible backslash
(
- [a-zA-Z@\*0-9_\/.\h\{\}:\#-]+? # lowercase|uppercase letters, @, *, numbers, forward slash, dots
+ $keyEqualsValuesBracesBrackets? # lowercase|uppercase letters, @, *, numbers, forward slash, dots
) # $3 name
(
(?:\h|\R|$blankLineToken|$trailingCommentRegExp)*
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm
index b8ebc034b3a..75ebe0b2ea2 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm
@@ -80,6 +80,15 @@ usage: latexindent.pl [options] [file][.tex|.sty|.cls|.bib|...]
-m, --modifylinebreaks
modify linebreaks before, during, and at the end of code blocks;
trailing comments and blank lines can also be added using this feature
+ -r,--replacement
+ replacement mode, allows you to replace strings and regular expressions
+ verbatim blocks not respected
+ -rv,--replacementrespectverb
+ replacement mode, allows you to replace strings and regular expressions
+ while respecting verbatim code blocks
+ -rr,--onlyreplacement
+ *only* replacement mode, no indentation
+ verbatim blocks not respected
ENDQUOTE
;
exit(2);
@@ -182,6 +191,8 @@ ENDQUOTE
$logger->info("-m|--modifylinebreaks: modify line breaks") if($switches{modifyLineBreaks});
$logger->info("-g|--logfile: logfile name") if($switches{logFileName});
$logger->info("-c|--cruft: cruft directory") if($switches{cruftDirectory});
+ $logger->info("-r|--replacement: replacement mode") if($switches{replacement});
+ $logger->info("-rr|--onlyreplacement: *only* replacement mode, no indentation") if($switches{onlyreplacement});
# check if overwrite and outputfile are active similtaneously
if($switches{overwrite} and $switches{outputToFile}){
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/MandatoryArgument.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/MandatoryArgument.pm
index 0b641231f2a..b5b3ac8de6f 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/MandatoryArgument.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/MandatoryArgument.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
-use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
+use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_m_switch_active /;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::IfElseFi qw/$ifElseFiBasicRegExp/;
use LatexIndent::Special qw/$specialBeginBasicRegExp/;
@@ -128,6 +128,8 @@ sub tasks_particular_to_each_object{
# search for special begin/end
$self->find_special if ${$self}{body} =~ m/$specialBeginBasicRegExp/s;
+ # comma poly-switch check
+ $self->comma_else if $is_m_switch_active;
}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
index a0763456e02..0f33f88b834 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
@@ -28,27 +28,34 @@ use LatexIndent::LogFile qw/$logger/;
our @EXPORT_OK = qw/modify_line_breaks_body modify_line_breaks_end adjust_line_breaks_end_parent remove_line_breaks_begin text_wrap remove_paragraph_line_breaks construct_paragraph_reg_exp text_wrap_remove_paragraph_line_breaks verbatim_modify_line_breaks/;
our $paragraphRegExp = q();
-
sub modify_line_breaks_body{
my $self = shift;
+ #
+ # Blank line poly-switch notes (==4)
+ #
+ # when BodyStartsOnOwnLine=4 we adopt the following approach:
+ # temporarily change BodyStartsOnOwnLine to -1, make adjustments
+ # temporarily change BodyStartsOnOwnLine to 3, make adjustments
+ # switch BodyStartsOnOwnLine back to 4
# add a line break after \begin{statement} if appropriate
- if(defined ${$self}{BodyStartsOnOwnLine}){
+ my @polySwitchValues = (${$self}{BodyStartsOnOwnLine}==4)?(-1,3):(${$self}{BodyStartsOnOwnLine});
+ foreach(@polySwitchValues){
my $BodyStringLogFile = ${$self}{aliases}{BodyStartsOnOwnLine}||"BodyStartsOnOwnLine";
- if(${$self}{BodyStartsOnOwnLine}>=1 and !${$self}{linebreaksAtEnd}{begin}){
+ if($_>=1 and !${$self}{linebreaksAtEnd}{begin}){
# if the <begin> statement doesn't finish with a line break,
# then we have different actions based upon the value of BodyStartsOnOwnLine:
# BodyStartsOnOwnLine == 1 just add a new line
# BodyStartsOnOwnLine == 2 add a comment, and then new line
# BodyStartsOnOwnLine == 3 add a blank line, and then new line
- if(${$self}{BodyStartsOnOwnLine}==1){
+ if($_==1){
# modify the begin statement
- $logger->trace("Adding a linebreak at the end of begin, ${$self}{begin} (see $BodyStringLogFile)") if $is_t_switch_active;
+ $logger->trace("Adding a linebreak at the end of begin statement ${$self}{begin} (see $BodyStringLogFile)") if $is_t_switch_active;
${$self}{begin} .= "\n";
${$self}{linebreaksAtEnd}{begin} = 1;
$logger->trace("Removing leading space from body of ${$self}{name} (see $BodyStringLogFile)") if $is_t_switch_active;
${$self}{body} =~ s/^\h*//;
- } elsif(${$self}{BodyStartsOnOwnLine}==2){
+ } elsif($_==2){
# by default, assume that no trailing comment token is needed
my $trailingCommentToken = q();
if(${$self}{body} !~ m/^\h*$trailingCommentRegExp/s){
@@ -63,7 +70,7 @@ sub modify_line_breaks_body{
} else {
$logger->trace("Even though $BodyStringLogFile == 2, ${$self}{begin} already finishes with a %, so not adding another.") if $is_t_switch_active;
}
- } elsif (${$self}{BodyStartsOnOwnLine}==3){
+ } elsif ($_==3){
my $trailingCharacterToken = q();
$logger->trace("Adding a blank line at the end of begin ${$self}{begin} followed by a linebreak ($BodyStringLogFile == 3)") if $is_t_switch_active;
${$self}{begin} =~ s/\h*$//;
@@ -72,12 +79,12 @@ sub modify_line_breaks_body{
$logger->trace("Removing leading space from body of ${$self}{name} (see $BodyStringLogFile)") if $is_t_switch_active;
${$self}{body} =~ s/^\h*//;
}
- } elsif (${$self}{BodyStartsOnOwnLine}==-1 and ${$self}{linebreaksAtEnd}{begin}){
+ } elsif ($_==-1 and ${$self}{linebreaksAtEnd}{begin}){
# remove line break *after* begin, if appropriate
$self->remove_line_breaks_begin;
}
}
- }
+}
sub remove_line_breaks_begin{
my $self = shift;
@@ -90,86 +97,111 @@ sub remove_line_breaks_begin{
sub modify_line_breaks_end{
my $self = shift;
- # possibly modify line break *before* \end{statement}
- if(defined ${$self}{EndStartsOnOwnLine}){
- my $EndStringLogFile = ${$self}{aliases}{EndStartsOnOwnLine}||"EndStartsOnOwnLine";
- if(${$self}{EndStartsOnOwnLine}>=1 and !${$self}{linebreaksAtEnd}{body}){
- # if the <body> statement doesn't finish with a line break,
- # then we have different actions based upon the value of EndStartsOnOwnLine:
- # EndStartsOnOwnLine == 1 just add a new line
- # EndStartsOnOwnLine == 2 add a comment, and then new line
- # EndStartsOnOwnLine == 3 add a blank line, and then new line
- $logger->trace("Adding a linebreak at the end of body (see $EndStringLogFile)") if $is_t_switch_active;
-
- # by default, assume that no trailing character token is needed
- my $trailingCharacterToken = q();
- if(${$self}{EndStartsOnOwnLine}==2){
- $logger->trace("Adding a % immediately after body of ${$self}{name} ($EndStringLogFile==2)") if $is_t_switch_active;
- $trailingCharacterToken = "%".$self->add_comment_symbol;
- ${$self}{body} =~ s/\h*$//s;
- } elsif (${$self}{EndStartsOnOwnLine}==3) {
- $logger->trace("Adding a blank line immediately after body of ${$self}{name} ($EndStringLogFile==3)") if $is_t_switch_active;
- $trailingCharacterToken = "\n".(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
- ${$self}{body} =~ s/\h*$//s;
- }
-
- # modified end statement
- if(${$self}{body} =~ m/^\h*$/s and ${$self}{BodyStartsOnOwnLine} >=1 ){
- ${$self}{linebreaksAtEnd}{body} = 0;
- } else {
- ${$self}{body} .= "$trailingCharacterToken\n";
- ${$self}{linebreaksAtEnd}{body} = 1;
- }
- } elsif (${$self}{EndStartsOnOwnLine}==-1 and ${$self}{linebreaksAtEnd}{body}){
- # remove line break *after* body, if appropriate
-
- # check to see that body does *not* finish with blank-line-token,
- # if so, then don't remove that final line break
- if(${$self}{body} !~ m/$tokens{blanklines}$/s){
- $logger->trace("Removing linebreak at the end of body (see $EndStringLogFile)") if $is_t_switch_active;
- ${$self}{body} =~ s/\R*$//sx;
- ${$self}{linebreaksAtEnd}{body} = 0;
- } else {
- $logger->trace("Blank line token found at end of body (${$self}{name}), see preserveBlankLines, not removing line break before ${$self}{end}") if $is_t_switch_active;
+ #
+ # Blank line poly-switch notes (==4)
+ #
+ # when EndStartsOnOwnLine=4 we adopt the following approach:
+ # temporarily change EndStartsOnOwnLine to -1, make adjustments
+ # temporarily change EndStartsOnOwnLine to 3, make adjustments
+ # switch EndStartsOnOwnLine back to 4
+ #
+
+ my @polySwitchValues =(defined ${$self}{EndStartsOnOwnLine} and ${$self}{EndStartsOnOwnLine}==4) ?(-1,3):(${$self}{EndStartsOnOwnLine});
+ foreach(@polySwitchValues){
+ # possibly modify line break *before* \end{statement}
+ if(defined ${$self}{EndStartsOnOwnLine}){
+ my $EndStringLogFile = ${$self}{aliases}{EndStartsOnOwnLine}||"EndStartsOnOwnLine";
+ if($_>=1 and !${$self}{linebreaksAtEnd}{body}){
+ # if the <body> statement doesn't finish with a line break,
+ # then we have different actions based upon the value of EndStartsOnOwnLine:
+ # EndStartsOnOwnLine == 1 just add a new line
+ # EndStartsOnOwnLine == 2 add a comment, and then new line
+ # EndStartsOnOwnLine == 3 add a blank line, and then new line
+ $logger->trace("Adding a linebreak at the end of body (see $EndStringLogFile)") if $is_t_switch_active;
+
+ # by default, assume that no trailing character token is needed
+ my $trailingCharacterToken = q();
+ if($_==2){
+ $logger->trace("Adding a % immediately after body of ${$self}{name} ($EndStringLogFile==2)") if $is_t_switch_active;
+ $trailingCharacterToken = "%".$self->add_comment_symbol;
+ ${$self}{body} =~ s/\h*$//s;
+ } elsif ($_==3) {
+ $logger->trace("Adding a blank line immediately after body of ${$self}{name} ($EndStringLogFile==3)") if $is_t_switch_active;
+ $trailingCharacterToken = "\n".(${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:q());
+ ${$self}{body} =~ s/\h*$//s;
+ }
+
+ # modified end statement
+ if(${$self}{body} =~ m/^\h*$/s and (defined ${$self}{BodyStartsOnOwnLine}) and ${$self}{BodyStartsOnOwnLine} >=1 ){
+ ${$self}{linebreaksAtEnd}{body} = 0;
+ } else {
+ ${$self}{body} .= "$trailingCharacterToken\n";
+ ${$self}{linebreaksAtEnd}{body} = 1;
+ }
+ } elsif ($_==-1 and ${$self}{linebreaksAtEnd}{body}){
+ # remove line break *after* body, if appropriate
+
+ # check to see that body does *not* finish with blank-line-token,
+ # if so, then don't remove that final line break
+ if(${$self}{body} !~ m/$tokens{blanklines}$/s){
+ $logger->trace("Removing linebreak at the end of body (see $EndStringLogFile)") if $is_t_switch_active;
+ ${$self}{body} =~ s/\R*$//sx;
+ ${$self}{linebreaksAtEnd}{body} = 0;
+ } else {
+ $logger->trace("Blank line token found at end of body (${$self}{name}), see preserveBlankLines, not removing line break before ${$self}{end}") if $is_t_switch_active;
+ }
}
- }
+ }
}
- # possibly modify line break *after* \end{statement}
- if(defined ${$self}{EndFinishesWithLineBreak}
- and ${$self}{EndFinishesWithLineBreak}>=1
- and !${$self}{linebreaksAtEnd}{end}){
- # if the <end> statement doesn't finish with a line break,
- # then we have different actions based upon the value of EndFinishesWithLineBreak:
- # EndFinishesWithLineBreak == 1 just add a new line
- # EndFinishesWithLineBreak == 2 add a comment, and then new line
- # EndFinishesWithLineBreak == 3 add a blank line, and then new line
- my $EndStringLogFile = ${$self}{aliases}{EndFinishesWithLineBreak}||"EndFinishesWithLineBreak";
- if(${$self}{EndFinishesWithLineBreak}==1){
- $logger->trace("Adding a linebreak at the end of ${$self}{end} ($EndStringLogFile==1)") if $is_t_switch_active;
- ${$self}{linebreaksAtEnd}{end} = 1;
-
- # modified end statement
- ${$self}{replacementText} .= "\n";
- } elsif(${$self}{EndFinishesWithLineBreak}==2){
- if(${$self}{endImmediatelyFollowedByComment}){
- # no need to add a % if one already exists
- $logger->trace("Even though $EndStringLogFile == 2, ${$self}{end} is immediately followed by a %, so not adding another; not adding line break.") if $is_t_switch_active;
- } else {
- # otherwise, create a trailing comment, and tack it on
- $logger->trace("Adding a % immediately after, ${$self}{end} ($EndStringLogFile==2)") if $is_t_switch_active;
- my $trailingCommentToken = "%".$self->add_comment_symbol;
- ${$self}{end} =~ s/\h*$//s;
- ${$self}{replacementText} .= "$trailingCommentToken\n";
- ${$self}{linebreaksAtEnd}{end} = 1;
- }
- } elsif(${$self}{EndFinishesWithLineBreak}==3){
- $logger->trace("Adding a blank line at the end of ${$self}{end} ($EndStringLogFile==3)") if $is_t_switch_active;
- ${$self}{linebreaksAtEnd}{end} = 1;
-
- # modified end statement
- ${$self}{replacementText} .= (${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:"\n")."\n";
- }
+ #
+ # Blank line poly-switch notes (==4)
+ #
+ # when EndFinishesWithLineBreak=4 we adopt the following approach:
+ # temporarily change EndFinishesWithLineBreak to -1, make adjustments
+ # temporarily change EndFinishesWithLineBreak to 3, make adjustments
+ # switch EndFinishesWithLineBreak back to 4
+ #
+ @polySwitchValues =(defined ${$self}{EndFinishesWithLineBreak} and ${$self}{EndFinishesWithLineBreak}==4) ?(-1,3):(${$self}{EndFinishesWithLineBreak});
+ foreach(@polySwitchValues){
+ last if !(defined $_);
+ ${$self}{linebreaksAtEnd}{end} = 0 if($_==3 and (defined ${$self}{EndFinishesWithLineBreak} and ${$self}{EndFinishesWithLineBreak}==4));
+
+ # possibly modify line break *after* \end{statement}
+ if(defined $_ and $_>=1
+ and !${$self}{linebreaksAtEnd}{end}){
+ # if the <end> statement doesn't finish with a line break,
+ # then we have different actions based upon the value of EndFinishesWithLineBreak:
+ # EndFinishesWithLineBreak == 1 just add a new line
+ # EndFinishesWithLineBreak == 2 add a comment, and then new line
+ # EndFinishesWithLineBreak == 3 add a blank line, and then new line
+ my $EndStringLogFile = ${$self}{aliases}{EndFinishesWithLineBreak}||"EndFinishesWithLineBreak";
+ if($_==1){
+ $logger->trace("Adding a linebreak at the end of ${$self}{end} ($EndStringLogFile==1)") if $is_t_switch_active;
+ ${$self}{linebreaksAtEnd}{end} = 1;
+
+ # modified end statement
+ ${$self}{replacementText} .= "\n";
+ } elsif($_==2){
+ if(${$self}{endImmediatelyFollowedByComment}){
+ # no need to add a % if one already exists
+ $logger->trace("Even though $EndStringLogFile == 2, ${$self}{end} is immediately followed by a %, so not adding another; not adding line break.") if $is_t_switch_active;
+ } else {
+ # otherwise, create a trailing comment, and tack it on
+ $logger->trace("Adding a % immediately after, ${$self}{end} ($EndStringLogFile==2)") if $is_t_switch_active;
+ my $trailingCommentToken = "%".$self->add_comment_symbol;
+ ${$self}{end} =~ s/\h*$//s;
+ ${$self}{replacementText} .= "$trailingCommentToken\n";
+ ${$self}{linebreaksAtEnd}{end} = 1;
+ }
+ } elsif($_==3){
+ $logger->trace("Adding a blank line at the end of ${$self}{end} ($EndStringLogFile==3)") if $is_t_switch_active;
+ ${$self}{linebreaksAtEnd}{end} = 1;
+
+ # modified end statement
+ ${$self}{replacementText} .= (${$masterSettings{modifyLineBreaks}}{preserveBlankLines}?$tokens{blanklines}:"\n")."\n";
+ }
+ }
}
}
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
index 4508943ddfa..f20e23ca547 100755
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm
@@ -17,6 +17,7 @@ package LatexIndent::NamedGroupingBracesBrackets;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
+use LatexIndent::GetYamlSettings qw/%masterSettings/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
@@ -33,18 +34,22 @@ sub construct_grouping_braces_brackets_regexp{
# grab the arguments regexp
my $optAndMandRegExp = $self->get_arguments_regexp;
+ # read from fine tuning
+ my $NamedGroupingBracesBracketsRegExp = qr/${${$masterSettings{fineTuning}}{NamedGroupingBracesBrackets}}{name}/;
+ my $NamedGroupingFollowRegExp = qr/${${$masterSettings{fineTuning}}{NamedGroupingBracesBrackets}}{follow}/;
+
# store the regular expresssion for matching and replacing
$grouping_braces_regexp = qr/
(
- \h|\R|\{|\[|\$|\)|\(
+ $NamedGroupingFollowRegExp
)
(
- [0-9\.a-zA-Z@\*><]+? # lowercase|uppercase letters, @, *, numbers, forward slash, dots
- ) # $2 name
- (\h*) # $3 h-space
- (\R*) # $4 linebreaks
- ($optAndMandRegExp) # $5 mand|opt arguments (at least one)
- (\R)? # $8 linebreak
+ $NamedGroupingBracesBracketsRegExp # lowercase|uppercase letters, @, *, numbers, forward slash, dots
+ ) # $2 name
+ (\h*) # $3 h-space
+ (\R*) # $4 linebreaks
+ ($optAndMandRegExp) # $5 mand|opt arguments (at least one)
+ (\R)? # $8 linebreak
/sx;
# something {value} grouping braces with trailing comment
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/OptionalArgument.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/OptionalArgument.pm
index 60e03ca91d4..fdaa549a7ae 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/OptionalArgument.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/OptionalArgument.pm
@@ -18,7 +18,7 @@ use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
-use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
+use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_m_switch_active /;
use LatexIndent::LogFile qw/$logger/;
use LatexIndent::IfElseFi qw/$ifElseFiBasicRegExp/;
use LatexIndent::Special qw/$specialBeginBasicRegExp/;
@@ -113,6 +113,8 @@ sub tasks_particular_to_each_object{
# search for special begin/end
$self->find_special if ${$self}{body} =~ m/$specialBeginBasicRegExp/s;
+ # comma poly-switch check
+ $self->comma_else if $is_m_switch_active;
}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm
new file mode 100644
index 00000000000..1bc51caed2d
--- /dev/null
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Replacement.pm
@@ -0,0 +1,89 @@
+package LatexIndent::Replacement;
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# See http://www.gnu.org/licenses/.
+#
+# Chris Hughes, 2017
+#
+# For all communication, please visit: https://github.com/cmhughes/latexindent.pl
+use strict;
+use warnings;
+use LatexIndent::Tokens qw/%tokens/;
+use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
+use LatexIndent::GetYamlSettings qw/%masterSettings/;
+use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active $is_rr_switch_active/;
+use LatexIndent::LogFile qw/$logger/;
+use Data::Dumper;
+use Exporter qw/import/;
+our @ISA = "LatexIndent::Document"; # class inheritance, Programming Perl, pg 321
+our @EXPORT_OK = qw/make_replacements/;
+
+sub make_replacements{
+ my $self = shift;
+ my %input = @_;
+ if ($is_t_switch_active and !$is_rr_switch_active){
+ $logger->trace("*Replacement mode *$input{when}* indentation: -r") ;
+ } elsif ($is_t_switch_active and $is_rr_switch_active) {
+ $logger->trace("*Replacement mode, -rr switch is active") if $is_t_switch_active ;
+ }
+
+ my @replacements = @{$masterSettings{replacements}};
+
+ foreach ( @replacements ){
+ next if !(${$_}{this} or ${$_}{substitution});
+
+ # default value of "lookForThis" is 1
+ ${$_}{lookForThis} = 1 if( !(defined ${$_}{lookForThis}));
+
+ # move on if this one shouldn't be looked for
+ next if(!${$_}{lookForThis});
+
+ # default value of "when" is before
+ ${$_}{when} = "before" if( !(defined ${$_}{when}) or $is_rr_switch_active);
+
+ # update to the logging file
+ if($is_t_switch_active and (${$_}{when} eq $input{when})){
+ $logger->trace("-");
+ $logger->trace("this: ${$_}{this}") if(${$_}{this});
+ $logger->trace("that: ${$_}{that}") if(${$_}{that});
+ $logger->trace("substitution: ${$_}{substitution}") if(${$_}{substitution});
+ $logger->trace("when: ${$_}{when}");
+ }
+
+ # perform the substitutions
+ if(${$_}{when} eq $input{when}){
+ $logger->warn("*You have specified both 'this' and 'substitution'; the 'substitution' field will be ignored") if(${$_}{this} and ${$_}{substitution});
+ if(${$_}{this}){
+ # *string* replacement
+ # *string* replacement
+ # *string* replacement
+ my $this = qq{${$_}{this}};
+ my $that = (defined ${$_}{that}) ? qq{${$_}{that}} : q();
+ my $index_match = index(${$self}{body}, $this);
+ while ( $index_match != -1 ) {
+ substr (${$self}{body}, $index_match, length($this), $that );
+ $index_match = index(${$self}{body}, $this);
+ }
+ } else {
+ # *regex* replacement
+ # *regex* replacement
+ # *regex* replacement
+
+ # https://stackoverflow.com/questions/12423337/how-to-pass-a-replacing-regex-as-a-command-line-argument-to-a-perl-script
+ my $body = ${$self}{body};
+ eval("\$body =~ ${$_}{substitution}");
+ ${$self}{body} = $body ;
+ }
+ }
+ }
+}
+
+1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
index 48ae0379d6c..cc11997e36f 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
@@ -129,7 +129,7 @@ sub one_sentence_per_line{
$sentencesEndWithEachPart = qr/\./;
} elsif($sentencesEndWithEachPart eq "betterFullStop"){
$logger->trace("sentence ENDS with *better* full stop (see oneSentencePerLine:sentencesEndWith:betterFullStop") if $is_t_switch_active;
- $sentencesEndWithEachPart = qr/(?:\.\)(?!\h*[a-z]))|(?:(?<!(?:(?:e\.g)|(?:i\.e)|(?:etc))))\.(?!(?:[a-z]|[A-Z]|\-|~|\,|[0-9]))/;
+ $sentencesEndWithEachPart = qr/${${$masterSettings{fineTuning}}{modifyLineBreaks}}{betterFullStop}/;
} elsif ($sentencesEndWithEachPart eq "exclamationMark"){
$logger->trace("sentence ENDS with exclamation mark (see oneSentencePerLine:sentencesEndWith:exclamationMark)") if $is_t_switch_active;
$sentencesEndWithEachPart = qr/!/;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm
index a5b07936a6d..d738a4b36b6 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Switches.pm
@@ -17,11 +17,14 @@ package LatexIndent::Switches;
use strict;
use warnings;
use Exporter qw/import/;
-our @EXPORT_OK = qw/%switches storeSwitches $is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
+our @EXPORT_OK = qw/%switches storeSwitches $is_m_switch_active $is_t_switch_active $is_tt_switch_active $is_r_switch_active $is_rr_switch_active $is_rv_switch_active/;
our %switches;
our $is_m_switch_active;
our $is_t_switch_active;
our $is_tt_switch_active;
+our $is_r_switch_active;
+our $is_rr_switch_active;
+our $is_rv_switch_active;
sub storeSwitches{
my $self = shift;
@@ -32,6 +35,10 @@ sub storeSwitches{
$is_t_switch_active = defined $switches{trace}?$switches{trace}: 0;
$is_tt_switch_active = defined $switches{ttrace}?$switches{ttrace}: 0;
$is_t_switch_active = $is_tt_switch_active ? $is_tt_switch_active : $is_t_switch_active;
+ $is_r_switch_active = defined $switches{replacement}?$switches{replacement}: 0;
+ $is_rr_switch_active = defined $switches{onlyreplacement}?$switches{onlyreplacement}: 0;
+ $is_rv_switch_active = defined $switches{replacementRespectVerb}?$switches{replacementRespectVerb}: 0;
+ $is_r_switch_active = ($is_rr_switch_active|$is_rv_switch_active) ? ($is_rr_switch_active|$is_rv_switch_active) : $is_r_switch_active;
delete ${$self}{switches};
}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
index 0c18484649a..eea6ee6747a 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/UnNamedGroupingBracesBrackets.pm
@@ -17,6 +17,7 @@ package LatexIndent::UnNamedGroupingBracesBrackets;
use strict;
use warnings;
use LatexIndent::Tokens qw/%tokens/;
+use LatexIndent::GetYamlSettings qw/%masterSettings/;
use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/;
use LatexIndent::LogFile qw/$logger/;
@@ -36,8 +37,9 @@ sub construct_unnamed_grouping_braces_brackets_regexp{
# blank line token
my $blankLineToken = $tokens{blanklines};
- # for example #1 #2, etc
- my $numberedArgRegExp = $self->get_numbered_arg_regexp;
+ # arguments Before, by default, includes beamer special and numbered arguments, for example #1 #2, etc
+ my $argumentsBefore = qr/${${$masterSettings{fineTuning}}{arguments}}{before}/;
+ my $UnNamedGroupingFollowRegExp = qr/${${$masterSettings{fineTuning}}{UnNamedGroupingBracesBrackets}}{follow}/;
# store the regular expresssion for matching and replacing
$un_named_grouping_braces_RegExp = qr/
@@ -48,18 +50,18 @@ sub construct_unnamed_grouping_braces_brackets_regexp{
|
(?:(?<!\\)\})
)
- (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$numberedArgRegExp)* # 0 or more h-space, blanklines, trailing comments
+ (?:\h|\R|$blankLineToken|$trailingCommentRegExp|$argumentsBefore)* # 0 or more h-space, blanklines, trailing comments
)
# END of NOT
(
(?:
- \{|\[|,|&|\)|\(|\$ # starting with { OR [ OR , OR & OR ) OR ( OR $
+ $UnNamedGroupingFollowRegExp # starting with { OR [ OR , OR & OR ) OR ( OR $
)
\h*
- ) # $1 into beginning bit
- (\R*) # $2 linebreaksAtEnd of begin
- ($optAndMandRegExp) # $3 mand|opt arguments (at least one) stored into body
- (\R)? # $6 linebreak
+ ) # $1 into beginning bit
+ (\R*) # $2 linebreaksAtEnd of begin
+ ($optAndMandRegExp) # $3 mand|opt arguments (at least one) stored into body
+ (\R)? # $6 linebreak
/sx;
$un_named_grouping_braces_RegExp_trailing_comment = qr/$un_named_grouping_braces_RegExp(\h*)((?:$trailingCommentRegExp\h*)*)?/;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
index 52a659dc79c..c0ecb8bb067 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
@@ -19,6 +19,6 @@ use warnings;
use Exporter qw/import/;
our @EXPORT_OK = qw/$versionNumber $versionDate/;
-our $versionNumber = '3.6';
-our $versionDate = '2019-05-05';
+our $versionNumber = '3.7';
+our $versionDate = '2019-07-13';
1
diff --git a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
index d457e96e3a3..a706131365a 100755
--- a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
+++ b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
@@ -1,4 +1,4 @@
-# defaultSettings.yaml for latexindent.pl, version 3.6, 2019-05-05
+# defaultSettings.yaml for latexindent.pl, version 3.7, 2019-07-13
# a script that aims to
# beautify .tex, .sty, .cls files
#
@@ -21,15 +21,18 @@
# For all communication, please visit: https://github.com/cmhughes/latexindent.pl
-# You're welcome to change anything you like in here, but
+# You should feel encouraged to change anything you like in these settings, but
# it would probably be better to have your own user settings
# files somewhere else - remember that this file may be overwritten
-# when you update your distribution. Please see the manual
-# for details of how to setup your own settings files.
+# when you update your tex distribution. Please see the manual linked from:
#
-# Please read the manual first to understand what each switch does.
+# https://github.com/cmhughes/latexindent.pl
+#
+# for details of how to create and configure your own settings files.
+#
+# Please read the manual (linked from above) first to understand what each switch does.
-# latexindent can be called without a file extension,
+# latexindent can be called to act on a file without using the file's extension,
# e.g, simply
# latexindent myfile
# in which case the choice of file extension is chosen
@@ -41,7 +44,7 @@ fileExtensionPreference:
.cls: 3
.bib: 4
-# default file extension of backup file (if original is overwritten with -w switch)
+# default file extension of backup file (if -w switch is active)
# for example, if your .tex file is called
# myfile.tex
# and you specify the backupExtension as BACKUP.bak then your
@@ -49,23 +52,26 @@ fileExtensionPreference:
# myfileBACKUP.bak
backupExtension: .bak
-# only one backup per file; if onlyOneBackUp is 0 then, as a safety measure,
-# the number on the extension increments by 1 each time:
-# myfile.bak0, myfile.bak1, myfile.bak2
+# only one backup per file:
+# - if onlyOneBackUp is 0 then, as a safety measure,
+# the number on the extension increments by 1 each time:
#
-# if you set onlyOnebackUp to 1, then the backup file will
-# be overwritten each time (not recommended until you trust the script)
+# myfile.bak0, myfile.bak1, myfile.bak2
+# - if you set onlyOnebackUp to 1, then the backup file will
+# be overwritten each time (not recommended until you trust the script)
onlyOneBackUp: 0
-# some users may only want a set number of backup files,
-# say at most 3; in which case, they can change this switch.
+# some users may want a finite number of backup files,
+# say at most 3; in which case, they can change this maxNumberOfBackUps.
+#
# If maxNumberOfBackUps is set to 0 (or less) then infinitely
# many backups are possible, unless onlyOneBackUp is switched on
maxNumberOfBackUps: 0
-# some users may wish to cycle through back up files, for example,
-# with maxNumberOfBackUps: 4, they may wish to delete the oldest
-# back up file, and keep only the most recent.
+# some users may wish to cycle through back up files.
+#
+# for example, with maxNumberOfBackUps: 4, they may
+# wish to delete the oldest back up file, and keep only the most recent.
#
# copy myfile.bak1 to myfile.bak0
# copy myfile.bak2 to myfile.bak1
@@ -102,8 +108,7 @@ verbatimCommands:
# no indent blocks (not necessarily verbatim
# environments) which are marked as %\begin{noindent}
-# or anything else that the user puts in this hash
-# table
+# or anything else that you detail in the following
noIndentBlock:
noindent: 1
cmhtest: 1
@@ -136,7 +141,7 @@ lookForPreamble:
# postfoothook=\end{mdframed},
preambleCommandsBeforeEnvironments: 0
-# Default value of indentation
+# default value of indentation
defaultIndent: "\t"
# name of code blocks that should have their body aligned at ampersand delimiters
@@ -185,7 +190,7 @@ indentAfterItems:
description: 1
list: 1
-# if you want to use other names for your items (such as, for example, part)
+# if you want to use other names for your items (for example, \part)
# then populate them here; note that you can trick latexindent.pl
# into indenting all kinds of commands (within environments specified in
# indentAfterItems) using this technique.
@@ -193,7 +198,7 @@ itemNames:
item: 1
myitem: 1
-# specialBeginEnd is mainly mathmode focus, although
+# specialBeginEnd is, by default, mathmode focus, although
# there's no restrictions
specialBeginEnd:
displayMath:
@@ -248,10 +253,10 @@ indentAfterHeadings:
maximumIndentation: -1
# if you don't want to have additional indentation
-# in an environment put it in this hash table; note that
-# environments in this field will inherit
+# in a code block, then add it to noAdditionalIndent; note that
+# code blocks in this field will inherit
# the *current* level of indentation they just won't
-# get any *additional*.
+# get any *additional* indentation
noAdditionalIndent:
myexample: 1
mydefinition: 1
@@ -264,8 +269,8 @@ noAdditionalIndent:
document: 1
frame: 0
-# if you have indent rules for particular environments
-# or commands, put them in here; for example, you might just want
+# if you have indent rules for particular code blocks
+# then you can populate them in indentRules; for example, you might just want
# to use a space " " or maybe a double tab "\t\t"
indentRules:
myenvironment: "\t\t"
@@ -325,72 +330,114 @@ commandCodeBlocks:
# modifyLineBreaks will only be searched if the -m
# switch is active
-# BeginStartsOnOwnLine: 1
-# if a begin statement is not already on its own line,
-# then, with -m active, it will be moved to its own line.
#
+# poly-switch examples:
+#
+# BeginStartsOnOwnLine:
+# modify line breaks before a begin statement
+#
+# when set to -1, e.g
+# some text some text
+# \begin{myenvironment}
+# will be changed to
+# some text some text \begin{myenvironment}
+# when set to 0, the switch is ignored
# when set to 1, e.g
# some text some text \begin{myenvironment}
# will be changed to
# some text some text
# \begin{myenvironment}
-# when set to -1, e.g
-# some text some text
-# \begin{myenvironment}
+# when set to 2, e.g
+# some text some text \begin{myenvironment}
# will be changed to
+# some text some text%
+# \begin{myenvironment}
+# when set to 3, e.g
# some text some text \begin{myenvironment}
-# when set to 0, the switch is ignored
+# will be changed to
+# some text some text
#
-# BodyStartsOnOwnLine: 1
-# if body does not already start on its own line, then with
-# -m active, it will be moved to its own line.
+# \begin{myenvironment}
+#
+# BodyStartsOnOwnLine:
+# modify line breaks before the beginning of the body
#
+# when set to -1, e.g
+# \begin{myenv}
+# body text body text
+# will be changed to
+# \begin{myenv}body text body text
+# when set to 0, the switch is ignored
# when set to 1, e.g
# \begin{myenv}body text body text
# will be changed to
# \begin{myenv}
# body text body text
-# when set to -1, e.g
-# \begin{myenv}
-# body text body text
+# when set to 2, e.g
+# \begin{myenv}body text body text
# will be changed to
+# \begin{myenv}%
+# body text body text
+# when set to 3, e.g
# \begin{myenv}body text body text
-# when set to 0, the switch is ignored
+# will be changed to
+# \begin{myenv}
+#
+# body text body text
#
-# EndStartsOnOwnLine: 1
-# if an end statement is not already on its own line,
-# then, with -m active, it will be moved to its own line.
+# EndStartsOnOwnLine:
+# modify line breaks before the end statement
#
+# when set to -1, e.g
+# some text some text
+# \end{myenvironment}
+# will be changed to
+# some text some text \end{myenvironment}
+# when set to 0, the switch is ignored
# when set to 1, e.g
# some text some text \end{myenvironment}
# will be changed to
# some text some text
# \end{myenvironment}
-# when set to -1, e.g
-# some text some text
-# \end{myenvironment}
+# when set to 2, e.g
+# some text some text \end{myenvironment}
# will be changed to
+# some text some text%
+# \end{myenvironment}
+# when set to 3, e.g
# some text some text \end{myenvironment}
-# when set to 0, the switch is ignored
+# will be changed to
+# some text some text
#
-# EndFinishesWithLineBreak: 1
-# this switch adjusts line breaks immmediately
-# after an end statement (with -m active)
+# \end{myenvironment}
+#
+# EndFinishesWithLineBreak:
+# modify line breaks after the end statement
#
-# when set to 1, e.g
-# \end{myenvironment}some text some text
-# will be changed to
-# \end{myenvironment}
-# some text some text
# when set to -1, e.g
# \end{myenvironment}
# some text some text
# will be changed to
# \end{myenvironment}some text some text
# when set to 0, the switch is ignored
+# when set to 1, e.g
+# \end{myenvironment}some text some text
+# will be changed to
+# \end{myenvironment}
+# some text some text
+# when set to 2, e.g
+# \end{myenvironment}some text some text
+# will be changed to
+# \end{myenvironment}%
+# some text some text
+# when set to 3, e.g
+# \end{myenvironment}some text some text
+# will be changed to
+# \end{myenvironment}
+#
+# some text some text
#
-# Naturally, you can specify settings for individual environments,
-# commands, headings, etc, populate as you wish.
+# you can specify settings on a per-name basis
modifyLineBreaks:
preserveBlankLines: 1
condenseMultipleBlankLinesInto: 1
@@ -519,3 +566,38 @@ modifyLineBreaks:
verbatim:
VerbatimBeginStartsOnOwnLine: 0
VerbatimEndFinishesWithLineBreak: 0
+
+# replacements, only active when either -r or -rr switches are active
+replacements:
+ -
+ amalgamate: 1
+ -
+ this: 'latexindent.pl'
+ that: 'pl.latexindent'
+ lookForThis: 1
+ when: before
+
+# 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: ','
diff --git a/Master/texmf-dist/scripts/latexindent/latexindent.pl b/Master/texmf-dist/scripts/latexindent/latexindent.pl
index cb2208d1176..ecdf7c79e48 100755
--- a/Master/texmf-dist/scripts/latexindent/latexindent.pl
+++ b/Master/texmf-dist/scripts/latexindent/latexindent.pl
@@ -1,5 +1,5 @@
#!/usr/bin/env perl
-# latexindent.pl, version 3.6, 2019-05-05
+# latexindent.pl, version 3.7, 2019-07-13
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -44,6 +44,9 @@ GetOptions (
"help|h"=>\$switches{showhelp},
"cruft|c=s"=>\$switches{cruftDirectory},
"screenlog|sl"=>\$switches{screenlog},
+ "replacement|r"=>\$switches{replacement},
+ "onlyreplacement|rr"=>\$switches{onlyreplacement},
+ "replacementrespectverb|rv"=>\$switches{replacementRespectVerb},
);
# check local settings doesn't interfer with reading the file;