在输入 (La)TeX 时,有些键的使用频率比在纯文本中使用频率高得多,尤其是\
、{
、}
、[
、]
、$
和。在大多数键盘布局中,这些键输入起来相当麻烦。英语 QWERTY 键盘比德语 QWERTZ 键盘好很多,但仍然远非最佳。^
_
鉴于我主要用英语输入数学文本,您会推荐哪种键盘布局?
以下情况可获加分:
- 能够输入非英语拉丁字符,尤其是德语变音符号。
- 与 QWERTZ 或 QWERTY 有些相似,因为我最习惯这些布局(我目前在 Linux 中使用美国国际布局)
- 能够直接输入数学符号(希腊字母
\times
等)
答案1
答案2
很久很久以前,在一个遥远的星系,我尝试开一个博客。虽然没有坚持下去,但我发布的其中一篇文章就是关于这个主题的。当我删除博客时,我保留了文章。所以这就是那篇文章。我很抱歉写得太长了。
几年前,我开始出现我认为是重复性劳损 (RSI) 的症状。我从未得到正式诊断,所以我不能确定,但所有症状似乎都很明显。打字时症状更严重,小手指症状更严重。
想想打字。与其他手指相比,小手指的工作量有多大?除了有自己的字母外,它们还负责许多标点符号和 Shift(和 Control)键。我发现我经常需要伸展手来输入字符,这给我的小手指带来了很大的压力。
在输入 LaTeX 文档时,情况就更糟了。快速浏览一篇三十页的论文可以发现,输入最多的五个字符是:
- 空间 15525
- 7266
- \ 6834
- o5476
- 5470
接下来是几个小写字母,第 14 和第 15 位是括号(令人担忧的是,每个括号的数量不一样 - 肯定有一些半开间隔)。第 22 位是下划线,第 24 和第 25 位是花括号(快速检查:这次数量相同),出现次数刚好超过一千次。第一个数字 1 在列表中排得很靠后,只出现了 362 次。
顺便说一句,如果您想生成此列表,可能有更优雅的方法,但这是我的两分钟破解方法:
~% cat paper.tex| \
perl -lne 'while ($_) {
$_ =~ s/(.)//;
$count{$1}++};
END {
@chars = sort {$count{$b} <=> $count{$a}} keys %count;
while (@chars) {
$c = shift @chars;
print "$c $count{$c}";
}
}'
反斜杠键通常很难伸长,花括号通常需要按 Shift 键(或在某些国际键盘上按 Alt-Gr 键)。就捕捉猛犸象而言,这需要做很多工作,但实际上却毫无用处。
我的解决办法是修改键盘。不,不是用锤子。用一个漂亮的小程序修改映射。这是一个 UNIX 程序,它允许您修改键盘上的按键实际做。我用它将反斜杠放在分号的位置(毕竟,现在谁还会用分号呢?),交换花括号和方括号,并将数字与其符号交换(因此按“3”会产生“#”,按“Shift+3”会产生“3”)。
不幸的是,这种方法不太便于携带,我必须为每台机器设置它。问题是它是一个从键盘当前功能到您希望它执行的功能的转换表,因此您首先必须知道它当前执行的功能。但是,解释如何设置它相当简单。
假设您想将反斜杠放在分号的位置。首先,您需要找到分号的键码。有两种方法可以做到这一点。首先,从终端运行一个名为 xev 的程序。当您在其窗口中按下一个键时,它会在终端中告诉您有关该键的大量信息 - 包括键码。另一种方法是运行xmodmap -pke
。这将生成所有当前分配的列表,您可以从中读取分号的键码。
~% xmodmap -pke | grep semicolon
keycode 47 = semicolon colon oslash Oslash
(是的,我使用的是挪威语键盘。)现在您只需要重新映射它:
~% xmodmap -e 'keycode 47 = backslash colon oslash Ooslash'
瞧!键盘被修改了。
需要注意三件事。保存 xmodmap -pke 的初始输出,因为如果一切都出错,请输入:
~% xmodmap original_list
将重置它(尽管这可能很难,如果你已经重置全部键!在这种情况下,请注销并重新登录)。其次,为了节省每次输入所有这些命令的时间,您可以将它们全部放在一个名为 .xmodmap 的文件中,并xmodmap ~/.xmodmap
在启动文件中放入一行。Gnome 实际上会查找这些文件并询问您是否要加载它们,这样您就不需要将它们放在启动文件中。最后一点是,您可能需要考虑为不同的任务使用不同的键盘。我有一个用于编写 LaTeX 文档的键盘和一个用于其他所有操作的“普通”键盘;使用“热键”可以轻松在它们之间切换。
弄清楚这个问题几年后,我发现我并不孤单,我也无法独自找到解决方案。 葛瑞格·库珀伯格 也写过这篇文章,不过他的解决方案使用的是 XKB 而不是 xmodmap。您的情况可能会有所不同。
实际布局如下:
` 1 2 3 4 5 6 7 8 9 0 _ +
~ ! @ # $ % ^ & * ( ) - =
TAB Q W E R T Y U I O P [ ]
q w e r t y u i o p { }
Ctrl A S D F G H J K L : " |
a s d f g h j k l \ ' /
Shift > Z X C V B N M < > ? Shift
< z x c v b n m , . ;
此外,底部的“奇怪”键被映射到各种修饰键,使我能够访问其他字符(最常见的是 øæå,因为我在挪威)。这实际上是通过两阶段 xmodmaprc 完成的:第一阶段将我的斯堪的纳维亚键盘更改为我更习惯的键盘;第二阶段进行与 TeX 相关的更改。我有一个启动 Emacs 的热键和一次性更换键盘!
答案3
快速建议
找到一个好的键盘,一个好的文本编辑器,然后练习。
详细建议
一款好的编程键盘会让你的手指感到舒适,无需重新映射。就我个人而言,我使用快乐黑客键盘专业版 II我发现,使用此键盘时,我仍然可以以每分钟 40 字的速度打字,即使对 LaTeX 语法有些困惑。
一个具有语法高亮和自动完成功能的优秀文本编辑器将使编写 LaTeX 文档变得非常容易。我在使用时得到了上面的键盘GNU Emacs,因为它用控制键替换了 Caps-Lock 键(您可以使用软件重新映射来实现相同的效果)。从那时起,我就一直使用 MacVIM,它使用一个很好的LaTeX 套件。目前,我使用文本伴侣。如果你使用的是 Windows,你可以使用类似的电子文本编辑器。我改用 TextMate 是因为使用附带的软件包处理表格要容易得多。TextMate 还会自动关闭(),$$,[],
和{}
序列以及其他序列。它还会自动处理引用(输入两个反引号即可用直引号关闭)。我发现自动关闭环境的快捷方式也很有用。
我从Andrew Stacey 的帖子最常见的字符是字母字符。在大多数布局中输入数学符号也同样痛苦。我发现,只要练习足够多,我的手指就能很容易地找到特殊字符。如果你对通过输入字母字符来提高速度感兴趣,我听说德沃夏克是所有书呆子的愤怒,但它的功效是可疑。
特殊字符
为了打印特殊字符...这就是我使用 LaTeX 的原因。对我来说,打字\alpha
比记住 alt 代码或 option 键要容易得多,也比在字符映射表中搜索和查找要快得多。在我看来,变音符号、重音符号(或变音符号)和特殊数学字符最好使用 LaTeX 宏来表达。它可以避免与他人共享文件时可能出现的任何问题(不必担心 UTF 兼容性)。例如,在我的 Mac 上打字很容易,但在 LaTeX 中ü
打字也同样简单。\"u
答案4
我用vim编辑器,我认为它虽然不是键盘布局,但可以部分解决您的问题。学习起来有点困难,但我发现学习 vim 比尝试切换到 Dvorak 键盘布局要容易得多。
Vim 具有高度可编程性,因此使用一些 LaTeX、代码片段和分隔符插件,您可以简化大量的打字工作,同时还可以从编辑器内部进行非常简单的乳胶编译和错误日志的解析。
我觉得有用的一些插件:
剪接伴侣让你制作片段,你输入 say desc
,点击TAB
它就会变成
\begin{description}
\item[]
\end{description}
光标位于 \item 的方括号中,这可轻松启动列表,而无需按下任何烦人的\[]{}
键。
界定伴侣自动填充分隔符(引号、括号、圆括号……),这样您就不必输入那么多。
乳胶盒提供了一系列简单有用的附加功能,例如标准命令的自动完成,以及在 Latex 命令/环境中文本的简单换行,其工作原理如下:
您已输入一些文字:
...the experiment showed a detrimental effect on...
但是现在您想将有害信息包装在某些宏中(例如\emph
),因此您选择它并按下快捷键(我认为默认是 F5,但可以轻松自定义),它会为您添加和\{
,}
并将光标放在\
准备好之后,以便您输入宏:
...the experiment showed a \|{detrimental} effect on...
光标位置在哪里|
。还有另一个键可以将选择内容包装到新环境中。
进一步的自定义功能可让您执行诸如突出显示文本并按快捷键(对我来说是 cmd+I)将其包装在\emph{
和 中等}
操作。因此,正如您所见,通过一些自定义,您可以避免实际上必须多次按下这些键。
另一个非常受欢迎的是Vim-Latex 套件(我个人觉得也不太常用,但很多人都用它,觉得它很有用)。它为你提供了非常简单的快捷方式,用于输入环境、希腊符号等。说实话,我想我应该建议你看看这个第一的如果您发现它有点太复杂,请尝试上面的更简单的替代方案。
我也用过文本伴侣编辑器(仅限 Mac OS X),snipMate 和 delimitMate 插件就是从这里获得灵感的,它们在更“传统”的编辑器中提供了许多这些功能。它并不便宜(因为它不是免费的),并且不适用于 Linux/Windows。