# defaultSettings.yaml for latexindent.pl, version 3.19.1, 2022-12-04 # a script that aims to # beautify .tex, .sty, .cls files # # (or latexindent.exe if you're on Windows) # #--------------------------------------------------------------------------------------- # 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 # #--------------------------------------------------------------------------------------- # You should feel encouraged to change anything you like in these settings, but # it would probably be better to have your own user settings # files somewhere else - remember that this file may be overwritten # when you update your tex distribution. Please see the manual linked from: # # https://github.com/cmhughes/latexindent.pl # # for details of how to create and configure your own settings files. # # Please read the manual (linked from above) first to understand what each switch does. # #--------------------------------------------------------------------------------------- # latexindent can be called to act on a file without using the file's extension, # e.g, simply # latexindent myfile # in which case the choice of file extension is chosen # according to the choices made in fileExtensionPreference # Other file extensions can be added. fileExtensionPreference: .tex: 1 .sty: 2 .cls: 3 .bib: 4 # default file extension of backup file (if -w switch is active) # for example, if your .tex file is called # myfile.tex # and you specify the backupExtension as BACKUP.bak then your # backup file will be # myfileBACKUP.bak backupExtension: .bak # only one backup per file: # - if onlyOneBackUp is 0 then, as a safety measure, # the number on the extension increments by 1 each time: # # myfile.bak0, myfile.bak1, myfile.bak2 # - if you set onlyOnebackUp to 1, then the backup file will # be overwritten each time (not recommended until you trust the script) onlyOneBackUp: 0 # some users may want a finite number of backup files, # say at most 3; in which case, they can change this maxNumberOfBackUps. # # If maxNumberOfBackUps is set to 0 (or less) then infinitely # many backups are possible, unless onlyOneBackUp is switched on maxNumberOfBackUps: 0 # some users may wish to cycle through back up files. # # for example, with maxNumberOfBackUps: 4, they may # wish to delete the oldest back up file, and keep only the most recent. # # copy myfile.bak1 to myfile.bak0 # copy myfile.bak2 to myfile.bak1 # copy myfile.bak3 to myfile.bak2 # copy myfile.bak4 to myfile.bak3 # # the back up will be written to myfile.bak4 cycleThroughBackUps: 0 # preferences for information displayed in the log file logFilePreferences: showEveryYamlRead: 1 showAmalgamatedSettings: 0 showDecorationStartCodeBlockTrace: 0 showDecorationFinishCodeBlockTrace: 0 endLogFileWith: '--------------' showGitHubInfoFooter: 1 Dumper: Terse: 1 Indent: 1 Useqq: 1 Deparse: 1 Quotekeys: 0 Sortkeys: 1 Pair: " => " # verbatim environments specified # in this field will not be changed at all! verbatimEnvironments: verbatim: 1 lstlisting: 1 minted: 1 # verbatim commands such as \verb! body !, \lstinline$something else$ verbatimCommands: verb: 1 lstinline: 1 # no indent blocks (not necessarily verbatim # environments) which are marked as %\begin{noindent} # or anything else that you detail in the following noIndentBlock: noindent: 1 cmhtest: 1 # \begin{document} and \end{document} are treated differently # by latexindent within filecontents environments fileContentsEnvironments: filecontents: 1 filecontents*: 1 # indent preamble indentPreamble: 1 # assume no preamble in cls, sty, by default lookForPreamble: .tex: 1 .sty: 0 .cls: 0 .bib: 0 # some preambles can contain \begin and \end statements # that are not in their 'standard environment block', for example, # consider the following key = values: # preheadhook={\begin{mdframed}[style=myframedstyle]}, # postfoothook=\end{mdframed}, preambleCommandsBeforeEnvironments: 0 # default value of indentation defaultIndent: " " # remove trailing whitespace from all lines removeTrailingWhitespace: beforeProcessing: 0 afterProcessing: 1 # name of code blocks that should have their body aligned at ampersand delimiters lookForAlignDelims: tabular: delims: 1 alignDoubleBackSlash: 1 spacesBeforeDoubleBackSlash: 1 multiColumnGrouping: 0 alignRowsWithoutMaxDelims: 1 spacesBeforeAmpersand: 1 spacesAfterAmpersand: 1 justification: left alignFinalDoubleBackSlash: 0 dontMeasure: 0 delimiterRegEx: '(?<!\\)(&)' delimiterJustification: left lookForChildCodeBlocks: 1 tabularx: delims: 1 longtable: 1 tabu: 1 array: 1 matrix: 1 listabla: 1 # amsmath align: 1 align*: 1 alignat: 1 alignat*: 1 aligned: 1 bmatrix: 1 Bmatrix: 1 cases: 1 flalign: 1 flalign*: 1 pmatrix: 1 vmatrix: 1 Vmatrix: 1 # mathtools cases*: 1 dcases: 1 dcases*: 1 rcases: 1 rcases*: 1 drcases: 1 drcases*: 1 # nicematrix NiceTabular: 1 NiceMatrix: 1 pNiceMatrix: 1 bNiceMatrix: 1 BNiceMatrix: 1 vNiceMatrix: 1 VNiceMatrix: 1 NiceArray: 1 pNiceArrayC: 1 bNiceArrayC: 1 BNiceArrayC: 1 vNiceArrayC: 1 VNiceArrayC: 1 NiceArrayCwithDelims: 1 pNiceArrayRC: 1 bNiceArrayRC: 1 BNiceArrayRC: 1 vNiceArrayRC: 1 VNiceArrayRC: 1 NiceArrayRCwithDelims: 1 # tabularray tblr: 1 longtblr: 1 talltblr: 1 # if you want the script to look for \item commands # and format it, as follows (for example), # \begin{itemize} # \item content here # next line is indented # next line is indented # \item another item # \end{itemize} # then populate indentAfterItems. See also itemNames indentAfterItems: itemize: 1 itemize*: 1 enumerate: 1 enumerate*: 1 description: 1 description*: 1 list: 1 # if you want to use other names for your items (for example, \part) # then populate them here; note that you can trick latexindent.pl # into indenting all kinds of commands (within environments specified in # indentAfterItems) using this technique. itemNames: item: 1 myitem: 1 # specialBeginEnd is, by default, mathmode focus, although # there's no restrictions specialBeginEnd: displayMath: begin: '\\\[' end: '\\\]' lookForThis: 1 inlineMath: begin: '(?<!\$)(?<!\\)\$(?!\$)' end: '(?<!\\)\$(?!\$)' lookForThis: 1 displayMathTeX: begin: '\$\$' end: '\$\$' lookForThis: 1 specialBeforeCommand: 0 # if you want to add indentation after # a heading, such as \part, \chapter, etc # then populate it in here - you can add # an indent rule to indentRules if you would # like something other than defaultIndent # # you can also change the level if you like, # or add your own title command indentAfterHeadings: part: indentAfterThisHeading: 0 level: 1 chapter: indentAfterThisHeading: 0 level: 2 section: indentAfterThisHeading: 0 level: 3 subsection: indentAfterThisHeading: 0 level: 4 subsection*: indentAfterThisHeading: 0 level: 4 subsubsection: indentAfterThisHeading: 0 level: 5 paragraph: indentAfterThisHeading: 0 level: 6 subparagraph: indentAfterThisHeading: 0 level: 7 # maximum indentation, off by default maximumIndentation: -1 # if you don't want to have additional indentation # in a code block, then add it to noAdditionalIndent; note that # code blocks in this field will inherit # the *current* level of indentation they just won't # get any *additional* indentation noAdditionalIndent: myexample: 0 mydefinition: 0 problem: 0 exercises: 0 mysolution: 0 foreach: 0 widepage: 0 comment: 0 document: 0 frame: 0 # if you have indent rules for particular code blocks # then you can populate them in indentRules; for example, you might just want # to use a space " " or maybe a double tab " " indentRules: myenvironment: " " anotherenvironment: " " chapter: " " section: " " item: " " myitem: " " # set noAdditionalIndent globally for codeblocks noAdditionalIndentGlobal: environments: 0 commands: 0 optionalArguments: 0 mandatoryArguments: 0 ifElseFi: 0 items: 0 keyEqualsValuesBracesBrackets: 0 namedGroupingBracesBrackets: 0 UnNamedGroupingBracesBrackets: 0 specialBeginEnd: 0 afterHeading: 0 filecontents: 0 # set indentRules globally for codeblocks; these need # to be horizontal spaces, if they are to be used indentRulesGlobal: environments: 0 commands: 0 optionalArguments: 0 mandatoryArguments: 0 ifElseFi: 0 items: 0 keyEqualsValuesBracesBrackets: 0 namedGroupingBracesBrackets: 0 UnNamedGroupingBracesBrackets: 0 specialBeginEnd: 0 afterHeading: 0 filecontents: 0 # command code block details commandCodeBlocks: roundParenthesesAllowed: 1 stringsAllowedBetweenArguments: - amalgamate: 1 - 'node' - 'at' - 'to' - 'decoration' - '\+\+' - '\-\-' - '\#\#\d' commandNameSpecial: - amalgamate: 1 - '@ifnextchar\[' # change dos line breaks into unix dos2unixlinebreaks: 1 # modifyLineBreaks will only be searched if the -m # switch is active # # poly-switch examples: # # BeginStartsOnOwnLine: # modify line breaks before a begin statement # # when set to -1, e.g # some text some text # \begin{myenvironment} # will be changed to # some text some text \begin{myenvironment} # when set to 0, the switch is ignored # when set to 1, e.g # some text some text \begin{myenvironment} # will be changed to # some text some text # \begin{myenvironment} # when set to 2, e.g # some text some text \begin{myenvironment} # will be changed to # some text some text% # \begin{myenvironment} # when set to 3, e.g # some text some text \begin{myenvironment} # will be changed to # some text some text # # \begin{myenvironment} # # BodyStartsOnOwnLine: # modify line breaks before the beginning of the body # # when set to -1, e.g # \begin{myenv} # body text body text # will be changed to # \begin{myenv}body text body text # when set to 0, the switch is ignored # when set to 1, e.g # \begin{myenv}body text body text # will be changed to # \begin{myenv} # body text body text # when set to 2, e.g # \begin{myenv}body text body text # will be changed to # \begin{myenv}% # body text body text # when set to 3, e.g # \begin{myenv}body text body text # will be changed to # \begin{myenv} # # body text body text # # EndStartsOnOwnLine: # modify line breaks before the end statement # # when set to -1, e.g # some text some text # \end{myenvironment} # will be changed to # some text some text \end{myenvironment} # when set to 0, the switch is ignored # when set to 1, e.g # some text some text \end{myenvironment} # will be changed to # some text some text # \end{myenvironment} # when set to 2, e.g # some text some text \end{myenvironment} # will be changed to # some text some text% # \end{myenvironment} # when set to 3, e.g # some text some text \end{myenvironment} # will be changed to # some text some text # # \end{myenvironment} # # EndFinishesWithLineBreak: # modify line breaks after the end statement # # when set to -1, e.g # \end{myenvironment} # some text some text # will be changed to # \end{myenvironment}some text some text # when set to 0, the switch is ignored # when set to 1, e.g # \end{myenvironment}some text some text # will be changed to # \end{myenvironment} # some text some text # when set to 2, e.g # \end{myenvironment}some text some text # will be changed to # \end{myenvironment}% # some text some text # when set to 3, e.g # \end{myenvironment}some text some text # will be changed to # \end{myenvironment} # # some text some text # # you can specify settings on a per-name basis modifyLineBreaks: preserveBlankLines: 1 condenseMultipleBlankLinesInto: 1 oneSentencePerLine: manipulateSentences: 0 removeSentenceLineBreaks: 1 multipleSpacesToSingle: 1 textWrapSentences: 0 # setting to 1 disables main textWrap routine sentenceIndent: "" sentencesFollow: par: 1 blankLine: 1 fullStop: 1 exclamationMark: 1 questionMark: 1 rightBrace: 1 commentOnPreviousLine: 1 other: 0 sentencesBeginWith: A-Z: 1 a-z: 0 other: 0 sentencesEndWith: basicFullStop: 0 betterFullStop: 1 exclamationMark: 1 questionMark: 1 other: 0 textWrapOptions: columns: 0 multipleSpacesToSingle: 1 removeBlockLineBreaks: 1 blocksFollow: headings: 1 commentOnPreviousLine: 1 par: 1 blankLine: 1 verbatim: 1 filecontents: 1 other: '\\\]|\\item(?:\h|\[)' # regex blocksBeginWith: A-Z: 1 a-z: 1 0-9: 0 other: 0 # regex blocksEndBefore: commentOnOwnLine: 1 verbatim: 1 filecontents: 1 other: '\\begin\{|\\\[|\\end\{' # regex huge: overflow # forbid mid-word line breaks separator: "" # poly-switches below here environments: BeginStartsOnOwnLine: 0 BodyStartsOnOwnLine: 0 EndStartsOnOwnLine: 0 EndFinishesWithLineBreak: 0 equation*: BeginStartsOnOwnLine: 0 BodyStartsOnOwnLine: 0 EndStartsOnOwnLine: 0 EndFinishesWithLineBreak: 0 ifElseFi: IfStartsOnOwnLine: 0 BodyStartsOnOwnLine: 0 OrStartsOnOwnLine: 0 OrFinishesWithLineBreak: 0 ElseStartsOnOwnLine: 0 ElseFinishesWithLineBreak: 0 FiStartsOnOwnLine: 0 FiFinishesWithLineBreak: 0 ifnum: IfStartsOnOwnLine: 0 BodyStartsOnOwnLine: 0 OrStartsOnOwnLine: 0 OrFinishesWithLineBreak: 0 ElseStartsOnOwnLine: 0 ElseFinishesWithLineBreak: 0 FiStartsOnOwnLine: 0 FiFinishesWithLineBreak: 0 commands: CommandStartsOnOwnLine: 0 CommandNameFinishesWithLineBreak: 0 optionalArguments: LSqBStartsOnOwnLine: 0 OptArgBodyStartsOnOwnLine: 0 RSqBStartsOnOwnLine: 0 RSqBFinishesWithLineBreak: 0 mandatoryArguments: LCuBStartsOnOwnLine: 0 MandArgBodyStartsOnOwnLine: 0 RCuBStartsOnOwnLine: 0 RCuBFinishesWithLineBreak: 0 keyEqualsValuesBracesBrackets: KeyStartsOnOwnLine: 0 EqualsStartsOnOwnLine: 0 EqualsFinishesWithLineBreak: 0 items: ItemStartsOnOwnLine: 0 ItemFinishesWithLineBreak: 0 namedGroupingBracesBrackets: NameStartsOnOwnLine: 0 NameFinishesWithLineBreak: 0 specialBeginEnd: SpecialBeginStartsOnOwnLine: 0 SpecialBodyStartsOnOwnLine: 0 SpecialEndStartsOnOwnLine: 0 SpecialEndFinishesWithLineBreak: 0 verbatim: VerbatimBeginStartsOnOwnLine: 0 VerbatimEndFinishesWithLineBreak: 0 # replacements, only active when either -r or -rr switches are active replacements: - amalgamate: 1 - this: 'latexindent.pl' that: 'pl.latexindent' lookForThis: 0 when: before # fineTuning allows you to tweak the internal pattern matching that # is central to latexindent.pl fineTuning: environments: name: '[a-zA-Z@\*0-9_\\]+' ifElseFi: 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: '(?:(?<!\\)\{)|,|(?:(?<!\\)\[)' namedGroupingBracesBrackets: name: '[0-9\.a-zA-Z@\*><]+?' follow: '\h|\R|\{|\[|\$|\)|\(' UnNamedGroupingBracesBrackets: follow: '\{|\[|,|&|\)|\(|\$' arguments: before: '(?:#\d\h*;?,?\/?)+|\<.*?\>' between: '_|\^|\*' trailingComments: notPreceededBy: '(?<!\\)' modifyLineBreaks: doubleBackSlash: '\\\\(?:\h*\[\h*\d+\h*[a-zA-Z]+\h*\])?' comma: ',' betterFullStop: |- (?x) # ignore spaces in the below (?: # \.\) # .) (?!\h*[a-z]) # not *followed by* a-z ) # | # OR (?: # (?<! # not *preceeded by* (?: # (?:[eE]\.[gG]) # e.g OR E.g OR e.G OR E.G | # (?:[iI]\.[eE]) # i.e OR I.e OR i.E OR I.E | # (?:etc) # etc ) # ) # ) # \. # . (?! # not *followed by* (?: # [a-zA-Z0-9-~,] # | # \), # ), | # \)\. # ). ) # ) #