Skip to content

Instantly share code, notes, and snippets.

@dpo
Created December 19, 2022 21:47
Show Gist options
  • Save dpo/eae6ca229611d73e162ec3a2ec9aca3a to your computer and use it in GitHub Desktop.
Save dpo/eae6ca229611d73e162ec3a2ec9aca3a to your computer and use it in GitHub Desktop.
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: 1
level: 3
subsection:
indentAfterThisHeading: 1
level: 4
subsection*:
indentAfterThisHeading: 1
level: 4
subsubsection:
indentAfterThisHeading: 1
level: 5
paragraph:
indentAfterThisHeading: 1
level: 6
subparagraph:
indentAfterThisHeading: 1
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:
widepage: 1
document: 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 "\t\t"
indentRules:
chapter: " "
section: " "
subsection: " "
paragraph: " "
item: " "
# set noAdditionalIndent globally for codeblocks
noAdditionalIndentGlobal:
environments: 0
commands: 1
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: 1
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: "\$|\\("
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:
DBSStartsOnOwnLine: 0
DBSFinishesWithLineBreak: 1
BeginStartsOnOwnLine: 1
BodyStartsOnOwnLine: 2
EndStartsOnOwnLine: 1
EndFinishesWithLineBreak: 1
equation*:
BeginStartsOnOwnLine: 1
BodyStartsOnOwnLine: 1
EndStartsOnOwnLine: 1
EndFinishesWithLineBreak: 1
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: 1
namedGroupingBracesBrackets:
NameStartsOnOwnLine: 0
NameFinishesWithLineBreak: 0
specialBeginEnd:
displayMath:
SpecialBeginStartsOnOwnLine: 1
SpecialBodyStartsOnOwnLine: 1
SpecialEndStartsOnOwnLine: 1
SpecialEndFinishesWithLineBreak: 1
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-~,] #
| #
\), # ),
| #
\)\. # ).
) #
) #
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment