
В макросах имеет смысл ставить знаки процента в конце строки, чтобы избежать любых символов переноса строки в определении макроса. Например, макрос с многострочным определением может выглядеть так:
\newcommand{\provideName}[3]{%
\providecommand{#1}{#2}%
\addto\captionsenglish{\renewcommand{#1}{#2}}%
\addto\captionsngerman{\renewcommand{#1}{#3}}%
}
Теперь я использую latexindent
инструмент для автоматического форматирования кода. Обычно это работает довольно хорошо, но в этом случае отформатированный код выглядит так:
\newcommand{\provideName}[3]{%
\providecommand{#1}{#2}%
\addto\captionsenglish{\renewcommand{#1}{#2}}%
\addto\captionsngerman{\renewcommand{#1}{#3}}%
}
Почему генерируются эти дополнительные переводы строк? И как отключить это поведение? (Знаки процента — это обычная практика, не так ли? Или я могу безопасно удалить их?)
localSettings.yaml
defaultIndent: ' '
onlyOneBackUp: 1
modifyLineBreaks:
textWrapOptions:
columns: 78
параметры латекса
latexindent -w -m --cruft=build --local=./localSettings.yaml myfile.sty
Обновлен localSettings.yaml
По предложению cmhughes я добавил perCodeBlockBasis
возможность получить:
defaultIndent: ' '
onlyOneBackUp: 1
modifyLineBreaks:
textWrapOptions:
columns: 78
perCodeBlockBasis: 1
В результате получается следующий код в texlive-2017:
\newcommand{\provideName}[3]{%
\providecommand{#1}{#2}%
\addto\captionsenglish{\renewcommand{#1}{#2}}%latexindenttrailingcomment36-EN
D
\addto\captionsngerman{\renewcommand{#1}{#3}}%latexindenttrailingcomment37-EN
D
}