summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-09-15 21:42:19 +0000
committerKarl Berry <karl@freefriends.org>2018-09-15 21:42:19 +0000
commit21b240fd974a27aad7d7c48cb027718a9e471f5b (patch)
tree85440b7e5cc9b6ca36f33a504377851ed0ac6e19 /Master
parent6646c4d916203b724973f3d5adbd597577cdb1b4 (diff)
latexindent (15sep18)
git-svn-id: svn://tug.org/texlive/trunk@48673 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rwxr-xr-xMaster/bin/win32/latexindent.exebin11459600 -> 11461685 bytes
-rw-r--r--Master/texmf-dist/doc/support/latexindent/README2
-rw-r--r--Master/texmf-dist/doc/support/latexindent/latexindent.pdfbin733304 -> 740178 bytes
-rw-r--r--Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex60
-rw-r--r--Master/texmf-dist/doc/support/latexindent/title.tex2
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm7
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm227
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm362
-rw-r--r--Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm4
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/defaultSettings.yaml2
-rwxr-xr-xMaster/texmf-dist/scripts/latexindent/latexindent.pl2
11 files changed, 425 insertions, 243 deletions
diff --git a/Master/bin/win32/latexindent.exe b/Master/bin/win32/latexindent.exe
index f72957ab12e..20818652b55 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 0e4600ed256..ca5d51c1672 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.5, 2018-08-13
+ latexindent.pl, version 3.5.1, 2018-09-15
PERL script to indent code within environments, and align delimited
environments in .tex files.
diff --git a/Master/texmf-dist/doc/support/latexindent/latexindent.pdf b/Master/texmf-dist/doc/support/latexindent/latexindent.pdf
index d93a76ea06b..4e7d556041b 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/sec-the-m-switch.tex b/Master/texmf-dist/doc/support/latexindent/sec-the-m-switch.tex
index 3677af3f169..0ff58be3153 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
@@ -357,7 +357,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
@@ -650,7 +650,7 @@ latexindent.pl multiple-sentences4 -m -l=item-rules2.yaml
\end{minipage}
\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.
@@ -679,6 +679,48 @@ latexindent.pl multiple-sentences5 -m -l=sentence-wrap1.yaml
\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
+ means that you may need to tweak \vref{lst:sentencesEndWith}. Let's explore this in
+ relation to \cref{lst:multiple-sentences6}.
+
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences6.tex}{\texttt{multiple-sentences6.tex}}{lst:multiple-sentences6}
+
+ By default, \texttt{latexindent.pl} will find the full-stop within the first
+ \texttt{item}, which means that, upon running the following commands
+ \begin{commandshell}
+latexindent.pl multiple-sentences6 -m -l=sentence-wrap1.yaml
+latexindent.pl multiple-sentences6 -m -l=sentence-wrap1.yaml -y="modifyLineBreaks:oneSentencePerLine:sentenceIndent:''"
+\end{commandshell}
+ we receive the respective output in \cref{lst:multiple-sentences6-mod1} and
+ \cref{lst:multiple-sentences6-mod2}.
+
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences6-mod1.tex}{\texttt{multiple-sentences6-mod1.tex} using \cref{lst:sentence-wrap1-yaml}}{lst:multiple-sentences6-mod1}
+
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences6-mod2.tex}{\texttt{multiple-sentences6-mod2.tex} using \cref{lst:sentence-wrap1-yaml} and no sentence indentation}{lst:multiple-sentences6-mod2}
+
+ We note that \cref{lst:multiple-sentences6-mod1} the \texttt{itemize} code block has
+ \emph{not} been indented appropriately. This is because the
+ oneSentencePerLine has been instructed to store sentences (because
+ \cref{lst:sentence-wrap1-yaml}); each sentence is then searched for code blocks.
+
+ We can tweak the settings in \vref{lst:sentencesEndWith} to ensure that full stops are
+ not followed by \texttt{item} commands, and that the end of sentences
+ contains \lstinline!\end{itemize}! as in \cref{lst:itemize-yaml} (if you intend to use this, ensure that you
+ remove the line breaks from the \texttt{other} field).
+
+ \cmhlistingsfromfile*[style=yaml-LST]*{demonstrations/itemized.yaml}[MLB-TCB]{\texttt{itemize.yaml}}{lst:itemize-yaml}
+
+ Upon running
+ \begin{commandshell}
+latexindent.pl multiple-sentences6 -m -l=sentence-wrap1.yaml,itemize.yaml
+\end{commandshell}
+ we receive the output in \cref{lst:multiple-sentences6-mod3}.
+
+ \cmhlistingsfromfile*{demonstrations/multiple-sentences6-mod3.tex}{\texttt{multiple-sentences6-mod3.tex} using \cref{lst:sentence-wrap1-yaml} and \cref{lst:itemize-yaml}}{lst:multiple-sentences6-mod3}
+
+ Notice that the sentence has received indentation, and that the
+ \texttt{itemize} code block has been found and indented correctly.
+
\subsection{removeParagraphLineBreaks: modifying line breaks for paragraphs}\label{subsec:removeparagraphlinebreaks}
When the \texttt{-m} switch is active \texttt{latexindent.pl} has the
ability to remove line breaks%
@@ -821,7 +863,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}.
@@ -889,7 +931,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.
@@ -929,7 +971,7 @@ latexindent.pl -m textwrap7.tex -l=textwrap12.yaml -o=+-mod12
\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
@@ -1044,7 +1086,7 @@ 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%%%%%
+ 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
@@ -1142,7 +1184,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
@@ -1425,7 +1467,7 @@ latexindent.pl -m env-mlb7.tex -l env-mlb13.yaml,env-mlb14.yaml,UnpreserveBlankL
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} \\
+ \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 \\
@@ -1464,7 +1506,7 @@ latexindent.pl -m env-mlb7.tex -l env-mlb13.yaml,env-mlb14.yaml,UnpreserveBlankL
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} \\
+ \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 \\
diff --git a/Master/texmf-dist/doc/support/latexindent/title.tex b/Master/texmf-dist/doc/support/latexindent/title.tex
index f1aaa7a4b7e..c5bc77b483b 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.5
+ \centering\ttfamily\bfseries latexindent.pl\\[1cm] Version 3.5.1
\end{tcolorbox}
}
\author{Chris Hughes \thanks{and contributors!
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
index 1b9d3811fb9..491b9bce7f3 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Document.pm
@@ -27,7 +27,8 @@ use LatexIndent::GetYamlSettings qw/yaml_read_settings yaml_modify_line_breaks_s
use LatexIndent::FileExtension qw/file_extension_check/;
use LatexIndent::BackUpFileProcedure qw/create_back_up_file/;
use LatexIndent::BlankLines qw/protect_blank_lines unprotect_blank_lines condense_blank_lines/;
-use LatexIndent::ModifyLineBreaks qw/modify_line_breaks_body modify_line_breaks_end remove_line_breaks_begin adjust_line_breaks_end_parent text_wrap remove_paragraph_line_breaks construct_paragraph_reg_exp one_sentence_per_line text_wrap_remove_paragraph_line_breaks/;
+use LatexIndent::ModifyLineBreaks qw/modify_line_breaks_body modify_line_breaks_end remove_line_breaks_begin adjust_line_breaks_end_parent text_wrap remove_paragraph_line_breaks construct_paragraph_reg_exp text_wrap_remove_paragraph_line_breaks/;
+use LatexIndent::Sentence qw/one_sentence_per_line/;
use LatexIndent::TrailingComments qw/remove_trailing_comments put_trailing_comments_back_in add_comment_symbol construct_trailing_comment_regexp/;
use LatexIndent::HorizontalWhiteSpace qw/remove_trailing_whitespace remove_leading_space/;
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/;
@@ -95,7 +96,6 @@ sub operate_on_file{
$self->find_file_contents_environments_and_preamble;
$self->dodge_double_backslash;
$self->remove_leading_space;
- $self->one_sentence_per_line if $is_m_switch_active;
$self->process_body_of_text;
$self->remove_trailing_whitespace(when=>"after");
$self->condense_blank_lines;
@@ -180,6 +180,9 @@ sub process_body_of_text{
sub find_objects{
my $self = shift;
+ # one sentence per line: sentences are objects, as of V3.5.1
+ $self->one_sentence_per_line if ($is_m_switch_active and ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{manipulateSentences});
+
# search for environments
$logger->trace('looking for ENVIRONMENTS') if $is_t_switch_active;
$self->find_environments if ${$self}{body} =~ m/$environmentBasicRegExp/s;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
index afa1360369d..2faa53b2920 100644
--- a/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/ModifyLineBreaks.pm
@@ -25,7 +25,7 @@ use LatexIndent::TrailingComments qw/$trailingCommentRegExp/;
use LatexIndent::Switches qw/$is_m_switch_active $is_t_switch_active $is_tt_switch_active/;
use LatexIndent::Item qw/$listOfItems/;
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 one_sentence_per_line text_wrap_remove_paragraph_line_breaks/;
+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/;
our $paragraphRegExp = q();
@@ -327,230 +327,5 @@ sub remove_paragraph_line_breaks{
}
}
-sub one_sentence_per_line{
- my $self = shift;
-
- return unless ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{manipulateSentences};
- $logger->trace("*One sentence per line regular expression construction: (see oneSentencePerLine: manipulateSentences)") if $is_t_switch_active;
-
- # sentences FOLLOW
- # sentences FOLLOW
- # sentences FOLLOW
- my $sentencesFollow = q();
-
- while( my ($sentencesFollowEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}){
- if($yesNo){
- if($sentencesFollowEachPart eq "par"){
- $sentencesFollowEachPart = qr/\R?\\par/s;
- } elsif ($sentencesFollowEachPart eq "blankLine"){
- $sentencesFollowEachPart = qr/
- (?:\A(?:$tokens{blanklines}\R)+) # the order of each of these
- | # is important, as (like always) the first
- (?:\G(?:$tokens{blanklines}\R)+) # thing to be matched will
- | # be accepted
- (?:(?:$tokens{blanklines}\h*\R)+)
- |
- \R{2,}
- |
- \G
- /sx;
- } elsif ($sentencesFollowEachPart eq "fullStop"){
- $sentencesFollowEachPart = qr/\./s;
- } elsif ($sentencesFollowEachPart eq "exclamationMark"){
- $sentencesFollowEachPart = qr/\!/s;
- } elsif ($sentencesFollowEachPart eq "questionMark"){
- $sentencesFollowEachPart = qr/\?/s;
- } elsif ($sentencesFollowEachPart eq "rightBrace"){
- $sentencesFollowEachPart = qr/\}/s;
- } elsif ($sentencesFollowEachPart eq "commentOnPreviousLine"){
- $sentencesFollowEachPart = qr/$trailingCommentRegExp\h*\R/s;
- } elsif ($sentencesFollowEachPart eq "other"){
- $sentencesFollowEachPart = qr/$yesNo/;
- }
- $sentencesFollow .= ($sentencesFollow eq '' ? q() : "|").qr/$sentencesFollowEachPart/sx;
- }
- }
- # if blankLine is not active from sentencesFollow then we need to set up the
- # beginning of the string, but make sure that it is *not* followed by a
- # blank line token, or a blank line
- if(!${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
- $sentencesFollow .= ($sentencesFollow eq '' ? q() : "|").
- qr/
- \G
- (?!$tokens{blanklines})
- /sx;
- }
-
- if(${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
- $sentencesFollow = ($sentencesFollow eq '' ? q() : qr/(?:$sentencesFollow)(?:\h|\R)*/sx );
- } else {
- $sentencesFollow = ($sentencesFollow eq '' ? q() : qr/(?:$sentencesFollow)(?:\h*\R?)/sx );
- }
-
-
- $logger->trace("Sentences follow regexp:") if $is_tt_switch_active;
- $logger->trace($sentencesFollow) if $is_tt_switch_active;
-
- # sentences BEGIN with
- # sentences BEGIN with
- # sentences BEGIN with
- my $sentencesBeginWith = q();
-
- while( my ($sentencesBeginWithEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesBeginWith}}){
- if($yesNo){
- if($sentencesBeginWithEachPart eq "A-Z"){
- $logger->trace("sentence BEGINS with capital letters (see oneSentencePerLine:sentencesBeginWith:A-Z)") if $is_t_switch_active;
- $sentencesBeginWithEachPart = qr/(?!(?:$tokens{blanklines}|$tokens{verbatim}|$tokens{preamble}))[A-Z]/;
- } elsif ($sentencesBeginWithEachPart eq "a-z"){
- $logger->trace("sentence BEGINS with lower-case letters (see oneSentencePerLine:sentencesBeginWith:a-z)") if $is_t_switch_active;
- $sentencesBeginWithEachPart = qr/[a-z]/;
- } elsif ($sentencesBeginWithEachPart eq "other"){
- $logger->trace("sentence BEGINS with other $yesNo (reg exp) (see oneSentencePerLine:sentencesBeginWith:other)") if $is_t_switch_active;
- $sentencesBeginWithEachPart = qr/$yesNo/;
- }
- $sentencesBeginWith .= ($sentencesBeginWith eq "" ? q(): "|" ).$sentencesBeginWithEachPart;
- }
- }
- $sentencesBeginWith = qr/$sentencesBeginWith/;
-
- # sentences END with
- # sentences END with
- # sentences END with
- ${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}{basicFullStop} = 0 if ${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}{betterFullStop};
- my $sentencesEndWith = q();
-
- while( my ($sentencesEndWithEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}){
- if($yesNo){
- if($sentencesEndWithEachPart eq "basicFullStop"){
- $logger->trace("sentence ENDS with full stop (see oneSentencePerLine:sentencesEndWith:basicFullStop") if $is_t_switch_active;
- $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]))/;
- } elsif ($sentencesEndWithEachPart eq "exclamationMark"){
- $logger->trace("sentence ENDS with exclamation mark (see oneSentencePerLine:sentencesEndWith:exclamationMark)") if $is_t_switch_active;
- $sentencesEndWithEachPart = qr/!/;
- } elsif ($sentencesEndWithEachPart eq "questionMark"){
- $logger->trace("sentence ENDS with question mark (see oneSentencePerLine:sentencesEndWith:questionMark)") if $is_t_switch_active;
- $sentencesEndWithEachPart = qr/\?/;
- } elsif ($sentencesEndWithEachPart eq "other"){
- $logger->trace("sentence ENDS with other $yesNo (reg exp) (see oneSentencePerLine:sentencesEndWith:other)") if $is_t_switch_active;
- $sentencesEndWithEachPart = qr/$yesNo/;
- }
- $sentencesEndWith .= ($sentencesEndWith eq "" ? q(): "|" ).$sentencesEndWithEachPart;
- }
- }
- $sentencesEndWith = qr/$sentencesEndWith/;
-
- # the OVERALL sentence regexp
- # the OVERALL sentence regexp
- # the OVERALL sentence regexp
- $logger->trace("Overall sentences end with regexp:") if $is_tt_switch_active;
- $logger->trace($sentencesEndWith) if $is_tt_switch_active;
-
- $logger->trace("Finding sentences...") if $is_t_switch_active;
-
- my $notWithinSentence = qr/$trailingCommentRegExp/s;
-
- # if
- #
- # modifyLineBreaks
- # oneSentencePerLine
- # sentencesFollow
- # blankLine
- #
- # is set to 0 then we need to *exclude* the $tokens{blanklines} from the sentence routine,
- # otherwise we could begin a sentence with $tokens{blanklines}.
- if(!${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
- $notWithinSentence .= "|".qr/(?:\h*\R?$tokens{blanklines})/s;
- }
-
- # similarly for \par
- if(${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{par}){
- $notWithinSentence .= "|".qr/(?:\R?\\par)/s;
- }
-
- # initiate the sentence counter
- my $sentenceCounter;
- my @sentenceStorage;
-
- # make the sentence manipulation
- ${$self}{body} =~ s/((?:$sentencesFollow))
- (\h*)
- (?!$notWithinSentence)
- ((?:$sentencesBeginWith).*?)
- ($sentencesEndWith)/
- my $beginning = $1;
- my $h_space = ($2?$2:q());
- my $middle = $3;
- my $end = $4;
- my $trailingComments = q();
- # remove trailing comments from within the body of the sentence
- while($middle =~ m|$trailingCommentRegExp|){
- $middle =~ s|\h*($trailingCommentRegExp)||s;
- $trailingComments .= $1;
- }
- # remove line breaks from within a sentence
- $middle =~ s|
- (?!\A) # not at the *beginning* of a match
- (\h*)\R # possible horizontal space, then line break
- |$1?$1:" ";|esgx if ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{removeSentenceLineBreaks};
- $middle =~ s|$tokens{blanklines}\h*\R?|$tokens{blanklines}\n|sg;
- $logger->trace("follows: $beginning") if $is_tt_switch_active;
- $logger->trace("sentence: $middle") if $is_tt_switch_active;
- $logger->trace("ends with: $end") if $is_tt_switch_active;
- # reconstruct the sentence
- $sentenceCounter++;
- push(@sentenceStorage,{id=>$tokens{sentence}.$sentenceCounter.$tokens{endOfToken},value=>$middle.$end});
- $beginning.$h_space.$tokens{sentence}.$sentenceCounter.$tokens{endOfToken}.$trailingComments;
- /xsge;
-
- # loop back through the sentenceStorage and replace with the sentence, adjusting line breaks
- # before and after appropriately
- while( my $sentence = pop @sentenceStorage){
- my $sentenceStorageID = ${$sentence}{id};
- my $sentenceStorageValue = ${$sentence}{value};
-
- # option to text wrap (and option to indent) sentences
- if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences}){
- my $sentenceObj = LatexIndent::Document->new(body=>$sentenceStorageValue,
- name=>"sentence",
- modifyLineBreaksYamlName=>"sentence",
- );
-
- # text wrapping
- $sentenceObj->yaml_get_columns;
- $sentenceObj->text_wrap;
-
- # indentation of sentences
- if(${$sentenceObj}{body} =~ m/
- (.*?) # content of first line
- \R # first line break
- (.*$) # rest of body
- /sx){
- my $bodyFirstLine = $1;
- my $remainingBody = $2;
- my $indentation = ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent};
- $logger->trace("first line of sencent: $bodyFirstLine") if $is_tt_switch_active;
- $logger->trace("remaining body (before indentation):\n'$remainingBody'") if($is_tt_switch_active);
-
- # add the indentation to all the body except first line
- $remainingBody =~ s/^/$indentation/mg unless($remainingBody eq ''); # add indentation
- $logger->trace("remaining body (after indentation):\n$remainingBody'") if($is_tt_switch_active);
-
- # put the body back together
- ${$sentenceObj}{body} = $bodyFirstLine."\n".$remainingBody;
- }
- $sentenceStorageValue = ${$sentenceObj}{body};
- };
- # sentence at the very END
- ${$self}{body} =~ s/\h*$sentenceStorageID\h*$/$sentenceStorageValue/s;
- # sentence at the very BEGINNING
- ${$self}{body} =~ s/^$sentenceStorageID\h*\R?/$sentenceStorageValue\n/s;
- # all other sentences
- ${$self}{body} =~ s/\R?\h*$sentenceStorageID\h*\R?/\n$sentenceStorageValue\n/s;
- }
-
-}
1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
new file mode 100644
index 00000000000..c7bc39c284b
--- /dev/null
+++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/Sentence.pm
@@ -0,0 +1,362 @@
+package LatexIndent::Sentence;
+# 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_m_switch_active/;
+use LatexIndent::LogFile qw/$logger/;
+use LatexIndent::Environment qw/$environmentBasicRegExp/;
+use LatexIndent::IfElseFi qw/$ifElseFiBasicRegExp/;
+use LatexIndent::Heading qw/$allHeadingsRegexp/;
+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/one_sentence_per_line/;
+our $sentenceCounter;
+
+sub one_sentence_per_line{
+ my $self = shift;
+
+ $logger->trace("*One sentence per line regular expression construction: (see oneSentencePerLine: manipulateSentences)") if $is_t_switch_active;
+
+ # sentences FOLLOW
+ # sentences FOLLOW
+ # sentences FOLLOW
+ my $sentencesFollow = q();
+
+ while( my ($sentencesFollowEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}){
+ if($yesNo){
+ if($sentencesFollowEachPart eq "par"){
+ $sentencesFollowEachPart = qr/\R?\\par/s;
+ } elsif ($sentencesFollowEachPart eq "blankLine"){
+ $sentencesFollowEachPart = qr/
+ (?:\A(?:$tokens{blanklines}\R)+) # the order of each of these
+ | # is important, as (like always) the first
+ (?:\G(?:$tokens{blanklines}\R)+) # thing to be matched will
+ | # be accepted
+ (?:(?:$tokens{blanklines}\h*\R)+)
+ |
+ \R{2,}
+ |
+ \G
+ /sx;
+ } elsif ($sentencesFollowEachPart eq "fullStop"){
+ $sentencesFollowEachPart = qr/\./s;
+ } elsif ($sentencesFollowEachPart eq "exclamationMark"){
+ $sentencesFollowEachPart = qr/\!/s;
+ } elsif ($sentencesFollowEachPart eq "questionMark"){
+ $sentencesFollowEachPart = qr/\?/s;
+ } elsif ($sentencesFollowEachPart eq "rightBrace"){
+ $sentencesFollowEachPart = qr/\}/s;
+ } elsif ($sentencesFollowEachPart eq "commentOnPreviousLine"){
+ $sentencesFollowEachPart = qr/$trailingCommentRegExp\h*\R/s;
+ } elsif ($sentencesFollowEachPart eq "other"){
+ $sentencesFollowEachPart = qr/$yesNo/;
+ }
+ $sentencesFollow .= ($sentencesFollow eq '' ? q() : "|").qr/$sentencesFollowEachPart/sx;
+ }
+ }
+ # if blankLine is not active from sentencesFollow then we need to set up the
+ # beginning of the string, but make sure that it is *not* followed by a
+ # blank line token, or a blank line
+ if(!${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
+ $sentencesFollow .= ($sentencesFollow eq '' ? q() : "|").
+ qr/
+ \G
+ (?!$tokens{blanklines})
+ /sx;
+ }
+
+ if(${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
+ $sentencesFollow = ($sentencesFollow eq '' ? q() : qr/(?:$sentencesFollow)(?:\h|\R)*/sx );
+ } else {
+ $sentencesFollow = ($sentencesFollow eq '' ? q() : qr/(?:$sentencesFollow)(?:\h*\R?)/sx );
+ }
+
+
+ $logger->trace("Sentences follow regexp:") if $is_tt_switch_active;
+ $logger->trace($sentencesFollow) if $is_tt_switch_active;
+
+ # sentences BEGIN with
+ # sentences BEGIN with
+ # sentences BEGIN with
+ my $sentencesBeginWith = q();
+
+ while( my ($sentencesBeginWithEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesBeginWith}}){
+ if($yesNo){
+ if($sentencesBeginWithEachPart eq "A-Z"){
+ $logger->trace("sentence BEGINS with capital letters (see oneSentencePerLine:sentencesBeginWith:A-Z)") if $is_t_switch_active;
+ $sentencesBeginWithEachPart = qr/(?!(?:$tokens{blanklines}|$tokens{verbatim}|$tokens{preamble}))[A-Z]/;
+ } elsif ($sentencesBeginWithEachPart eq "a-z"){
+ $logger->trace("sentence BEGINS with lower-case letters (see oneSentencePerLine:sentencesBeginWith:a-z)") if $is_t_switch_active;
+ $sentencesBeginWithEachPart = qr/[a-z]/;
+ } elsif ($sentencesBeginWithEachPart eq "other"){
+ $logger->trace("sentence BEGINS with other $yesNo (reg exp) (see oneSentencePerLine:sentencesBeginWith:other)") if $is_t_switch_active;
+ $sentencesBeginWithEachPart = qr/$yesNo/;
+ }
+ $sentencesBeginWith .= ($sentencesBeginWith eq "" ? q(): "|" ).$sentencesBeginWithEachPart;
+ }
+ }
+ $sentencesBeginWith = qr/$sentencesBeginWith/;
+
+ # sentences END with
+ # sentences END with
+ # sentences END with
+ ${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}{basicFullStop} = 0 if ${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}{betterFullStop};
+ my $sentencesEndWith = q();
+
+ while( my ($sentencesEndWithEachPart,$yesNo)= each %{${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesEndWith}}){
+ if($yesNo){
+ if($sentencesEndWithEachPart eq "basicFullStop"){
+ $logger->trace("sentence ENDS with full stop (see oneSentencePerLine:sentencesEndWith:basicFullStop") if $is_t_switch_active;
+ $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]))/;
+ } elsif ($sentencesEndWithEachPart eq "exclamationMark"){
+ $logger->trace("sentence ENDS with exclamation mark (see oneSentencePerLine:sentencesEndWith:exclamationMark)") if $is_t_switch_active;
+ $sentencesEndWithEachPart = qr/!/;
+ } elsif ($sentencesEndWithEachPart eq "questionMark"){
+ $logger->trace("sentence ENDS with question mark (see oneSentencePerLine:sentencesEndWith:questionMark)") if $is_t_switch_active;
+ $sentencesEndWithEachPart = qr/\?/;
+ } elsif ($sentencesEndWithEachPart eq "other"){
+ $logger->trace("sentence ENDS with other $yesNo (reg exp) (see oneSentencePerLine:sentencesEndWith:other)") if $is_t_switch_active;
+ $sentencesEndWithEachPart = qr/$yesNo/;
+ }
+ $sentencesEndWith .= ($sentencesEndWith eq "" ? q(): "|" ).$sentencesEndWithEachPart;
+ }
+ }
+ $sentencesEndWith = qr/$sentencesEndWith/;
+
+ # the OVERALL sentence regexp
+ # the OVERALL sentence regexp
+ # the OVERALL sentence regexp
+ $logger->trace("Overall sentences end with regexp:") if $is_tt_switch_active;
+ $logger->trace($sentencesEndWith) if $is_tt_switch_active;
+
+ $logger->trace("Finding sentences...") if $is_t_switch_active;
+
+ my $notWithinSentence = qr/$trailingCommentRegExp/s;
+
+ # if
+ #
+ # modifyLineBreaks
+ # oneSentencePerLine
+ # sentencesFollow
+ # blankLine
+ #
+ # is set to 0 then we need to *exclude* the $tokens{blanklines} from the sentence routine,
+ # otherwise we could begin a sentence with $tokens{blanklines}.
+ if(!${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{blankLine}){
+ $notWithinSentence .= "|".qr/(?:\h*\R?$tokens{blanklines})/s;
+ }
+
+ # similarly for \par
+ if(${${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentencesFollow}}{par}){
+ $notWithinSentence .= "|".qr/(?:\R?\\par)/s;
+ }
+
+ # initiate the sentence counter
+ my @sentenceStorage;
+
+ # make the sentence manipulation
+ ${$self}{body} =~ s/((?:$sentencesFollow))
+ (\h*)
+ (?!$notWithinSentence)
+ ((?:$sentencesBeginWith).*?)
+ ($sentencesEndWith)
+ (\h*)? # possibly followed by horizontal space
+ (\R)? # possibly followed by a line break
+ ($trailingCommentRegExp)? # possibly followed by trailing comments
+ /
+ my $beginning = $1;
+ my $h_space = ($2?$2:q());
+ my $middle = $3;
+ my $end = $4;
+ my $trailing = ($5?$5:q()).($6?$6:q()).($7?$7:q());
+ my $lineBreaksAtEnd = ($6? 1 : ($7?1:0) );
+ my $trailingComments = q();
+ # remove trailing comments from within the body of the sentence
+ if (${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{removeSentenceLineBreaks}){
+ while($middle =~ m|$trailingCommentRegExp|){
+ $middle =~ s|\h*($trailingCommentRegExp)||s;
+ $trailingComments .= $1;
+ }
+ }
+ # remove line breaks from within a sentence
+ $middle =~ s|
+ (?!\A) # not at the *beginning* of a match
+ (\h*)\R # possible horizontal space, then line break
+ |$1?$1:" ";|esgx if ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{removeSentenceLineBreaks};
+ $middle =~ s|$tokens{blanklines}\h*\R?|$tokens{blanklines}\n|sg;
+ $logger->trace("follows: $beginning") if $is_tt_switch_active;
+ $logger->trace("sentence: $middle") if $is_tt_switch_active;
+ $logger->trace("ends with: $end") if $is_tt_switch_active;
+ # if indentation is specified for sentences, then we treat
+ # them as objects; otherwise we don't
+ my $replacementText = q();
+ if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} =~ m|\h+|){
+ my $sentenceObj = LatexIndent::Sentence->new(
+ name=>"sentence",
+ begin=>q(),
+ body=>$middle.$end,
+ end=>q(),
+ indentation=>${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent},
+ modifyLineBreaksYamlName=>"sentence",
+ BeginStartsOnOwnLine=>1,
+ );
+ # log file output
+ $logger->trace("*sentence found: $middle.$end") if $is_t_switch_active;
+
+ # the settings and storage of most objects has a lot in common
+ $self->get_settings_and_store_new_object($sentenceObj);
+ ${@{${$self}{children}}[-1]}{replacementText} = $beginning.$h_space.$tokens{sentence}.$sentenceCounter.$tokens{endOfToken}.$trailingComments.$trailing.($lineBreaksAtEnd ? q() : "\n");
+ $replacementText = ${@{${$self}{children}}[-1]}{replacementText};
+ } else {
+ $sentenceCounter++;
+ push(@sentenceStorage,{id=>$tokens{sentence}.$sentenceCounter.$tokens{endOfToken},value=>$middle.$end});
+ $replacementText = $beginning.$h_space.$tokens{sentence}.$sentenceCounter.$tokens{endOfToken}.$trailingComments.$trailing.($lineBreaksAtEnd ? q() : "\n");
+ };
+ $replacementText;
+ /xsge;
+
+ if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} !~ m/\h+/){
+ # loop back through the sentenceStorage and replace with the sentence, adjusting line breaks
+ # before and after appropriately
+ while( my $sentence = pop @sentenceStorage){
+ my $sentenceStorageID = ${$sentence}{id};
+ my $sentenceStorageValue = ${$sentence}{value};
+
+ # option to text wrap (and option to indent) sentences
+ if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences}){
+ my $sentenceObj = LatexIndent::Document->new(body=>$sentenceStorageValue,
+ name=>"sentence",
+ modifyLineBreaksYamlName=>"sentence",
+ );
+
+ # text wrapping
+ $sentenceObj->yaml_get_columns;
+ $sentenceObj->text_wrap;
+
+ # indentation of sentences
+ if(${$sentenceObj}{body} =~ m/
+ (.*?) # content of first line
+ \R # first line break
+ (.*$) # rest of body
+ /sx){
+ my $bodyFirstLine = $1;
+ my $remainingBody = $2;
+ my $indentation = ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent};
+ $logger->trace("first line of sencent: $bodyFirstLine") if $is_tt_switch_active;
+ $logger->trace("remaining body (before indentation):\n'$remainingBody'") if($is_tt_switch_active);
+
+ # add the indentation to all the body except first line
+ $remainingBody =~ s/^/$indentation/mg unless($remainingBody eq ''); # add indentation
+ $logger->trace("remaining body (after indentation):\n$remainingBody'") if($is_tt_switch_active);
+
+ # put the body back together
+ ${$sentenceObj}{body} = $bodyFirstLine."\n".$remainingBody;
+ }
+ $sentenceStorageValue = ${$sentenceObj}{body};
+ };
+ # sentence at the very END
+ ${$self}{body} =~ s/\h*$sentenceStorageID\h*$/$sentenceStorageValue/s;
+ # sentence at the very BEGINNING
+ ${$self}{body} =~ s/^$sentenceStorageID\h*\R?/$sentenceStorageValue\n/s;
+ # all other sentences
+ ${$self}{body} =~ s/\R?\h*$sentenceStorageID\h*\R?/\n$sentenceStorageValue\n/s;
+ }
+ }
+}
+
+sub create_unique_id{
+ my $self = shift;
+
+ $sentenceCounter++;
+ ${$self}{id} = "$tokens{sentence}$sentenceCounter";
+ return;
+}
+
+sub tasks_particular_to_each_object{
+ my $self = shift;
+
+ # option to text wrap (and option to indent) sentences
+ if(${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{textWrapSentences}){
+ $self->yaml_get_columns;
+ $self->text_wrap;
+ }
+
+ # search for environments
+ $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;
+ $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;
+ $self->find_heading if ${$self}{body} =~ m/$allHeadingsRegexp/s;
+
+ # the ordering of finding commands and special code blocks can change
+ $self->find_commands_or_key_equals_values_braces_and_special if ${$self}{body} =~ m/$specialBeginAndBracesBracketsBasicRegExp/s;
+}
+
+sub indent_body{
+ return unless ${$masterSettings{modifyLineBreaks}{oneSentencePerLine}}{sentenceIndent} =~ m/\h+/;
+
+ my $self = shift;
+
+ # indentation of sentences
+ if(${$self}{body} =~ m/
+ (.*?) # content of first line
+ \R # first line break
+ (.*$) # rest of body
+ /sx){
+ my $bodyFirstLine = $1;
+ my $remainingBody = $2;
+ my $indentation = ${$self}{indentation};
+ $logger->trace("first line of sentence $bodyFirstLine") if $is_tt_switch_active;
+ $logger->trace("remaining body (before indentation):\n'$remainingBody'") if($is_tt_switch_active);
+
+ # add the indentation to all the body except first line
+ $remainingBody =~ s/^/$indentation/mg unless($remainingBody eq ''); # add indentation
+ $logger->trace("remaining body (after indentation):\n$remainingBody'") if($is_tt_switch_active);
+
+ # put the body back together
+ ${$self}{body} = $bodyFirstLine."\n".$remainingBody;
+ }
+}
+
+sub yaml_get_indentation_settings_for_this_object{
+ return;
+}
+
+sub add_surrounding_indentation_to_begin_statement{
+ # specific method for sentences
+ my $self = shift;
+
+ my $surroundingIndentation = ${$self}{surroundingIndentation};
+ ${$self}{body} =~ s/^(\h*)?/$surroundingIndentation/s; # add indentation
+
+}
+
+
+1;
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/Version.pm
index 989d4f73fb1..41ca222bb3f 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.5';
-our $versionDate = '2018-08-13';
+our $versionNumber = '3.5.1';
+our $versionDate = '2018-09-15';
1
diff --git a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml
index a1ef1172aca..704ae17418f 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.5, 2018-08-13
+# defaultSettings.yaml for latexindent.pl, version 3.5.1, 2018-09-15
# a script that aims to
# beautify .tex, .sty, .cls files
#
diff --git a/Master/texmf-dist/scripts/latexindent/latexindent.pl b/Master/texmf-dist/scripts/latexindent/latexindent.pl
index 0945273d857..60148de7ab3 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.5, 2018-08-13
+# latexindent.pl, version 3.5.1, 2018-09-15
#
# 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