latexindent и конечные комментарии

latexindent и конечные комментарии

В макросах имеет смысл ставить знаки процента в конце строки, чтобы избежать любых символов переноса строки в определении макроса. Например, макрос с многострочным определением может выглядеть так:

\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
}

Связанный контент