TexStudio 有一个很好的选项来对齐给定的表格环境,通过LaTeX > Manipulate Tables > Align Columns
从菜单中选择或单击工具栏上的此图标:
所以像这样粗糙的事情
\documentclass[10pt,a4paper]{article}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
fo1 & fo2 & fo3 \\
\hline
foob1 & foob2 & foob3 \\
\hline
foobar1 & foobar2 & foobar3 \\
\hline
\end{tabular}
\end{document}
变得更具可读性:
\documentclass[10pt,a4paper]{article}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
fo1 & fo2 & fo3 \\ \hline
foob1 & foob2 & foob3 \\ \hline
foobar1 & foobar2 & foobar3 \\ \hline
\end{tabular}
\end{document}
但我觉得自己很愚蠢,因为我找不到美化代码的方法一次显示文档中的所有表格通过选择此选项,即使选择了整个文档,我也只能一次自动对齐一个表格,因此我需要手动单击所有表格。
我是否遗漏了什么?
类似的问题也出现在符号对齐方面=
,例如在 BIB 文件中,
@article{Foo1970,
title = {Lorem Ipsum},
pages = {451},
number = {42},
date = {1970-01-01},
journaltitle = {TUG},
author = {Foo, Bar},
}
应该看起来像
@article{Foo1970,
title = {Lorem Ipsum},
pages = {451},
number = {42},
date = {1970-01-01},
journaltitle = {TUG},
author = {Foo, Bar},
}
或者在将某些参数传递给包时在序言中:
\usepackage[
math-style = ISO,
bold-style = ISO,
partial = upright,
nabla = upright
]{unicode-math}
视觉效果更好:
\usepackage[
math-style = ISO,
bold-style = ISO,
partial = upright,
nabla = upright
]{unicode-math}
是否有一种统一的方法可以使用 TexStudio(或其他最后的手段)围绕&
和来对齐整个文档的代码=
?
答案1
由于您已经有了使用 的表格对齐解决方案&
,下面是使用 的对齐解决方案=
。这是一个用户脚本,其编写更多的是为了清晰而不是效率(希望如此!),请记住,我对 QTScript 一点也不熟悉。
=
TeXstudio 中对齐的用户脚本
创建新脚本:
%SCRIPT
if (cursor.hasSelection()){
var tl = cursor.selectedText().split("\n");
} else {
var tl = editor.document().textLines();
}
var PreString = Array(tl.length-1),
var PostString = Array(tl.length-1);
var tempstr, eq_index, max_eq_index=0;
var LineNo = cursor.lineNumber(), ColNo = cursor.columnNumber();
// Extract strings before and after "="
// And remove trailing spaces
for (var i=0;i<tl.length;i++){
tempstr = tl[i];
eq_index = tempstr.indexOf('=');
if (eq_index <0){
PreString[i] = tempstr.replace(/\s+$/, '');
PostString[i] = '';
} else {
PreString[i] = tempstr.slice(0,eq_index).trim();
PreString[i] = "\t" + PreString[i];
PostString[i] = tempstr.slice(eq_index+1).trim();
max_eq_index = Math.max(PreString[i].length, max_eq_index);
}
}
// Add spaces to PreStrings so all the "=" align
// Concat PreString and PostString
var t = "";
for (var i=0;i<tl.length;i++){
if (PostString[i].length>0){
PreString[i] += Array(max_eq_index-PreString[i].length+1).join(" ");
t += PreString[i] + ' = ' + PostString[i] + "\n";
} else {
t += PreString[i] + "\n";
}
}
// Print text and tie up loose ends
t = t.slice(0, -1);
if (cursor.hasSelection()){
cursor.replaceSelectedText(t);
cursor.clearSelection();
} else {
editor.setText(t)
}
cursor.moveTo(LineNo, ColNo);
测试 bib 文件
这里有一些可以尝试的 bib 条目,就像我在我的 中一样.gif
。
% Some bib examples
@article{bib1,
title = {Lorem Ipsum},
pages = {451},
number = {42},
date = {1970-01-01},
journaltitle = {TUG},
author = {Foo, Bar},
}
@misc{website:fermentas-lambda,
author = "Fermentas Inc.",
title = "Phage Lambda: description \& restriction map",
month = "November",
year = "2008",
url = "http://www.fermentas.com/techinfo/nucleicacids/maplambda.htm"
}
@article{bib3,
title={Lorem Ipsum},
pages={451},
number={42},
date={1970-01-01},
journaltitle={TUG},
author={Foo, Bar},
}
@article{bib4,
title = {Lorem Ipsum},
pages = {451},
number = {42},
date = {1970-01-01},
journaltitle = {TUG},
author = {Foo, Bar},
}
结果:
笔记:
我还没有弄清楚如何将此用户脚本的效果定位到用户所选的文本,所以如果我有时间做的话,也许以后我会这样做。现在脚本考虑了所选的文本,因此可以定位对齐效果(见 gif)。一些错误被修复了——脚本现在应该更加一致了。(如果有人使用这个脚本,请尝试一下,如果这个脚本还有其他错误请告诉我,谢谢。)