如何使用 Kile 自动缩进乳胶代码?

如何使用 Kile 自动缩进乳胶代码?

Kile 有没有办法自动纠正整个文档的乳胶代码的缩进?

如果是,我应该使用什么组合键(快捷键)或菜单?

我在 Google 上搜索了一下,但没有找到答案。提前谢谢!

答案1

我正在寻找同样的东西,但找不到。下面是我编写的 Kate 脚本,用于管理{} \begin和的缩进\end,处理转义字符。

该脚本已提交到 Kate 存储库中的 Master-branch 中。我不会在这里更新任何更改。如果检查通过,他们计划将其包含在下一个版本中。如果您想试用它,请将下面的内容保存到名为 latex.js 的文件中。在我的系统上,缩进脚本位于文件夹中:/usr/share/kde4/apps/katepart/script。重新启动 Kile 后,您会在菜单中看到“Latex”缩进选项。打开它,所有新输入的文本都会正确缩进,对于现有文档,您可以使用菜单中的“对齐”。Kile 的多行插入(例如“项目符号列表”)不由缩进器处理,但您可以在 Kile 中配置缩进。插入多行用户标签时未正确对齐,但您可以重新对齐这些行或整个文档(我使用 alt-A 下的 Align 作为快捷方式)。

如果您遇到问题请告诉我。

/** kate-script
 * name: Latex
 * author: Jeroen Vuurens <jbpvuurens at gmail.com>
 * revision: 1
 * kate-version: 3.4
 * type: indentation
 *
 * Simple indentation for Latex. This script indents sections within
 * \begin{ and \end{ parts, as well as within { and }. Parts after
 * an \ escape character are ignored for proper handling of
 * \{ \} and \%. In other cases every { is regarded as an extra
 * indent, every } as a de-indent, and everything after % is comment.
 */

// specifies the characters which should trigger indent, beside the default '\n'
var triggerCharacters = "{}";
var lineStartsClose = /^(\s*\}|\s*\\end\{)/;

function indent(line, indentWidth, character) {
  // not necessary to indent the first line
  if (line == 0)
    return -2;

  var c = document.line(line); // current line

  // Search backwards for first non-space, non-comment line.
  var prev = line;
  while (prev--) {
    if (!document.line(prev).match(/^\s*$|^%/)) {
      var previousLine = document.line(prev); // previous non-space line
      var prevIndent = document.firstVirtualColumn(prev);
      var end = document.lineLength(prev);

      var delta = 0;    // count normal openers/closers

      // Walk over openers and closers in the remainder of the previous line.
      if (previousLine.match(lineStartsClose))
        delta++; 
      var escaped = false;
      for (var i = 0; i < end; i++) {
         var char = previousLine.charAt(i);
         if (char == "\\") { // escaped affects detection of rules
            escaped = true;
            continue;
         }
         if (escaped) {
            if (char == "b" && end > i + 5 && previousLine.substr(i, 6) == "begin{" ) {
               delta++;
            } else if (char == "e" && end > i + 3 && previousLine.substr(i, 4) == "end{" ) {
               delta--;
            }
         } else {
            if (char == "%") { // ignore rest of line as comment
               break;
            } if (char == "{") {
               delta++;
            } else if (char == "}") {
               delta--;
            }
         }
         escaped = false;
      }

      // now count the number of closers in the beginning of the current line.
      if (c.match(lineStartsClose))
    delta --;
      return Math.max(0, prevIndent + delta * indentWidth);
    }
  }
  return 0;
}

// kate: space-indent on; indent-width 2; replace-tabs on;

答案2

Kile 文本编辑器继承自 KDE 通用编辑器 (Kate),它提供了一个根据某些编程语言约定设置缩进的选项:

工具 -> 缩进模式

设置模式后,使用工具->对齐来缩进选定的代码。

不幸的是,LaTeX 没有缩进样式,所以你可以

  1. 写出你自己的风格(我不知道这有多难);

  2. 要求 Kile/Kate 开发人员提供 LaTeX 样式(祝你好运);

  3. 按照 Torbjørn T. 的建议,你可以使用类似这样的包切换到与编辑器无关的解决方案乳胶压痕

相关内容