1. Introduction¶
1.1. Thanks¶
I first created latexindent.pl
to help me format chapter files in a
big project. After I blogged about it on the TeX stack exchange (“A Perl
Script for Indenting Tex Files” 2017) I received some positive feedback
and follow-up feature requests. A big thank you to Harish Kumar Kumar
(2013) who helped to develop and test the initial versions of the
script.
The YAML
-based interface of latexindent.pl
was inspired by the
wonderful arara
tool; any similarities are deliberate, and I hope
that it is perceived as the compliment that it is. Thank you to Paulo
Cereda and the team for releasing this awesome tool; I initially worried
that I was going to have to make a GUI for latexindent.pl
, but the
release of arara
has meant there is no need.
There have been several contributors to the project so far (and hopefully more in the future!); thank you very much to the people detailed in Section 8 for their valued contributions, and thank you to those who report bugs and request features at (“Home of Latexindent.pl” 2017).
1.2. License¶
latexindent.pl
is free and open source, and it always will be; it is
released under the GNU General Public License v3.0.
Before you start using it on any important files, bear in mind that
latexindent.pl
has the option to overwrite your .tex
files. It
will always make at least one backup (you can choose how many it makes,
see ) but you should still be careful when using it. The script has been
tested on many files, but there are some known limitations (see
Section 7). You, the user, are responsible for
ensuring that you maintain backups of your files before running
latexindent.pl
on them. I think it is important at this stage to
restate an important part of the license here:
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.
There is certainly no malicious intent in releasing this script, and I do hope that it works as you expect it to; if it does not, please first of all make sure that you have the correct settings, and then feel free to let me know at (“Home of Latexindent.pl” 2017) with a complete minimum working example as I would like to improve the code as much as possible.
Before you try the script on anything important (like your thesis), test
it out on the sample files in the test-case
directory (“Home of
Latexindent.pl” 2017).
If you have used any version 2.* of ``latexindent.pl``, there are a few changes to the interface; see :numref:`app:differences` and the comments throughout this document for details.
1.3. About this documentation¶
As you read through this documentation, you will see many listings; in
this version of the documentation, there are a total of 336. This may
seem a lot, but I deem it necessary in presenting the various different
options of latexindent.pl
and the associated output that they are
capable of producing.
The different listings are presented using different styles:
demonstration .tex file
This type of listing is a .tex
file.
38 39 40 41 42 fileExtensionPreference: .tex: 1 .sty: 2 .cls: 3 .bib: 4
This type of listing is a .yaml
file; when you see line numbers
given (as here) it means that the snippet is taken directly from
defaultSettings.yaml
, discussed in detail in
Section 5.
391 392 393 modifyLineBreaks: preserveBlankLines: 1 condenseMultipleBlankLinesInto: 1
This type of listing is a .yaml
file, but it will only be relevant
when the -m
switch is active; see Section 6
for more details.
1.4. Quick start¶
If you’d like to get started with latexindent.pl
then simply type
latexindent.pl myfile.tex
from the command line. If you receive an error message such as that given in Listing 4, then you need to install the missing perl modules.
Can't locate File/HomeDir.pm in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4/darwin-thread-multi-2level /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at helloworld.pl line 10.
BEGIN failed--compilation aborted at helloworld.pl line 10.
latexindent.pl
ships with a script to help with this process; if you
run the following script, you should be prompted to install the
appropriate modules.
perl latexindent-module-installer.pl
You might also like to see https://stackoverflow.com/questions/19590042/error-cant-locate-file-homedir-pm-in-inc, for example, as well as Section 9.1.
“A Perl Script for Indenting Tex Files.” 2017. Accessed January 23. http://tex.blogoverflow.com/2012/08/a-perl-script-for-indenting-tex-files/.
“Home of Latexindent.pl.” 2017. Accessed January 23. https://github.com/cmhughes/latexindent.pl.
Kumar, Harish. 2013. “Early Version Testing.” November 10. https://github.com/harishkumarholla.