正如指出的那样这个问题在 TeXShop 中,没有办法让源段落(即没有硬换行的长行)遵循源缩进自动地即在打字时。接受的答案在我看来,这是不能令人满意的,因为它需要在每一行手动插入换行符...我相信在 2011 年你不应该被迫采用这种行为,除非你是老式打字机的忠实粉丝。
我的最终目标是实现
可读的“编程语言风格”源代码,带有用于环境的缩进块,
我想使用 TeXShop 来实现它(我知道使用其他编辑器很容易,比如 Emacs)。我的问题是:
有没有办法获得这样的格式后打字,例如使用在正确位置插入换行符的宏?
我尝试的第一件事如下:
- 自然地编写代码,没有缩进或硬换行;
- 选择任意块(甚至整个代码),然后从 TeXShop 的菜单中应用 Source > Wrap Lines > Hard Wrap;
- 选择您想要缩进的任何块,然后使用源菜单中的相应命令进行缩进。
然而,这并不好用,因为在缩进块之后,某些行可能会变得太长,超出编辑器窗口的宽度。
答案1
我不确定您到底需要什么功能,但也许下面的功能会让您满意。我使用另一个程序来完成这项工作,即 Textwrangler,以正确对齐和插入硬换行符。
这是一个执行以下操作的宏:
- 收集所有标记的文本,
- 将其传递给 Textwrangler
- 文本正确对齐且断开
- 将结果粘贴回 TexShop 以代替标记的文本。
我使用指定的键盘快捷键应用宏。我不是 Applescript 专家,所以我想宏可以改进。
--Applescript
-- Script to transfer the current TeXShop document to TextWrangler
-- Ido Ben-Zvi
-- Based on Ramon Figueroa-Centeno's macros
tell application "TeXShop"
try
activate
set posPath to path of the front document
--return posPath
tell application "System Events" to keystroke "c" using {command down}
tell application "TextWrangler"
activate
tell application "System Events"
keystroke "a" using command down
keystroke "v" using command down
keystroke "a" using command down
end tell
hard wrap selection of text window 1 limit character width width 80 indentation none with paragraph fill and relative
--copy selection of text window 1
--set modified_text to selection of text window 1
tell application "System Events" to keystroke "c" using {command down}
--close myTeXfile
end tell
-- back at TexShop
activate
--set modified of front document to yes
--paste
tell application "System Events"
keystroke "v" using command down
end tell
on error
beep
end try
end tell
--tell application "TextWrangler"
-- close POSIX file FILEPATH
--end tell
答案2
TeXShop 的宏编辑器非常强大,因此如果您可以编写脚本来漂亮地打印您的代码,您可以将其挂接到宏中并在需要时运行它。
但最好的办法可能是与开发人员取得联系。
答案3
到目前为止,我发现的最好的方法是以下相当平淡无奇的解决方案:按照问题中描述的相同步骤,添加:
1.5:
调整 TeXShop 中的源窗口大小,将其宽度减少约 2 或 3 个缩进的大小;
2.5:
将窗口大小调整为其原始宽度。
这样就避免了问题最后一句所描述的问题。