diff options
author | Karl Berry <karl@freefriends.org> | 2017-06-05 23:23:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-06-05 23:23:10 +0000 |
commit | d024b5690e678248a097a1b55231af47c09328e1 (patch) | |
tree | a4fd859c9e19baa4bb31438bdbe452951f5fa23e /Master/texmf-dist/doc | |
parent | 54b6d43a181a1c487ee932cb9eb9d70344ab4b47 (diff) |
latexindent (28may17)
git-svn-id: svn://tug.org/texlive/trunk@44492 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
11 files changed, 420 insertions, 49 deletions
diff --git a/Master/texmf-dist/doc/support/latexindent/README b/Master/texmf-dist/doc/support/latexindent/README index bc733d967fc..f3a55f4978e 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.0.2, 2017-05-12 + latexindent.pl, version 3.1, 2017-05-27 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 bd011ec388b..63a2b680394 100644 --- a/Master/texmf-dist/doc/support/latexindent/appendices.tex +++ b/Master/texmf-dist/doc/support/latexindent/appendices.tex @@ -14,6 +14,7 @@ use utf8; use PerlIO::encoding; use Unicode::GCString; use open ':std', ':encoding(UTF-8)'; +use Text::Wrap; use FindBin; use YAML::Tiny; use File::Copy; @@ -25,10 +26,6 @@ use Data::Dumper; print "hello world"; exit; \end{cmhlistings} - My default installation on Ubuntu 12.04 did \emph{not} come - with all of these modules as standard, but Strawberry Perl for Windows \cite{strawberryperl} - did. - Installing the modules given in \cref{lst:helloworld} will vary depending on your operating system and \texttt{Perl} distribution. For example, Ubuntu users might visit the software center, or else run diff --git a/Master/texmf-dist/doc/support/latexindent/latexindent.pdf b/Master/texmf-dist/doc/support/latexindent/latexindent.pdf Binary files differindex d9b467b658b..3bf881f5e4c 100644 --- a/Master/texmf-dist/doc/support/latexindent/latexindent.pdf +++ b/Master/texmf-dist/doc/support/latexindent/latexindent.pdf diff --git a/Master/texmf-dist/doc/support/latexindent/latexindent.tex b/Master/texmf-dist/doc/support/latexindent/latexindent.tex index 16a0a5c26ce..7ef945c18ac 100644 --- a/Master/texmf-dist/doc/support/latexindent/latexindent.tex +++ b/Master/texmf-dist/doc/support/latexindent/latexindent.tex @@ -3,7 +3,6 @@ % arara: pdflatex: {shell: yes} % arara: pdflatex: {shell: yes} % arara: pdflatex: {shell: yes} -% !arara: indent: {overwrite: yes, trace: yes, localSettings: yes, silent: yes} \documentclass[10pt]{article} % 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 @@ -172,17 +171,11 @@ \lstset{% basicstyle=\small\ttfamily,language={[LaTeX]TeX}, - % numbers=left, numberstyle=\ttfamily%\small, breaklines=true, - % frame=single,framexleftmargin=8mm, xleftmargin=8mm, - % prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookrightarrow}}, - % backgroundcolor=\color{green!5},frameround=fttt, - % rulecolor=\color{blue!70!black}, keywordstyle=\color{blue}, % keywords commentstyle=\color{purple}, % comments tabsize=3, - %xleftmargin=1.5em, }% \DeclareTCBListing[use counter=lstlisting]{yaml}{O{} m O{} m}{ yaml-TCB, @@ -199,7 +192,6 @@ \lstdefinestyle{yaml-LST}{ style=tcblatex, numbers=none, - %numbers=left, numberstyle=\color{red}, } @@ -209,6 +201,122 @@ columns=fullflexible, } +\lstdefinestyle{fileExtensionPreference}{ + style=yaml-LST, + firstnumber=38,linerange={38-42}, + numbers=left, +} + +\lstdefinestyle{logFilePreferences}{ + style=yaml-LST, + firstnumber=79,linerange={79-83},numbers=left +} + +\lstdefinestyle{verbatimEnvironments}{ + style=yaml-LST, + firstnumber=87,linerange={87-90},numbers=left +} + +\lstdefinestyle{verbatimCommands}{ + style=yaml-LST, + firstnumber=93,linerange={93-95},numbers=left +} + +\lstdefinestyle{noIndentBlock}{ + style=yaml-LST, + firstnumber=101,linerange={101-103},numbers=left +} + +\lstdefinestyle{removeTrailingWhitespace}{ + style=yaml-LST, + firstnumber=106,linerange={106-108},numbers=left +} + +\lstdefinestyle{fileContentsEnvironments}{ + style=yaml-LST, + firstnumber=112,linerange={112-114},numbers=left +} + +\lstdefinestyle{lookForPreamble}{ + style=yaml-LST, + firstnumber=120,linerange={120-124},numbers=left +} + +\lstdefinestyle{indentAfterItems}{ + style=yaml-LST, + firstnumber=172,linerange={172-176},numbers=left +} + +\lstdefinestyle{itemNames}{ + style=yaml-LST, + firstnumber=182,linerange={182-184},numbers=left +} + +\lstdefinestyle{specialBeginEnd}{ + style=yaml-LST, + firstnumber=188,linerange={188-200},numbers=left +} + +\lstdefinestyle{indentAfterHeadings}{ + style=yaml-LST, + firstnumber=210,linerange={210-219},numbers=left +} + +\lstdefinestyle{noAdditionalIndentGlobalEnv}{ + style=yaml-LST, + firstnumber=265,linerange={265-266},numbers=left +} + +\lstdefinestyle{noAdditionalIndentGlobal}{ + style=yaml-LST, + firstnumber=265,linerange={265-277},numbers=left +} + +\lstdefinestyle{indentRulesGlobalEnv}{ + style=yaml-LST, + firstnumber=281,linerange={281-282},numbers=left +} + +\lstdefinestyle{indentRulesGlobal}{ + style=yaml-LST, + firstnumber=281,linerange={281-293},numbers=left +} + +\lstdefinestyle{commandCodeBlocks}{ + style=yaml-LST, + firstnumber=296,linerange={296-304},numbers=left +} + +\lstdefinestyle{modifylinebreaks}{ + style=yaml-LST, + firstnumber=374,linerange={374-376},numbers=left +} + +\lstdefinestyle{textWrapOptions}{ + style=yaml-LST, + firstnumber=377,linerange={377-378},numbers=left +} + +\lstdefinestyle{textWrapOptionsAll}{ + style=yaml-LST, + firstnumber=377,linerange={377-379},numbers=left +} + +\lstdefinestyle{removeParagraphLineBreaks}{ + style=yaml-LST, + firstnumber=380,linerange={380-392},numbers=left +} + +\lstdefinestyle{paragraphsStopAt}{ + style=yaml-LST, + firstnumber=393,linerange={393-401},numbers=left +} + +\lstdefinestyle{modifylinebreaksEnv}{ + style=yaml-LST, + firstnumber=402,linerange={402-411},numbers=left +} + % stars around contributors \pgfdeclaredecoration{stars}{initial}{ \state{initial}[width=15pt] @@ -407,7 +515,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.0.2 + \centering\ttfamily\bfseries latexindent.pl\\[1cm] Version 3.1 \end{tcolorbox} } \author{Chris Hughes \thanks{and contributors! See \vref{sec:contributors}. For @@ -444,6 +552,7 @@ \input{subsubsec-no-add-remaining-code-blocks} \stopcontents[noAdditionalIndent] \input{subsec-commands-and-their-options} +\clearpage \input{sec-the-m-switch} \input{subsec-partnering-poly-switches} \input{subsec-conflicting-poly-switches} 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 5dc0e8a77b4..f8bf01b60fb 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 @@ -22,7 +22,7 @@ latexindent.pl myfile \end{commandshell} \begin{wrapfigure}[8]{r}[0pt]{6cm} - \cmhlistingsfromfile[firstnumber=22,linerange={22-26},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{fileExtensionPreference}}{lst:fileExtensionPreference} + \cmhlistingsfromfile[style=fileExtensionPreference]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{fileExtensionPreference}}{lst:fileExtensionPreference} \end{wrapfigure} in which case the script will look for \texttt{myfile} with the extensions @@ -79,10 +79,10 @@ copy myfile.bak4 to myfile.bak3 \yamltitle{logFilePreferences}*{fields} \begin{wrapfigure}[10]{r}[0pt]{9cm} - \cmhlistingsfromfile[firstnumber=63,linerange={63-67},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.85\linewidth,before=\centering,yaml-TCB]{\texttt{logFilePreferences}}{lst:logFilePreferences} + \cmhlistingsfromfile[style=logFilePreferences,]{../defaultSettings.yaml}[width=.85\linewidth,before=\centering,yaml-TCB]{\texttt{logFilePreferences}}{lst:logFilePreferences} \end{wrapfigure} \texttt{latexindent.pl} writes information to \texttt{indent.log}, some - of which can be customised by changing \texttt{logFilePreferences}; see \cref{lst:logFilePreferences}. + of which can be customized by changing \texttt{logFilePreferences}; see \cref{lst:logFilePreferences}. If you load your own user settings (see \vref{sec:indentconfig}) then \texttt{latexindent.pl} will detail them in \texttt{indent.log}; you can choose not to have the details logged by switching \texttt{showEveryYamlRead} to \texttt{0}. Once all of your settings have @@ -93,19 +93,20 @@ copy myfile.bak4 to myfile.bak3 \yamltitle{verbatimEnvironments}*{fields} - \begin{wrapfigure}[14]{r}[0pt]{6cm} - \cmhlistingsfromfile[firstnumber=71,linerange={71-73},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{verbatimEnvironments}}{lst:verbatimEnvironments} - - \vspace{.2cm} - \cmhlistingsfromfile[firstnumber=76,linerange={76-78},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{verbatimCommands}}{lst:verbatimCommands} - \end{wrapfigure} A field that contains a list of environments that you would like left completely alone -- no indentation will be performed on environments that you have specified in this field, see \cref{lst:verbatimEnvironments}. - Note that if you put an environment in \\ \texttt{verbatimEnvironments} + \begin{minipage}{.45\textwidth} + \cmhlistingsfromfile[style=verbatimEnvironments]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{verbatimEnvironments}}{lst:verbatimEnvironments} + \end{minipage}% + \begin{minipage}{.45\textwidth} + \cmhlistingsfromfile[style=verbatimCommands]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{verbatimCommands}}{lst:verbatimCommands} + \end{minipage}% + + 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}. + then \texttt{latexindent.pl} will \emph{always} prioritize \texttt{verbatimEnvironments}. \yamltitle{verbatimCommands}*{fields} A field that contains a list of commands that are verbatim commands, for example @@ -115,7 +116,7 @@ copy myfile.bak4 to myfile.bak3 \yamltitle{noIndentBlock}*{fields} \begin{wrapfigure}[8]{r}[0pt]{6cm} - \cmhlistingsfromfile[firstnumber=84,linerange={84-86},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{noIndentBlock}}{lst:noIndentBlock} + \cmhlistingsfromfile[style=noIndentBlock]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{noIndentBlock}}{lst:noIndentBlock} \end{wrapfigure} If you have a block of code that you don't want \texttt{latexindent.pl} to touch (even if it is \emph{not} a verbatim-like environment) then you can wrap it in an environment from \texttt{noIndentBlock}; @@ -140,10 +141,10 @@ copy myfile.bak4 to myfile.bak3 \yamltitle{removeTrailingWhitespace}*{fields}\label{yaml:removeTrailingWhitespace} \begin{wrapfigure}[12]{r}[0pt]{6cm} - \cmhlistingsfromfile[firstnumber=89,linerange={89-91},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{removeTrailingWhitespace}{lst:removeTrailingWhitespace} + \cmhlistingsfromfile[style=removeTrailingWhitespace]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{removeTrailingWhitespace}{lst:removeTrailingWhitespace} \vspace{.2cm} - \cmhlistingsfromfile[firstnumber=95,linerange={95-98},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{fileContentsEnvironments}}{lst:fileContentsEnvironments} + \cmhlistingsfromfile[style=fileContentsEnvironments]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{fileContentsEnvironments}}{lst:fileContentsEnvironments} \end{wrapfigure} Trailing white space can be removed both \emph{before} and \emph{after} processing the document, as detailed in \cref{lst:removeTrailingWhitespace}; each of the fields @@ -168,7 +169,7 @@ copy myfile.bak4 to myfile.bak3 \yamltitle{lookForPreamble}*{fields} \begin{wrapfigure}[8]{r}[0pt]{5cm} - \cmhlistingsfromfile[firstnumber=103,linerange={103-107},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{lookForPreamble}{lst:lookForPreamble} + \cmhlistingsfromfile[style=lookForPreamble]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{lookForPreamble}{lst:lookForPreamble} \end{wrapfigure} Not all files contain preamble; for example, \texttt{sty}, \texttt{cls} and \texttt{bib} files typically do \emph{not}. Referencing \cref{lst:lookForPreamble}, if you set, for example, \texttt{.tex} to \texttt{0}, then regardless of the setting of the value of \texttt{indentPreamble}, preamble @@ -313,7 +314,7 @@ latexindent.pl matrix1.tex \yamltitle{indentAfterItems}*{fields} \begin{wrapfigure}[5]{r}[0pt]{7cm} - \cmhlistingsfromfile[firstnumber=155,linerange={155-158},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{indentAfterItems}}{lst:indentafteritems} + \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} to look for \lstinline!\item! commands; if these switches are set to \texttt{1} @@ -330,7 +331,7 @@ latexindent.pl matrix1.tex \yamltitle{itemNames}*{fields} \begin{wrapfigure}[5]{r}[0pt]{5cm} - \cmhlistingsfromfile[firstnumber=164,linerange={164-166},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{itemNames}}{lst:itemNames} + \cmhlistingsfromfile[style=itemNames]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{itemNames}}{lst:itemNames} \end{wrapfigure} If you have your own \texttt{item} commands (perhaps you prefer to use \texttt{myitem}, for example) @@ -345,12 +346,12 @@ latexindent.pl matrix1.tex there is no requirement for this to be the case; \cref{lst:specialBeginEnd} shows the default settings of \texttt{specialBeginEnd}. - \cmhlistingsfromfile[firstnumber=170,linerange={170-182},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{specialBeginEnd}}{lst:specialBeginEnd} + \cmhlistingsfromfile[style=specialBeginEnd]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{specialBeginEnd}}{lst:specialBeginEnd} The field \texttt{displayMath} represents \lstinline!\[...\]!, \texttt{inlineMath} represents \lstinline!$...$! and \texttt{displayMathTex} represents \lstinline!$$...$$!. You can, of course, rename these in your own YAML files (see \vref{sec:localsettings}); indeed, you - might like to set up your own specil begin and end statements. + might like to set up your own special begin and end statements. A demonstration of the before-and-after results are shown in \cref{lst:specialbefore,lst:specialafter}. @@ -368,7 +369,7 @@ latexindent.pl matrix1.tex \yamltitle{indentAfterHeadings}*{fields} \begin{wrapfigure}[17]{r}[0pt]{8cm} - \cmhlistingsfromfile[firstnumber=192,linerange={192-201},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{indentAfterHeadings}}{lst:indentAfterHeadings} + \cmhlistingsfromfile[style=indentAfterHeadings]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{indentAfterHeadings}}{lst:indentAfterHeadings} \end{wrapfigure} This field enables the user to specify indentation rules that take effect after heading commands such as \lstinline!\part!, \lstinline!\chapter!, 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 90b6d8222c9..35c0d1fe1a3 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 @@ -25,7 +25,7 @@ \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 customised, but we will + 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 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 541a66572d2..7e8ddcd50fd 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,8 +1,4 @@ % arara: pdflatex: {shell: yes, files: [latexindent]} -% the -m switch -% the -m switch -% the -m switch - \fancyhead[R]{\bfseries\thepage% \tikz[remember picture,overlay] { \node at (1,0){\includegraphics{logo}}; @@ -13,12 +9,12 @@ \yamltitle{modifylinebreaks}*{fields} \begin{wrapfigure}[7]{r}[0pt]{8cm} - \cmhlistingsfromfile[firstnumber=356,linerange={356-358},style=yaml-LST,numbers=left,]{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{modifyLineBreaks}}{lst:modifylinebreaks} + \cmhlistingsfromfile[style=modifylinebreaks]{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{modifyLineBreaks}}{lst:modifylinebreaks} \end{wrapfigure} \makebox[0pt][r]{% \raisebox{-\totalheight}[0pt][0pt]{% \tikz\node[opacity=1] at (0,0) {\includegraphics[width=4cm]{logo}};}}% - One of the most exciting features of Version 3.0 is the \texttt{-m} switch, which + As of Version 3.0, \texttt{latexindent.pl} has the \texttt{-m} switch, which permits \texttt{latexindent.pl} to modify line breaks, according to the specifications in the \texttt{modifyLineBreaks} field. \emph{The settings in this field will only be considered if the \texttt{-m} switch has been used}. @@ -60,6 +56,275 @@ latexindent.pl myfile.tex -m \cmhlistingsfromfile{demonstrations/mlb1-out.tex}{\texttt{mlb1.tex} out output}{lst:mlb-bl-out} \end{minipage} +\yamltitle{textWrapOptions}*{fields} + When the \texttt{-m} switch is active \texttt{latexindent.pl} has the ability to wrap text using the options + specified in the \texttt{textWrapOptions} field, see \cref{lst:textWrapOptions}. The value of + \texttt{columns} specifies the column at which the text should be wrapped. + By default, the value of \texttt{columns} is \texttt{0}, so \texttt{latexindent.pl} + will \emph{not} wrap text; if you change it to a value of \texttt{2} or more, then + text will be wrapped after the character in the specified column. + + \cmhlistingsfromfile[style=textWrapOptions]{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{textWrapOptions}}{lst:textWrapOptions} + + For example, consider the file give in \cref{lst:textwrap1}. + + \begin{widepage} + \cmhlistingsfromfile{demonstrations/textwrap1.tex}{\texttt{textwrap1.tex}}{lst:textwrap1} + \end{widepage} + + Using the file \texttt{textwrap1.yaml} in \cref{lst:textwrap1-yaml}, and running the command + \begin{commandshell} +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} + \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} + + The text wrapping routine is performed \emph{after} verbatim environments have been stored, so verbatim + environments and verbatim commands are exempt from the routine. For example, using the file in + \cref{lst:textwrap2}, + \begin{widepage} + \cmhlistingsfromfile{demonstrations/textwrap2.tex}{\texttt{textwrap2.tex}}{lst:textwrap2} + \end{widepage} + and running the following command and continuing to use \texttt{textwrap1.yaml} from \cref{lst:textwrap1-yaml}, + \begin{commandshell} +latexindent.pl -m textwrap2.tex -o textwrap2-mod1.tex -l textwrap1.yaml +\end{commandshell} + then the output is as in \cref{lst:textwrap2-mod1}. + \begin{widepage} + \cmhlistingsfromfile{demonstrations/textwrap2-mod1.tex}{\texttt{textwrap2-mod1.tex}}{lst:textwrap2-mod1} + \end{widepage} + Furthermore, the text wrapping routine is performed after the trailing comments have been + stored, and they are also exempt from text wrapping. For example, using the file in \cref{lst:textwrap3} + \begin{widepage} + \cmhlistingsfromfile{demonstrations/textwrap3.tex}{\texttt{textwrap3.tex}}{lst:textwrap3} + \end{widepage} + and running the following command and continuing to use \texttt{textwrap1.yaml} from \cref{lst:textwrap1-yaml}, + \begin{commandshell} +latexindent.pl -m textwrap3.tex -o textwrap3-mod1.tex -l textwrap1.yaml +\end{commandshell} + then the output is as in \cref{lst:textwrap3-mod1}. + + \cmhlistingsfromfile{demonstrations/textwrap3-mod1.tex}{\texttt{textwrap3-mod1.tex}}{lst:textwrap3-mod1} + + \begin{wrapfigure}[6]{r}[0pt]{8cm} + \cmhlistingsfromfile[style=textWrapOptionsAll]{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{textWrapOptions}}{lst:textWrapOptionsAll} + \end{wrapfigure} + 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 (see \cref{lst:textWrapOptionsAll}) 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} + + \cmhlistingsfromfile{demonstrations/textwrap4.tex}{\texttt{textwrap4.tex}}{lst:textwrap4} + and using \texttt{textwrap2.yaml} from \cref{lst:textwrap2-yaml} with the following command + \begin{commandshell} +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} + \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} + + \paragraph{Summary of text wrapping} + It is important to note the following: + \begin{itemize} + \item Verbatim environments (\vref{lst:verbatimEnvironments}) and verbatim commands (\vref{lst:verbatimCommands}) will \emph{not} be affected by the text wrapping routine (see \vref{lst:textwrap2-mod1}); + \item comments will \emph{not} be affected by the text wrapping routine (see \vref{lst:textwrap3-mod1}); + \item indentation is performed \emph{after} the text wrapping routine; as such, indented code + will likely exceed any maximum value set in the \texttt{columns} field. + \end{itemize} + +\yamltitle{removeParagraphLineBreaks}*{fields} + When the \texttt{-m} switch is active \texttt{latexindent.pl} has the ability to remove line breaks + from within paragraphs; the behaviour is controlled by the \texttt{removeParagraphLineBreaks} field, detailed in + \cref{lst:removeParagraphLineBreaks}. Thank you to \cite{jowens} for shaping and assisting with the testing of this feature. + + \cmhlistingsfromfile[style=removeParagraphLineBreaks]{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{removeParagraphLineBreaks}}{lst:removeParagraphLineBreaks} + + This routine can be turned on \emph{globally} for \emph{every} code block type known to \texttt{latexindent.pl} + (see \vref{tab:code-blocks}) by using the \texttt{all} switch; by default, this switch is \emph{off}. Assuming + that the \texttt{all} switch is off, then the routine can be controlled on a per-code-block-type basis, and + within that, on a per-name basis. We will consider examples of each of these in turn, but + before we do, let's specify what \texttt{latexindent.pl} considers as a paragraph: + \begin{itemize} + \item it must begin on its own line with either an alphabetic or numeric character, and not with any of the + code-block types detailed in \vref{tab:code-blocks}; + \item it can include line breaks, but finishes when it meets either a blank line, a \lstinline!\par! + command, or any of the user-specified settings in the \texttt{paragraphsStopAt} field, + detailed in \vref{lst:paragraphsStopAt}. + \end{itemize} + + 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} + \cmhlistingsfromfile{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} + + Upon running the command + \begin{commandshell} +latexindent.pl -m shortlines.tex -o shortlines1.tex -l remove-para1.yaml +\end{commandshell} + then we obtain the output given in \cref{lst:shortlines1}. + + \cmhlistingsfromfile{demonstrations/shortlines1.tex}{\texttt{shortlines1.tex}}{lst:shortlines1} + + Keen readers may notice that some trailing white space must be present in the file in \cref{lst:shortlines} which + has crept in to the output in \cref{lst:shortlines1}. This can be fixed using the YAML file in + \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} + 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. + + \cmhlistingsfromfile{demonstrations/shortlines1-tws.tex}{\texttt{shortlines1-tws.tex}}{lst:shortlines1-tws} + + Keeping with the settings in \cref{lst:remove-para1-yaml}, we note that the \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} + \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} + + Upon running the commands + \begin{widepage} + \begin{commandshell} +latexindent.pl -m shortlines-mand.tex -o shortlines-mand1.tex -l remove-para1.yaml +latexindent.pl -m shortlines-opt.tex -o shortlines-opt1.tex -l remove-para1.yaml +\end{commandshell} + \end{widepage} + + then we obtain the respective output given in \cref{lst:shortlines-mand1,lst:shortlines-opt1}. + + \cmhlistingsfromfile{demonstrations/shortlines-mand1.tex}{\texttt{shortlines-mand1.tex}}{lst:shortlines-mand1} + \cmhlistingsfromfile{demonstrations/shortlines-opt1.tex}{\texttt{shortlines-opt1.tex}}{lst:shortlines-opt1} + + Assuming that we turn \emph{off} the \texttt{all} switch (by setting it to \texttt{0}), then + we can control the behaviour of \texttt{removeParagraphLineBreaks} either on a per-code-block-type basis, + or on a per-name basis. + + For example, let's use the code in \cref{lst:shortlines-envs}, and consider the settings in \cref{lst:remove-para2-yaml,lst:remove-para3-yaml}; + note that in \cref{lst:remove-para2-yaml} we specify that \emph{every} environment should receive + treatment from the routine, while in \cref{lst:remove-para3-yaml} we specify that \emph{only} the + \texttt{one} environment should receive the treatment. + + \begin{minipage}{.45\linewidth} + \cmhlistingsfromfile{demonstrations/shortlines-envs.tex}{\texttt{shortlines-envs.tex}}{lst:shortlines-envs} + \end{minipage} + \hfill + \begin{minipage}{.49\linewidth} + \cmhlistingsfromfile{demonstrations/remove-para2.yaml}[MLB-TCB]{\texttt{remove-para2.yaml}}{lst:remove-para2-yaml} + \cmhlistingsfromfile{demonstrations/remove-para3.yaml}[MLB-TCB]{\texttt{remove-para3.yaml}}{lst:remove-para3-yaml} + \end{minipage} + + Upon running the commands + \begin{widepage} + \begin{commandshell} +latexindent.pl -m shortlines-envs.tex -o shortlines-envs2.tex -l remove-para2.yaml +latexindent.pl -m shortlines-envs.tex -o shortlines-envs3.tex -l remove-para3.yaml +\end{commandshell} + \end{widepage} + then we obtain the respective output given in \cref{lst:shortlines-envs2,lst:shortlines-envs3}. + + \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 \texttt{commands}, + \texttt{keyEqualsValuesBracesBrackets}, \texttt{namedGroupingBracesBrackets}, \texttt{UnNamedGroupingBracesBrackets} + are controlled by the \texttt{optionalArguments} and the \texttt{mandatoryArguments}. + + The only special case is the \texttt{masterDocument} field; this is designed for `chapter'-type files that + may contain paragraphs that are not within any other 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} + \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} + + Upon running the following command + \begin{widepage} + \begin{commandshell} +latexindent.pl -m shortlines-md.tex -o shortlines-md4.tex -l remove-para4.yaml +\end{commandshell} + \end{widepage} + then we obtain the output in \cref{lst:shortlines-md4}. + \cmhlistingsfromfile{demonstrations/shortlines-md4.tex}{\texttt{shortlines-md4.tex}}{lst:shortlines-md4} + +\yamltitle{paragraphsStopAt}*{fields} + The paragraph line break routine considers blank lines and the \lstinline|\par| command to be the end of a paragraph; + you can fine tune the behaviour of the routine further by using the \texttt{paragraphsStopAt} fields, shown in \cref{lst:paragraphsStopAt}. + + \cmhlistingsfromfile[style=paragraphsStopAt]{../defaultSettings.yaml}[MLB-TCB,width=.85\linewidth,before=\centering]{\texttt{paragraphsStopAt}}{lst:paragraphsStopAt} + + The fields specified in \texttt{paragraphsStopAt} tell \texttt{latexindent.pl} to stop the current paragraph + when it reaches a line that \emph{begins} with any of the code-block types specified as \texttt{1} in \cref{lst:paragraphsStopAt}. + By default, you'll see that the paragraph line break routine will stop when it reaches an environment at the + beginning of a line. It is \emph{not} possible to specify these fields on a per-name basis. + + Let's use the \texttt{.tex} file in \cref{lst:sl-stop}; we will, in turn, consider the settings in + \cref{lst:stop-command-yaml,lst:stop-comment-yaml}. + + \begin{minipage}{.45\linewidth} + \cmhlistingsfromfile{demonstrations/sl-stop.tex}{\texttt{sl-stop.tex}}{lst:sl-stop} + \end{minipage} + \hfill + \begin{minipage}{.49\linewidth} + \cmhlistingsfromfile{demonstrations/stop-command.yaml}[MLB-TCB]{\texttt{stop-command.yaml}}{lst:stop-command-yaml} + + \cmhlistingsfromfile{demonstrations/stop-comment.yaml}[MLB-TCB]{\texttt{stop-comment.yaml}}{lst:stop-comment-yaml} + \end{minipage} + + Upon using the settings from \vref{lst:remove-para4-yaml} and running the commands + \begin{widepage} + \begin{commandshell} +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{widepage} + we obtain the respective outputs in \crefrange{lst:sl-stop4}{lst:sl-stop4-comment}; notice in particular that: + \begin{itemize} + \item in \cref{lst:sl-stop4} the paragraph line break routine has included commands and comments; + \item in \cref{lst:sl-stop4-command} the paragraph line break routine has \emph{stopped} at the + \texttt{emph} command, because in \cref{lst:stop-command-yaml} we have specified \texttt{commands} + to be \texttt{1}, and \texttt{emph} is at the beginning of a line; + \item in \cref{lst:sl-stop4-comment} the paragraph line break routine has \emph{stopped} + at the comments, because in \cref{lst:stop-comment-yaml} we have specified \texttt{comments} + to be \texttt{1}, and the comment is at the beginning of a line. + \end{itemize} + In all outputs in \crefrange{lst:sl-stop4}{lst:sl-stop4-comment} we notice that the paragraph line break + routine has stopped at \lstinline!\begin{myenv}! because, by default, \texttt{environments} + is set to \texttt{1} in \vref{lst:paragraphsStopAt}. + + \cmhlistingsfromfile{demonstrations/sl-stop4.tex}{\texttt{sl-stop4.tex}}{lst:sl-stop4} + \cmhlistingsfromfile{demonstrations/sl-stop4-command.tex}{\texttt{sl-stop4-command.tex}}{lst:sl-stop4-command} + \cmhlistingsfromfile{demonstrations/sl-stop4-comment.tex}{\texttt{sl-stop4-comment.tex}}{lst:sl-stop4-comment} + \subsection{Poly-switches} Every other field in the \texttt{modifyLineBreaks} field uses poly-switches, and can take one of four integer values\footnote{You might like to associate one of the four circles in the logo with one of the four given values}: @@ -78,7 +343,7 @@ latexindent.pl myfile.tex -m 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. - \cmhlistingsfromfile[firstnumber=359,linerange={359-368},style=yaml-LST,numbers=left,]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,MLB-TCB]{\texttt{environments}}{lst:environments-mlb} + \cmhlistingsfromfile[style=modifylinebreaksEnv]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,MLB-TCB]{\texttt{environments}}{lst:environments-mlb} \subsubsection{Adding line breaks (poly-switches set to $1$ or $2$)} Let's begin with the simple example given in \cref{lst:env-mlb1-tex}; note that we have annotated key parts of the file using $\BeginStartsOnOwnLine$, @@ -351,7 +616,6 @@ latexindent.pl -m env-mlb5.tex -l env-mlb9.yaml,env-mlb10.yaml,env-mlb11.yaml,en \cmhlistingsfromfile{demonstrations/env-mlb5-modAll-remove-WS.tex}{\texttt{env-mlb5.tex} using \crefrange{lst:env-mlb4-mod9}{lst:env-mlb4-mod12} \emph{and} \cref{lst:removeTWS-before}}{lst:env-mlb5-modAll-remove-WS} \end{widepage} - \paragraph{Blank lines} Now let's consider the file in \cref{lst:mlb6}, which contains blank lines. 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 8ef571bc574..be953d1c5db 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 @@ -9,7 +9,7 @@ The \texttt{commandCodeBlocks} field contains a few switches detailed in \cref{lst:commandCodeBlocks}. - \cmhlistingsfromfile[firstnumber=278,linerange={278-286},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{commandCodeBlocks}}{lst:commandCodeBlocks} + \cmhlistingsfromfile[style=commandCodeBlocks]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{commandCodeBlocks}}{lst:commandCodeBlocks} \yamltitle{roundParenthesesAllowed}{0|1} 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 61216c96c7c..e7a66901f18 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 @@ -105,7 +105,7 @@ latexindent.pl -m -l=nested-env-mlb1.yaml nested-env.tex \item next, the \texttt{one} environment is found; the line break ahead of \lstinline!\end{one}! is removed because \texttt{EndStartsOnOwnLine} is set to $-1$. \end{itemize} - The indentation is done in Phase 2, and then in Phase 3, \emph{there is no option to add a line break after the \lstinline!end! statements}. + The indentation is done in Phase 2; in Phase 3 \emph{there is no option to add a line break after the \lstinline!end! statements}. We can justify this by remembering that during Phase 3, the \texttt{one} environment will be found and processed first, followed by the \texttt{two} environment. If the \texttt{two} environment were to add a line break after the \lstinline!\end{two}! statement, then \texttt{latexindent.pl} would have no way of knowing how much indentation to add to the subsequent text (in this case, \lstinline!\end{one}!). 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 908c2607b78..c26e35914f1 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 @@ -148,7 +148,7 @@ latexindent.pl myenv-args.tex -l myenv-rules4.yaml \yamltitle{noAdditionalIndentGlobal}*{fields} \begin{wrapfigure}[6]{r}[0pt]{7cm} - \cmhlistingsfromfile[firstnumber=247,linerange={247-248},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{env-noAdditionalGlobal.yaml}}{lst:noAdditionalIndentGlobal:environments} + \cmhlistingsfromfile[style=noAdditionalIndentGlobalEnv]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{noAdditionalIndentGlobal}}{lst:noAdditionalIndentGlobal:environments} \end{wrapfigure} Assuming that your environment name is not found within neither \texttt{noAdditionalIndent} nor \texttt{indentRules}, the next place that \texttt{latexindent.pl} will look is \texttt{noAdditionalIndentGlobal}, and in particular \emph{for the environments} key @@ -205,7 +205,7 @@ latexindent.pl myenv-args.tex -local mand-args-no-add-glob.yaml \yamltitle{indentRulesGlobal}*{fields} \begin{wrapfigure}[4]{r}[0pt]{7cm} - \cmhlistingsfromfile[firstnumber=263,linerange={263-264},style=yaml-LST]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{env-indentRulesGlobal.yaml}}{lst:indentRulesGlobal:environments} + \cmhlistingsfromfile[style=indentRulesGlobalEnv]{../defaultSettings.yaml}[width=.8\linewidth,before=\centering,yaml-TCB]{\texttt{indentRulesGlobal}}{lst:indentRulesGlobal:environments} \end{wrapfigure} The final check that \texttt{latexindent.pl} will make is to look for \texttt{indentRulesGlobal} as detailed in \cref{lst:indentRulesGlobal:environments}; if you change the \texttt{environments} field to anything involving horizontal space, say \lstinline!" "!, and then run the following commands 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 60063fbb2b7..42794f11f71 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 @@ -100,10 +100,10 @@ \begin{widepage} \begin{minipage}{.47\linewidth} - \cmhlistingsfromfile[firstnumber=247,linerange={247-259},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[before=\centering,yaml-TCB]{\texttt{noAdditionalIndentGlobal}}{lst:noAdditionalIndentGlobal} + \cmhlistingsfromfile[style=noAdditionalIndentGlobal]{../defaultSettings.yaml}[before=\centering,yaml-TCB]{\texttt{noAdditionalIndentGlobal}}{lst:noAdditionalIndentGlobal} \end{minipage}% \hfill \begin{minipage}{.47\linewidth} - \cmhlistingsfromfile[firstnumber=263,linerange={263-275},style=yaml-LST,numbers=left]{../defaultSettings.yaml}[before=\centering,yaml-TCB]{\texttt{indentRulesGlobal}}{lst:indentRulesGlobal} + \cmhlistingsfromfile[style=indentRulesGlobal]{../defaultSettings.yaml}[before=\centering,yaml-TCB]{\texttt{indentRulesGlobal}}{lst:indentRulesGlobal} \end{minipage}% \end{widepage} |