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

为什么会产生这些额外的换行符?我该如何关闭此行为?(百分号是常见的做法,对吧?或者我可以安全地删除它们吗?)

本地设置.yaml

defaultIndent: '  '
onlyOneBackUp: 1
modifyLineBreaks:
textWrapOptions:
    columns: 78

latexindent 参数

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
}

相关内容