diff options
Diffstat (limited to 'support/latexindent')
-rw-r--r-- | support/latexindent/LatexIndent/Document.pm | 6 | ||||
-rw-r--r-- | support/latexindent/LatexIndent/Environment.pm | 8 | ||||
-rw-r--r-- | support/latexindent/LatexIndent/GetYamlSettings.pm | 1 | ||||
-rw-r--r-- | support/latexindent/LatexIndent/Item.pm | 8 | ||||
-rw-r--r-- | support/latexindent/LatexIndent/MandatoryArgument.pm | 8 | ||||
-rw-r--r-- | support/latexindent/LatexIndent/OptionalArgument.pm | 8 | ||||
-rw-r--r-- | support/latexindent/LatexIndent/Special.pm | 8 | ||||
-rw-r--r-- | support/latexindent/LatexIndent/Version.pm | 4 | ||||
-rw-r--r-- | support/latexindent/README | 2 | ||||
-rw-r--r-- | support/latexindent/defaultSettings.yaml | 5 | ||||
-rw-r--r-- | support/latexindent/documentation/latexindent.pdf | bin | 1053582 -> 1056865 bytes | |||
-rw-r--r-- | support/latexindent/documentation/latexindent.tex | 2 | ||||
-rw-r--r-- | support/latexindent/documentation/sec-default-user-local.tex | 54 | ||||
-rw-r--r-- | support/latexindent/documentation/sec-fine-tuning.tex | 2 | ||||
-rw-r--r-- | support/latexindent/documentation/title.tex | 4 | ||||
-rw-r--r-- | support/latexindent/latexindent.pl | 2 |
16 files changed, 97 insertions, 25 deletions
diff --git a/support/latexindent/LatexIndent/Document.pm b/support/latexindent/LatexIndent/Document.pm index c989b20152..5be5084729 100644 --- a/support/latexindent/LatexIndent/Document.pm +++ b/support/latexindent/LatexIndent/Document.pm @@ -247,15 +247,15 @@ sub find_objects{ } # search for environments - $logger->trace('looking for ENVIRONMENTS') if $is_t_switch_active; + $logger->trace('*looking for ENVIRONMENTS') if $is_t_switch_active; $self->find_environments if ${$self}{body} =~ m/$environmentBasicRegExp/s; # search for ifElseFi blocks - $logger->trace('looking for IFELSEFI') if $is_t_switch_active; + $logger->trace('*looking for IFELSEFI') if $is_t_switch_active; $self->find_ifelsefi if ${$self}{body} =~ m/$ifElseFiBasicRegExp/s; # search for headings (part, chapter, section, setc) - $logger->trace('looking for HEADINGS (chapter, section, part, etc)') if $is_t_switch_active; + $logger->trace('*looking for HEADINGS (chapter, section, part, etc)') if $is_t_switch_active; $self->find_heading if ${$self}{body} =~ m/$allHeadingsRegexp/s; # the ordering of finding commands and special code blocks can change diff --git a/support/latexindent/LatexIndent/Environment.pm b/support/latexindent/LatexIndent/Environment.pm index 12c8d6e191..0f51dfec56 100644 --- a/support/latexindent/LatexIndent/Environment.pm +++ b/support/latexindent/LatexIndent/Environment.pm @@ -109,6 +109,14 @@ sub tasks_particular_to_each_object{ ${${$self}{linebreaksAtEnd}}{body} = 1; } + # lookForAlignDelims: lookForChildCodeBlocks set to 0 means no child objects searched for + # see: test-cases/alignment/issue-308.tex + # + if( defined ${$self}{lookForChildCodeBlocks} and !${$self}{lookForChildCodeBlocks} ){ + $logger->trace("lookForAlignDelims: lookForChildCodeBlocks set to 0, so child objects will *NOT* be searched for") if($is_t_switch_active); + return; + } + # search for items as the first order of business $self->find_items if ${$mainSettings{indentAfterItems}}{${$self}{name}}; diff --git a/support/latexindent/LatexIndent/GetYamlSettings.pm b/support/latexindent/LatexIndent/GetYamlSettings.pm index 113106e88e..bb88a5a8b1 100644 --- a/support/latexindent/LatexIndent/GetYamlSettings.pm +++ b/support/latexindent/LatexIndent/GetYamlSettings.pm @@ -49,6 +49,7 @@ our @alignAtAmpersandInformation = ( {name=>"lookForAlignDelims",yamlname=>"de {name=>"delimiterRegEx",default=>"(?<!\\\\)(&)"}, {name=>"delimiterJustification",default=>"left"}, {name=>"leadingBlankColumn",default=>-1}, + {name=>"lookForChildCodeBlocks",default=>1}, ); sub yaml_read_settings{ diff --git a/support/latexindent/LatexIndent/Item.pm b/support/latexindent/LatexIndent/Item.pm index 4e10401ae1..d9b191d62f 100644 --- a/support/latexindent/LatexIndent/Item.pm +++ b/support/latexindent/LatexIndent/Item.pm @@ -43,17 +43,19 @@ sub construct_list_of_items{ # detail items in the log $logger->trace("*List of items: $listOfItems (see itemNames)") if $is_t_switch_active; + my $itemCanBeFollowedBy = qr/${${$mainSettings{fineTuning}}{items}}{canBeFollowedBy}/; + $itemRegExp = qr/ ( - \\((?:$listOfItems)(?:\[[^]]*?\])?(?!\S)) + \\((?:$listOfItems)(?:$itemCanBeFollowedBy)?(?!\S)) \h* (\R*)? ) ( (?: # cluster-only (), don't capture (?! - (?:\\(?:(?:$listOfItems)(?:\[[^]]*?\])?(?!\S))) # cluster-only (), don't capture - ). # any character, but not \\$item + (?:\\(?:(?:$listOfItems)(?:$itemCanBeFollowedBy)?(?!\S))) # cluster-only (), don't capture + ). # any character, but not \\$item )* ) (\R)? diff --git a/support/latexindent/LatexIndent/MandatoryArgument.pm b/support/latexindent/LatexIndent/MandatoryArgument.pm index b5b3ac8de6..a7b4e2088a 100644 --- a/support/latexindent/LatexIndent/MandatoryArgument.pm +++ b/support/latexindent/LatexIndent/MandatoryArgument.pm @@ -122,6 +122,14 @@ sub yaml_get_object_attribute_for_indentation_settings{ sub tasks_particular_to_each_object{ my $self = shift; + # lookForAlignDelims: lookForChildCodeBlocks set to 0 means no child objects searched for + # see: test-cases/alignment/issue-308-command.tex + # + if( defined ${$self}{lookForChildCodeBlocks} and !${$self}{lookForChildCodeBlocks} ){ + $logger->trace("lookForAlignDelims: lookForChildCodeBlocks set to 0, so child objects will *NOT* be searched for") if($is_t_switch_active); + return; + } + # search for ifElseFi blocks $self->find_ifelsefi if ${$self}{body} =~ m/$ifElseFiBasicRegExp/s; diff --git a/support/latexindent/LatexIndent/OptionalArgument.pm b/support/latexindent/LatexIndent/OptionalArgument.pm index fdaa549a7a..31e7b8f51e 100644 --- a/support/latexindent/LatexIndent/OptionalArgument.pm +++ b/support/latexindent/LatexIndent/OptionalArgument.pm @@ -107,6 +107,14 @@ sub create_unique_id{ sub tasks_particular_to_each_object{ my $self = shift; + # lookForAlignDelims: lookForChildCodeBlocks set to 0 means no child objects searched for + # see: test-cases/alignment/issue-308-command.tex + # + if( defined ${$self}{lookForChildCodeBlocks} and !${$self}{lookForChildCodeBlocks} ){ + $logger->trace("lookForAlignDelims: lookForChildCodeBlocks set to 0, so child objects will *NOT* be searched for") if($is_t_switch_active); + return; + } + # search for ifElseFi blocks $self->find_ifelsefi if ${$self}{body} =~ m/$ifElseFiBasicRegExp/s; diff --git a/support/latexindent/LatexIndent/Special.pm b/support/latexindent/LatexIndent/Special.pm index 4b585f42ae..8d7346324d 100644 --- a/support/latexindent/LatexIndent/Special.pm +++ b/support/latexindent/LatexIndent/Special.pm @@ -238,6 +238,14 @@ sub tasks_particular_to_each_object{ return unless(${$mainSettings{specialBeginEnd}}{specialBeforeCommand}); + # lookForAlignDelims: lookForChildCodeBlocks set to 0 means no child objects searched for + # see: test-cases/alignment/issue-308-special.tex + # + if( defined ${$self}{lookForChildCodeBlocks} and !${$self}{lookForChildCodeBlocks} ){ + $logger->trace("lookForAlignDelims: lookForChildCodeBlocks set to 0, so child objects will *NOT* be searched for") if($is_t_switch_active); + return; + } + # search for commands with arguments $self->find_commands_or_key_equals_values_braces; diff --git a/support/latexindent/LatexIndent/Version.pm b/support/latexindent/LatexIndent/Version.pm index 4d320379f9..8d774311c6 100644 --- a/support/latexindent/LatexIndent/Version.pm +++ b/support/latexindent/LatexIndent/Version.pm @@ -19,6 +19,6 @@ use warnings; use Exporter qw/import/; our @EXPORT_OK = qw/$versionNumber $versionDate/; -our $versionNumber = '3.13.2'; -our $versionDate = '2021-11-15'; +our $versionNumber = '3.13.3'; +our $versionDate = '2021-12-13'; 1 diff --git a/support/latexindent/README b/support/latexindent/README index 822d2edce1..c23ec17d7d 100644 --- a/support/latexindent/README +++ b/support/latexindent/README @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - latexindent.pl, version 3.13.2, 2021-11-15 + latexindent.pl, version 3.13.3, 2021-12-13 PERL script to indent code within environments, and align delimited environments in .tex files. diff --git a/support/latexindent/defaultSettings.yaml b/support/latexindent/defaultSettings.yaml index e8d3858084..da8cb898f2 100644 --- a/support/latexindent/defaultSettings.yaml +++ b/support/latexindent/defaultSettings.yaml @@ -1,4 +1,4 @@ -# defaultSettings.yaml for latexindent.pl, version 3.13.2, 2021-11-15 +# defaultSettings.yaml for latexindent.pl, version 3.13.3, 2021-12-13 # a script that aims to # beautify .tex, .sty, .cls files # @@ -166,6 +166,7 @@ lookForAlignDelims: dontMeasure: 0 delimiterRegEx: '(?<!\\)(&)' delimiterJustification: left + lookForChildCodeBlocks: 1 tabularx: delims: 1 longtable: 1 @@ -633,6 +634,8 @@ fineTuning: name: '(?!@?if[a-zA-Z@]*?\{)@?if[a-zA-Z@]*?' commands: name: '[+a-zA-Z@\*0-9_\:]+?' + items: + canBeFollowedBy: '(?:\[[^]]*?\])|(?:<[^>]*?>)' keyEqualsValuesBracesBrackets: name: '[a-zA-Z@\*0-9_\/.:\#-]+[a-zA-Z@\*0-9_\/.\h\{\}:\#-]*?' follow: '(?:(?<!\\)\{)|,|(?:(?<!\\)\[)' diff --git a/support/latexindent/documentation/latexindent.pdf b/support/latexindent/documentation/latexindent.pdf Binary files differindex 293588a68d..df19f75e9e 100644 --- a/support/latexindent/documentation/latexindent.pdf +++ b/support/latexindent/documentation/latexindent.pdf diff --git a/support/latexindent/documentation/latexindent.tex b/support/latexindent/documentation/latexindent.tex index eb8399c32e..f97f5f74ba 100644 --- a/support/latexindent/documentation/latexindent.tex +++ b/support/latexindent/documentation/latexindent.tex @@ -522,7 +522,7 @@ \lstdefinestyle{fineTuning}{ style=yaml-LST, - firstnumber=629,linerange={629-652}, + firstnumber=629,linerange={629-654}, numbers=left, } diff --git a/support/latexindent/documentation/sec-default-user-local.tex b/support/latexindent/documentation/sec-default-user-local.tex index ec1ae8bf21..6e92e4aeb1 100644 --- a/support/latexindent/documentation/sec-default-user-local.tex +++ b/support/latexindent/documentation/sec-default-user-local.tex @@ -138,7 +138,7 @@ copy myfile.bak4 to myfile.bak3 \texttt{latexindent.pl} will \emph{always} prioritize \texttt{verbatimEnvironments}. You can, optionally, specify - \announce*{2021-10-30}{verbatim name feature} the + \announce{2021-10-30}{verbatim name feature} the \texttt{verbatim} field using the \texttt{name} field which takes a regular expression as its argument; thank you to \cite{XuehaiPan} for contributing this feature. @@ -147,8 +147,8 @@ copy myfile.bak4 to myfile.bak3 then the listings given in \cref{lst:nameAsRegex1,lst:nameAsRegex2} are equivalent. \begin{cmhtcbraster}[raster column skip=.1\linewidth] - \cmhlistingsfromfile*{demonstrations/nameAsRegex1.yaml}[yaml-TCB]{\texttt{nameAsRegex1.yaml}}{lst:nameAsRegex1} - \cmhlistingsfromfile*{demonstrations/nameAsRegex2.yaml}[yaml-TCB]{\texttt{nameAsRegex2.yaml}}{lst:nameAsRegex2} + \cmhlistingsfromfile{demonstrations/nameAsRegex1.yaml}[yaml-TCB]{\texttt{nameAsRegex1.yaml}}{lst:nameAsRegex1} + \cmhlistingsfromfile{demonstrations/nameAsRegex2.yaml}[yaml-TCB]{\texttt{nameAsRegex2.yaml}}{lst:nameAsRegex2} \end{cmhtcbraster} With reference to \cref{lst:nameAsRegex2}: @@ -174,7 +174,7 @@ copy myfile.bak4 to myfile.bak3 example, \lstinline|\verb!x+3!| is treated as a \texttt{verbatimCommands}. You can, optionally, specify - \announce*{2021-10-30}{verbatimCommands name feature} the + \announce{2021-10-30}{verbatimCommands name feature} the \texttt{verbatimCommands} field using the \texttt{name} field which takes a regular expression as its argument; thank you to \cite{XuehaiPan} for contributing this feature. @@ -183,8 +183,8 @@ copy myfile.bak4 to myfile.bak3 \cref{lst:nameAsRegex3,lst:nameAsRegex4} are equivalent. \begin{cmhtcbraster}[raster column skip=.1\linewidth] - \cmhlistingsfromfile*{demonstrations/nameAsRegex3.yaml}[yaml-TCB]{\texttt{nameAsRegex3.yaml}}{lst:nameAsRegex3} - \cmhlistingsfromfile*{demonstrations/nameAsRegex4.yaml}[yaml-TCB]{\texttt{nameAsRegex4.yaml}}{lst:nameAsRegex4} + \cmhlistingsfromfile{demonstrations/nameAsRegex3.yaml}[yaml-TCB]{\texttt{nameAsRegex3.yaml}}{lst:nameAsRegex3} + \cmhlistingsfromfile{demonstrations/nameAsRegex4.yaml}[yaml-TCB]{\texttt{nameAsRegex4.yaml}}{lst:nameAsRegex4} \end{cmhtcbraster} With reference to \cref{lst:nameAsRegex4}: @@ -263,7 +263,7 @@ latexindent.pl -l noindent3.yaml noindent1 We will demonstrate this feature later in the documentation in \cref{lst:href3}. You can, optionally, specify - \announce*{2021-10-30}{noIndentBlock name feature} the + \announce{2021-10-30}{noIndentBlock name feature} the \texttt{noIndentBlock} field using the \texttt{name} field which takes a regular expression as its argument; thank you to \cite{XuehaiPan} for contributing this feature. @@ -273,8 +273,8 @@ latexindent.pl -l noindent3.yaml noindent1 \begin{widepage} \begin{cmhtcbraster}[raster column skip=.1\linewidth] - \cmhlistingsfromfile*{demonstrations/nameAsRegex5.yaml}[yaml-TCB]{\texttt{nameAsRegex5.yaml}}{lst:nameAsRegex5} - \cmhlistingsfromfile*{demonstrations/nameAsRegex6.yaml}[yaml-TCB]{\texttt{nameAsRegex6.yaml}}{lst:nameAsRegex6} + \cmhlistingsfromfile{demonstrations/nameAsRegex5.yaml}[yaml-TCB]{\texttt{nameAsRegex5.yaml}}{lst:nameAsRegex5} + \cmhlistingsfromfile{demonstrations/nameAsRegex6.yaml}[yaml-TCB]{\texttt{nameAsRegex6.yaml}}{lst:nameAsRegex6} \end{cmhtcbraster} \end{widepage} @@ -452,7 +452,11 @@ lookForAlignDelims: \item \announce{2020-03-21}{delimiter justification}{delimiterJustification} optionally specifies the justification for the alignment delimeters (default: left); note that this feature is only useful if you have delimiters of different lengths in the same column, - discussed in \cref{sec:delimiter-reg-ex}. + discussed in \cref{sec:delimiter-reg-ex}; + \item \announce*{2021-12-13}{lookForChildCodeBlocks feature} optionally instructs + \texttt{latexindent.pl} + to search for child code blocks or not (default: 1), discussed in + \cref{sec:lookForChildCodeBlocks}. \end{itemize} We will explore most of these features using the file \texttt{tabular2.tex} in @@ -939,6 +943,36 @@ latexindent.pl tabbing1.tex -l=delimiterRegEx5.yaml -o=+-mod5 Note that in \cref{lst:tabbing1-mod5} the second set of delimiters have been \emph{right aligned} -- it is quite subtle! +\subsection{The lookForChildCodeBlocks feature}\label{sec:lookForChildCodeBlocks} + There + \announce*{2021-12-13}{lookForChildCodeBlocks demonstration} may be scenarios in + which you would prefer to instruct \texttt{latexindent.pl} \emph{not} to search for child + blocks; in which case setting \texttt{lookForChildCodeBlocks} to 0 may be a good way to + proceed. + + Using the settings from \vref{lst:dontMeasure1} on the file in \cref{lst:tabular-DM-1} + and running the command + \begin{commandshell} +latexindent.pl tabular-DM-1.tex -l=dontMeasure1.yaml -o=+-mod1 +\end{commandshell} + gives the output in \cref{lst:tabular-DM-1-mod1}. + \begin{cmhtcbraster} + \cmhlistingsfromfile*{demonstrations/tabular-DM-1.tex}{\texttt{tabular-DM-1.tex}}{lst:tabular-DM-1} + \cmhlistingsfromfile*{demonstrations/tabular-DM-1-mod1.tex}{\texttt{tabular-DM-1-mod1.tex}}{lst:tabular-DM-1-mod1} + \end{cmhtcbraster} + + We can improve the output from \cref{lst:tabular-DM-1-mod1} by employing the settings in + \cref{lst:dontMeasure1a} + \begin{commandshell} +latexindent.pl tabular-DM-1.tex -l=dontMeasure1a.yaml -o=+-mod1a +\end{commandshell} + which gives the output in \cref{lst:dontMeasure1a}. + + \begin{cmhtcbraster} + \cmhlistingsfromfile*{demonstrations/tabular-DM-1-mod1a.tex}{\texttt{tabular-DM-1-mod1a.tex}}{lst:tabular-DM-1-mod1a} + \cmhlistingsfromfile*{demonstrations/dontMeasure1a.yaml}[yaml-TCB]{\texttt{dontMeasure1a.yaml}}{lst:dontMeasure1a} + \end{cmhtcbraster} + \subsection{Indent after items, specials and headings} \yamltitle{indentAfterItems}*{fields} The environment names specified in \texttt{indentAfterItems} tell \texttt{latexindent.pl} diff --git a/support/latexindent/documentation/sec-fine-tuning.tex b/support/latexindent/documentation/sec-fine-tuning.tex index 0a0739adc8..9aa24fd9c8 100644 --- a/support/latexindent/documentation/sec-fine-tuning.tex +++ b/support/latexindent/documentation/sec-fine-tuning.tex @@ -30,7 +30,7 @@ \end{warning} \begin{widepage} - \cmhlistingsfromfile[style=fineTuning]{../defaultSettings.yaml}[width=.95\linewidth,before=\centering,yaml-TCB]{\texttt{fineTuning}}{lst:fineTuning} + \cmhlistingsfromfile*[style=fineTuning]{../defaultSettings.yaml}[width=.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 diff --git a/support/latexindent/documentation/title.tex b/support/latexindent/documentation/title.tex index d4bfdb25f3..f1229c071a 100644 --- a/support/latexindent/documentation/title.tex +++ b/support/latexindent/documentation/title.tex @@ -8,14 +8,14 @@ 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.13.2 + \centering\ttfamily\bfseries latexindent.pl\\[1cm] Version 3.13.3 \end{tcolorbox} } \author{Chris Hughes \thanks{and contributors! See \vref{sec:contributors}. For all communication, please visit \cite{latexindent-home}.}} -\date{2021-11-15} +\date{2021-12-13} \maketitle \begin{adjustwidth}{1cm}{1cm} \small diff --git a/support/latexindent/latexindent.pl b/support/latexindent/latexindent.pl index b02c2180ff..a4987092ce 100644 --- a/support/latexindent/latexindent.pl +++ b/support/latexindent/latexindent.pl @@ -1,5 +1,5 @@ #!/usr/bin/env perl -# latexindent.pl, version 3.13.2, 2021-11-15 +# latexindent.pl, version 3.13.3, 2021-12-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 |