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 没有缩进样式,所以你可以
写出你自己的风格(我不知道这有多难);
要求 Kile/Kate 开发人员提供 LaTeX 样式(祝你好运);
按照 Torbjørn T. 的建议,你可以使用类似这样的包切换到与编辑器无关的解决方案乳胶压痕。