diff options
author | Karl Berry <karl@freefriends.org> | 2017-06-19 21:08:33 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-06-19 21:08:33 +0000 |
commit | c04832b03eaaffc534e100205b65081c5fbad47f (patch) | |
tree | 9e53a22d44f49bc3a843eb5acd5d605fa3815414 /Master/texmf-dist/scripts | |
parent | 4a7e4115e0329b992349b8454179645f1bda63bb (diff) |
latexindent (19jun17)
git-svn-id: svn://tug.org/texlive/trunk@44642 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts')
7 files changed, 248 insertions, 77 deletions
diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm index 195909ac280..14f141b060c 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/AlignmentAtAmpersand.pm @@ -106,8 +106,7 @@ sub modify_line_breaks_settings{ } sub tasks_particular_to_each_object{ - my $self = shift; -# $self->remove_leading_space; + return; } sub create_unique_id{ @@ -130,7 +129,8 @@ sub align_at_ampersand{ } # create an array of zeros - my @columnSizes = (0) x ($maximumNumberOfAmpersands+1); + my @maximumColumnWidth = (0) x ($maximumNumberOfAmpersands+1); + my @maximumColumnWidthMC = (0) x ($maximumNumberOfAmpersands+1); # array for the new body my @formattedBody; @@ -144,29 +144,56 @@ sub align_at_ampersand{ $endPiece = $1; } + # remove any trailing comments + my $trailingComments; + if($_ =~ m/$trailingCommentRegExp/ ){ + $_ =~ s/($trailingCommentRegExp)//; + $trailingComments = $1; + } + + # count the number of ampersands in the current row my $numberOfAmpersands = () = $_ =~ /(?<!\\)&/g; - if($numberOfAmpersands == $maximumNumberOfAmpersands){ - # remove any trailing comments - my $trailingComments; - if($_ =~ m/$trailingCommentRegExp/ ){ - $_ =~ s/($trailingCommentRegExp)//; - $trailingComments = $1; - } + + # switch for multiColumGrouping + my $multiColumnGrouping = ($_ =~ m/\\multicolumn/ and ${$self}{multiColumnGrouping}); + my $alignRowsWithoutMaxDelims = ${$self}{alignRowsWithoutMaxDelims}; + + # by default, the stripped row is simply the current row + my $strippedRow = $_; + + # loop through the columns + my $columnCount = 0; + + # format switch off by default + my $formatRow = 0; + + # store the column sizes for measuring and comparison purposes + my @columnSizes = (); + + # we will store the columns in each row + my @columns; + + # need to have at least one ampersand, or contain a \multicolumn command + if( ($_ =~ m/(?<!\\)&/ and ( ($numberOfAmpersands == $maximumNumberOfAmpersands)||$multiColumnGrouping||$alignRowsWithoutMaxDelims ) ) + or + ($multiColumnGrouping and $alignRowsWithoutMaxDelims) ){ + # remove space at the beginning of a row, surrounding &, and at the end of the row + $_ =~ s/(?<!\\)\h*(?<!\\)&\h*/&/g; + $_ =~ s/^\h*//g; + $_ =~ s/\h*$//g; # if the line finishes with an &, then add an empty space, # otherwise the column count is off $_ .= ($_ =~ m/(?<!\\)&$/ ? " ":q()); - # loop through the columns - my $columnCount = 0; - my $strippedRow = ''; - foreach my $column (split(/(?<!\\)&/,$_)){ - # remove leading space - $column =~ s/^\h*//; - - # remove trailing space - $column =~ s/\h*$//; + # store the columns, which are either split by & + # or otherwise simply the current line, if for example, the current line simply + # contains \multicolumn{8}... \\ (see test-cases/texexchange/366841-zarko.tex, for example) + @columns = ($_ =~ m/(?<!\\)&/ ? split(/(?<!\\)&/,$_) : $_); + # empty the white-space-stripped row + $strippedRow = ''; + foreach my $column (@columns){ # if a column has finished with a \ then we need to add a trailing space, # otherwise the \ can be put next to &. See test-cases/texexchange/112343-gonzalo for example $column .= ($column =~ m/\\$/ ? " ": q()); @@ -175,93 +202,230 @@ sub align_at_ampersand{ # reference: http://www.perl.com/pub/2012/05/perlunicook-unicode-column-width-for-printing.html my $gcs = Unicode::GCString->new($column); my $columnWidth = $gcs->columns(); - $columnSizes[$columnCount] = $columnWidth if($columnWidth > $columnSizes[$columnCount]); + + # multicolumn cells need a bit of special care + if($multiColumnGrouping and $column =~ m/\\multicolumn\{(\d+)\}/ and $1>1){ + $maximumColumnWidthMC[$columnCount] = $columnWidth if( defined $maximumColumnWidthMC[$columnCount] and ($columnWidth > $maximumColumnWidthMC[$columnCount]) ); + $columnWidth = 1 if($multiColumnGrouping and ($column =~ m/\\multicolumn\{(\d+)\}/)); + } + + # store the maximum column width + $maximumColumnWidth[$columnCount] = $columnWidth if( defined $maximumColumnWidth[$columnCount] and ($columnWidth > $maximumColumnWidth[$columnCount]) ); # put the row back together, using " " if the column is empty $strippedRow .= ($columnCount>0 ? "&" : q() ).($columnWidth > 0 ? $column: " "); + # store the column width + $columnSizes[$columnCount] = $columnWidth; + # move on to the next column - $columnCount++; + if($multiColumnGrouping and ($column =~ m/\\multicolumn\{(\d+)\}/)){ + # columns that are within the multiCol statement receive a width of -1 + for my $i (($columnCount+1)..($columnCount+$1)){ + $columnSizes[$i] = -1; + } + # update the columnCount to account for the multiColSpan + $columnCount += $1; + } else { + $columnCount++; + } } - # store the information - push(@formattedBody,{ - row=>$strippedRow, - format=>1, - endPiece=>($endPiece ? $endPiece :q() ), - trailingComment=>($trailingComments ? $trailingComments :q() )}); - } else { - # otherwise simply store the row - push(@formattedBody,{ - row=>$_.($endPiece ? $endPiece : q() ), - format=>0}); + # toggle the formatting switch + $formatRow = 1; + } elsif($endPiece and ${$self}{alignDoubleBackSlash}){ + # otherwise a row could contain no ampersands, but would still desire + # the \\ to be aligned, see test-cases/alignment/multicol-no-ampersands.tex + @columns = $_; + $formatRow = 1; } + + # store the information + push(@formattedBody,{ + row=>$strippedRow, + format=>$formatRow, + multiColumnGrouping=>$multiColumnGrouping, + columnSizes=>\@columnSizes, + columns=>\@columns, + endPiece=>($endPiece ? $endPiece :q() ), + trailingComment=>($trailingComments ? $trailingComments :q() )}); } # output some of the info so far to the log file - $self->logger("Column sizes of horizontally stripped formatted block (${$self}{name}): @columnSizes") if $is_t_switch_active; - - # README: printf( formatting, expression) - # - # formatting has the form %-50s & %-20s & %-19s - # (the numbers have been made up for example) - # the - symbols mean that each column should be left-aligned - # the numbers represent how wide each column is - # the s represents string - # the & needs to be inserted - - # join up the maximum string lengths using "s %-" - my $fmtstring = join("s & %-",@columnSizes); - - # add %- to the beginning and an s to the end - $fmtstring = "%-".$fmtstring."s "; + $self->logger("Maximum column sizes of horizontally stripped formatted block (${$self}{name}): @maximumColumnWidth") if $is_t_switch_active; + $self->logger("align at ampersand: ${$self}{lookForAlignDelims}") if $is_t_switch_active; + $self->logger("align at \\\\: ${$self}{alignDoubleBackSlash}") if $is_t_switch_active; + $self->logger("spaces before \\\\: ${$self}{spacesBeforeDoubleBackSlash}") if $is_t_switch_active; + $self->logger("multi column grouping: ${$self}{multiColumnGrouping}") if $is_t_switch_active; + $self->logger("align rows without maximum delimeters: ${$self}{alignRowsWithoutMaxDelims}") if $is_t_switch_active; + + # acount for multicolumn grouping, if the appropriate switch is set + if(${$self}{multiColumnGrouping}){ + foreach(@formattedBody){ + if(${$_}{format} and ${$_}{row} !~ m/^\h*$/){ + + # set a columnCount, which will vary depending on multiColumnGrouping settings or not + my $columnCount=0; + + # loop through the columns + foreach my $column (@{${$_}{columns}}){ + # calculate the width of the current column + my $gcs = Unicode::GCString->new($column); + my $columnWidth = $gcs->columns(); + + # check for multiColumnGrouping + if(${$_}{multiColumnGrouping} and $column =~ m/\\multicolumn\{(\d+)\}/ and $1>1){ + my $multiColSpan = $1; + + # for example, \multicolumn{3}{c}{<stuff>} spans 3 columns, so + # the maximum column needs to account for this (subtract 1 because of 0 index in perl arrays) + my $columnMax = $columnCount+$multiColSpan-1; + + # groupingWidth contains the total width of column sizes grouped + # underneath the \multicolumn{} statement + my $groupingWidth = 0; + my $maxGroupingWidth = 0; + foreach (@formattedBody){ + $groupingWidth = 0; + + # loop through the columns covered by the multicolumn statement + foreach my $j ($columnCount..$columnMax){ + if( defined @{${$_}{columnSizes}}[$j] + and + @{${$_}{columnSizes}}[$j] >= 0 + and + ${$_}{format} + ){ + $groupingWidth += (defined $maximumColumnWidth[$j] ? $maximumColumnWidth[$j] : 0); + } else { + $groupingWidth = 0; + } + } + + # update the maximum grouping width + $maxGroupingWidth = $groupingWidth if($groupingWidth > $maxGroupingWidth); + + # the cells that receive multicolumn grouping need extra padding; in particular + # the *last* cell of the multicol group receives the padding, hence the + # use of $columnMax below + if(defined @{${$_}{columnSizes}}[$columnMax] and ($columnWidth > ($groupingWidth+3*($multiColSpan-1)) ) and @{${$_}{columnSizes}}[$columnMax] >= 0){ + @{${$_}{multiColPadding}}[$columnMax] = $columnWidth-$groupingWidth-3*($multiColSpan-1); + + # also need to account for maximum column width *including* other multicolumn statements + if($maximumColumnWidthMC[$columnCount]>$columnWidth){ + @{${$_}{multiColPadding}}[$columnMax] += ($maximumColumnWidthMC[$columnCount]-$columnWidth); + } + } + } + # update it to account for the ampersands and 1 space either side of ampersands (total of 3) + $maxGroupingWidth += ($multiColSpan-1)*3; + + # store the maxGroupingWidth for use in the next loop + @{${$_}{maxGroupingWidth}}[$columnCount] = $maxGroupingWidth; + + # update the columnCount to account for the multiColSpan + $columnCount += $multiColSpan - 1; + } + + # increase the column count + $columnCount++; + } + } + } + } - # log file info - $self->logger("Formatting string is: $fmtstring",'heading') if $is_t_switch_active; + # the maximum row width will be used in aligning (or not) the \\ + my $maximumRowWidth = 0; - # finally, reformat the body + # now that the multicolumn widths have been accounted for, loop through the body foreach(@formattedBody){ if(${$_}{format} and ${$_}{row} !~ m/^\h*$/){ + # set a columnCount, which will vary depending on multiColumnGrouping settings or not my $columnCount=0; my $tmpRow = q(); - foreach my $column (split(/(?<!\\)&/,${$_}{row})){ - # grab the column width + + # loop through the columns + foreach my $column (@{${$_}{columns}}){ + # calculate the width of the current column my $gcs = Unicode::GCString->new($column); my $columnWidth = $gcs->columns(); - # reset the padding + # reset the column padding my $padding = q(); - if($columnWidth < $columnSizes[$columnCount]){ - $padding = " " x ($columnSizes[$columnCount] - $columnWidth); + + # check for multiColumnGrouping + if(${$_}{multiColumnGrouping} and $column =~ m/\\multicolumn\{(\d+)\}/ and $1>1){ + my $multiColSpan = $1; + + # groupingWidth contains the total width of column sizes grouped + # underneath the \multicolumn{} statement + my $maxGroupingWidth = ${${$_}{maxGroupingWidth}}[$columnCount]; + + # set the padding; we need + # maximum( $maxGroupingWidth, $maximumColumnWidthMC[$columnCount] ) + # rather than load another module to give the 'max' function, I use the ternary operator + my $maxValueToUse = 0; + if(defined $maximumColumnWidthMC[$columnCount]){ + $maxValueToUse = ($maxGroupingWidth>$maximumColumnWidthMC[$columnCount]?$maxGroupingWidth:$maximumColumnWidthMC[$columnCount]); + } else { + $maxValueToUse = $maxGroupingWidth; + } + + # calculate the padding + $padding = " " x ( $maxValueToUse >= $columnWidth ? $maxValueToUse - $columnWidth : 0 ); + + # update the columnCount to account for the multiColSpan + $columnCount += $multiColSpan - 1; + } else { + # compare the *current* column width with the *maximum* column width + $padding = " " x (defined $maximumColumnWidth[$columnCount] and $maximumColumnWidth[$columnCount] >= $columnWidth ? $maximumColumnWidth[$columnCount] - $columnWidth : 0); } - $tmpRow .= $column.$padding." & "; + + # either way, the row is formed of "COLUMN + PADDING" + $tmpRow .= $column.$padding.(defined @{${$_}{multiColPadding}}[$columnCount] ? " " x @{${$_}{multiColPadding}}[$columnCount]: q())." & "; $columnCount++; } # remove the final & - $tmpRow =~ s/\s&\s$/ /; + $tmpRow =~ s/\h&\h*$/ /; + $tmpRow =~ s/\h*$/ /; # replace the row with the formatted row ${$_}{row} = $tmpRow; - # format the row, and put the trailing \\ and trailing comments back into the row - ${$_}{row} .= (${$_}{endPiece} ? ${$_}{endPiece} :q() ).(${$_}{trailingComment}? ${$_}{trailingComment} : q() ); + # update the maximum row width + my $gcs = Unicode::GCString->new($tmpRow); + ${$_}{rowWidth} = $gcs->columns(); + $maximumRowWidth = ${$_}{rowWidth} if(${$_}{rowWidth} > $maximumRowWidth); + } + } - # possibly remove space ahead of \\ - ${$_}{row} =~ s/\h*\\\\/\\\\/ if(!${$self}{alignDoubleBackSlash}); + # final loop through to get \\ aligned + foreach (@formattedBody){ + # reset the padding + my $padding = q(); - # possibly insert spaces infront of \\ - if(defined ${$self}{spacesBeforeDoubleBackSlash} and ${$self}{spacesBeforeDoubleBackSlash}>=0 and !${$self}{alignDoubleBackSlash}){ - my $horizontalSpaceToInsert = " "x (${$self}{spacesBeforeDoubleBackSlash}); - ${$_}{row} =~ s/\h*\\\\/$horizontalSpaceToInsert\\\\/; + # possibly adjust the padding + if(${$_}{format} and ${$_}{row} !~ m/^\h*$/){ + # remove trailing horizontal space if ${$self}{alignDoubleBackSlash} is set to 0 + ${$_}{row} =~ s/\h*$// if (!${$self}{alignDoubleBackSlash}); + + # format spacing infront of \\ + if(defined ${$self}{spacesBeforeDoubleBackSlash} and ${$self}{spacesBeforeDoubleBackSlash}<0 and !${$self}{alignDoubleBackSlash}){ + # zero spaces (possibly resulting in un-aligned \\) + $padding = q(); + } elsif(defined ${$self}{spacesBeforeDoubleBackSlash} and ${$self}{spacesBeforeDoubleBackSlash}>=0 and !${$self}{alignDoubleBackSlash}){ + # specified number of spaces (possibly resulting in un-aligned \\) + $padding = " " x (${$self}{spacesBeforeDoubleBackSlash}); + } else { + # aligned \\ + $padding = " " x ($maximumRowWidth - ${$_}{rowWidth}); } } - # if we have an empty row, it's possible that it originally had an end piece (e.g \\) and/or trailing comments - if(${$_}{row} =~ m/^\h*$/){ - ${$_}{row} .= (${$_}{endPiece} ? ${$_}{endPiece} :q() ).(${$_}{trailingComment}? ${$_}{trailingComment} : q() ); - } + # format the row, and put the trailing \\ and trailing comments back into the row + ${$_}{row} .= $padding.(${$_}{endPiece} ? ${$_}{endPiece} :q() ).(${$_}{trailingComment}? ${$_}{trailingComment} : q() ); } # to the log file diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm index 1a9b9c1f9f8..e4b5f12c54d 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/GetYamlSettings.pm @@ -14,7 +14,6 @@ package LatexIndent::GetYamlSettings; # Chris Hughes, 2017 # # For all communication, please visit: https://github.com/cmhughes/latexindent.pl -use LatexIndent::Switches qw/$is_t_switch_active $is_tt_switch_active/; use strict; use warnings; use LatexIndent::Switches qw/%switches $is_m_switch_active $is_t_switch_active $is_tt_switch_active/; @@ -241,6 +240,8 @@ sub get_indentation_settings_for_this_object{ ${${previouslyFoundSettings}{$storageName}}{lookForAlignDelims} = ${$self}{lookForAlignDelims} if(defined ${$self}{lookForAlignDelims}); ${${previouslyFoundSettings}{$storageName}}{alignDoubleBackSlash} = ${$self}{alignDoubleBackSlash} if(defined ${$self}{alignDoubleBackSlash}); ${${previouslyFoundSettings}{$storageName}}{spacesBeforeDoubleBackSlash} = ${$self}{spacesBeforeDoubleBackSlash} if(defined ${$self}{spacesBeforeDoubleBackSlash}); + ${${previouslyFoundSettings}{$storageName}}{multiColumnGrouping} = ${$self}{multiColumnGrouping} if(defined ${$self}{multiColumnGrouping}); + ${${previouslyFoundSettings}{$storageName}}{alignRowsWithoutMaxDelims} = ${$self}{alignRowsWithoutMaxDelims} if(defined ${$self}{alignRowsWithoutMaxDelims}); # some objects, e.g ifElseFi, can have extra assignments, e.g ElseStartsOnOwnLine # these need to be stored as well! @@ -280,10 +281,14 @@ sub alignment_at_ampersand_settings{ ${$self}{lookForAlignDelims} = (defined ${${$masterSettings{lookForAlignDelims}}{$name}}{delims} ) ? ${${$masterSettings{lookForAlignDelims}}{$name}}{delims} : 1; ${$self}{alignDoubleBackSlash} = (defined ${${$masterSettings{lookForAlignDelims}}{$name}}{alignDoubleBackSlash} ) ? ${${$masterSettings{lookForAlignDelims}}{$name}}{alignDoubleBackSlash} : 1; ${$self}{spacesBeforeDoubleBackSlash} = (defined ${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeDoubleBackSlash} ) ? ${${$masterSettings{lookForAlignDelims}}{$name}}{spacesBeforeDoubleBackSlash} : -1; + ${$self}{multiColumnGrouping} = (defined ${${$masterSettings{lookForAlignDelims}}{$name}}{multiColumnGrouping} ) ? ${${$masterSettings{lookForAlignDelims}}{$name}}{multiColumnGrouping} : 0; + ${$self}{alignRowsWithoutMaxDelims} = (defined ${${$masterSettings{lookForAlignDelims}}{$name}}{alignRowsWithoutMaxDelims} ) ? ${${$masterSettings{lookForAlignDelims}}{$name}}{alignRowsWithoutMaxDelims} : 1; } else { ${$self}{lookForAlignDelims} = 1; ${$self}{alignDoubleBackSlash} = 1; ${$self}{spacesBeforeDoubleBackSlash} = -1; + ${$self}{multiColumnGrouping} = 0; + ${$self}{alignRowsWithoutMaxDelims} = 1; } return; } diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm index a98cebf05e2..04753f81a87 100755 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm @@ -36,7 +36,7 @@ our $ifElseFiRegExp = qr/ (\R*) ) # begin statement, e.g \ifnum, \ifodd ( - \\(?!if)|\R|\h|\#|!-! # up until a \\, linebreak # or !-!, which is + \\(?!if)|[0-9]|\R|\h|\#|!-! # up until a \\, linebreak # or !-!, which is ) # part of the tokens used for latexindent ( (?: diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm index eca7ae7aad5..336ec34c7ad 100644 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/LogFile.pm @@ -41,7 +41,7 @@ sub processSwitches{ my $self = shift; # details of the script to log file - $self->logger("$FindBin::Script version 3.1, a script to indent .tex files",'heading'); + $self->logger("$FindBin::Script version 3.2, a script to indent .tex files",'heading'); $self->logger("$FindBin::Script lives here: $FindBin::RealBin/"); # time the script is used @@ -50,7 +50,7 @@ sub processSwitches{ if(scalar(@ARGV) < 1 or $switches{showhelp}) { print <<ENDQUOTE -latexindent.pl version 3.1 +latexindent.pl version 3.2 usage: latexindent.pl [options] [file][.tex|.sty|.cls|.bib|...] -h, --help help (see the documentation for detailed instructions and examples) diff --git a/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm b/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm index f7469504e10..d18281f4ee9 100755 --- a/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm +++ b/Master/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm @@ -35,7 +35,7 @@ sub construct_grouping_braces_brackets_regexp{ # store the regular expresssion for matching and replacing $grouping_braces_regexp = qr/ ( - \h|\R|\{|\[|\$|\) + \h|\R|\{|\[|\$|\)|\( ) ( [0-9a-zA-Z@\*><]+? # lowercase|uppercase letters, @, *, numbers, forward slash, dots diff --git a/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml b/Master/texmf-dist/scripts/latexindent/defaultSettings.yaml index fbc5401c3e9..916efb46dd3 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.1, 2017-05-27 +# defaultSettings.yaml for latexindent.pl, version 3.2, 2017-06-19 # a script that aims to # beautify .tex, .sty, .cls files # @@ -140,6 +140,8 @@ lookForAlignDelims: delims: 1 alignDoubleBackSlash: 1 spacesBeforeDoubleBackSlash: 2 + multiColumnGrouping: 0 + alignRowsWithoutMaxDelims: 1 tabularx: delims: 1 longtable: 1 diff --git a/Master/texmf-dist/scripts/latexindent/latexindent.pl b/Master/texmf-dist/scripts/latexindent/latexindent.pl index b4474a14c49..107d4fab865 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.1, 2017-05-27 +# latexindent.pl, version 3.2, 2017-06-19 # # 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 |