有哪些选项可以在Emacs中编写更好的非编程文本?


58

这是一个问题的分支,在Emacs中有哪些选项可以进行拼写检查?

因为我目前在Emacs中执行许多非编程任务,所以我想知道Emacs是否可以支持我编写更好的文本。

因此,让我们以强制性问题短语开头

是否有专门用于帮助我在Emacs中编写更好,更正确和简洁的文本的软件包/库/内置插件?

特别,

  • 进行语法拼写检查。与MS Word拼写检查器相似(但希望比MS Word拼写检查器更好),它可以识别句子是否语法错误

  • 用于改善措词和使用的表达方式。与“死诗社”相似

    因此,请避免使用“非常”一词,因为它很懒。一个人不是很累,他很累。不要使用非常悲伤的东西,请使用morose。[...]

  • 对于忘记或不知道但您可以想到的任何内容(与措辞/语言改进相关,嗯...)


“我忘记的一切”本质上太宽泛了。“改善措辞”也非常模糊。
吉尔斯

因此,我将括号中的“任何内容”都用括号括起来了……而且,我不认为在写作的上下文中以何种可能的方式“改善您的措辞”可能会含糊不清。
elemakil 2014年

1
我认为,在这里改善您的措词等是不合时宜的。有SE网站可以学习更好地写作。您的问题应仅限于Emacs如何帮助您编写和编辑文本。那已经很广泛了-对于一个问题,它可能被认为太广泛了。您能想象所有关于写作帮助的问题是否都捆绑在了您的一个问题中吗?一次专注于一件事会更好。其他所有人也将从中受益。
2014年

1
岛的Unix有stylediction,我隐约知道企图的重新实现他们作为开源。如果这些工具真正起作用,那么添加Emacs包装器应该是一件容易的事。
2014年

2
至少在当前,计算机无法有效改善您的写作。杰弗里·K·普勒姆和马克·利伯曼写这个有很多,例如,看到itre.cis.upenn.edu/myl/languagelog/archives/005061.htmllanguagelog.ldc.upenn.edu/nll/?p=10416 作为作为一个多么愚蠢的例子,我writegood-mode在“我的老人”的第一段中安装并删除了该段(来自上面的链接)。writegood-mode将“我的老人被裁掉一个胖子”标识为被动,而不是被动。这些系统a)运作不佳,b)基于关于良好写作的错误规则。
Erik Hetzner 2015年

Answers:


64

我个人坚持org-modeflyspell-mode和写东西langtool

org-mode非常适合在Emacs中快速键入任何类型的文档,flyspell负责拼写,而langtool担心语法。一切都可以高度自定义,因此您可以根据自己的喜好自定义任何内容。

这是启用langtool和flyspell的组织模式下的快速小输入;没什么特别的。

如果我按照langtool-correct-buffer建议的方式运行,发现的任何语言错误langtool都会在底部缓冲区中逐一突出显示,并给出许多建议。我可以使用相应的数字键选择这些候选项中的任意一个,或者使用[空格键]跳过它们。

另外,flyspell让我[Middle Click]拼写错误的单词以查看拼写建议。

org-mode具有大量的导出格式;您可以将文档导出为PDF,ODT甚至HTML格式。(您可以使用C-c C-e中导出org-mode

现在我已经使用LaTeX将杰作发布为PDF,这就是我在PDF查看器中打开它时看到的内容...

这可能是在Emacs中相对良好的书写环境中制作精美文档的最简单方法...

好消息是,org-mode并且flyspell-mode在默认情况下使用Emacs的大多数版本都包括在内。坏消息是langtool不是,它有些大,并且需要Java。但是,如果这不能阻止您:

Langtool是一种语法检查器,通常与Openoffice或Libreoffice配对使用。该工具本身是一个简单的命令行实用程序,因此与其他程序进行交互相对容易。有人将其与Emacs交互。

要在Emacs中添加它,可以使用M-x package-install langtool... 进行安装,或者,如果您没有设置正确的存储库(我使用此处建议的存储库),.el则可以从此处获取文件并手动将其包括在内。

我目前有这样的组织模式挂钩。(剪切不相关的位。)

(add-hook 'org-mode-hook (lambda ()
   (progn
     ;; Snipped
     (auto-fill-mode t)

     ;; Spelling
     (flyspell-mode t)

     ;; Grammar
     (require 'langtool)
     (setq langtool-language-tool-jar "/path/to/LanguageTool.jar"))))

显然,您希望将其替换为系统/path/to/LanguageTool.jar上的实际路径。这是一个可移植的.jar文件,因此位置并不重要。

此外,与flyspell-modelangtool 不同,langtool要求您M-x langtool-check在想要对缓冲区进行语法检查时运行...因此您在当前键入内容时没有花哨的语法检查。

org-mode可以做很多事情,并且可以用来写简单的小笔记文件,带有精美图形,文章,书籍的完整论文,等等。但是由于它可以做很多事情,所以很难知道从哪里开始。我发现最简单的方法是从在学习基础知识之后开始可能的org-mode文件导出方法开始学习组织模式的网站是非常有用的信息,并有上有一个很大的帮助的信息页面太(C-h im Org Mode)。

祝好运..!希望这会有所帮助。


这是伟大的langtool看起来确实很有希望。
elemakil 2014年

1
有没有一种方法可以配置langtool以了解(La)TeX语法?我会说大约一半的错误是由(La)TeX的语法引起的误报,这有点令人讨厌。
elemakil 2014年

1
不幸的是,据我所知。我通常用很少的LaTeX在普通组织中写东西,除了内部组织LaTeX指令外。(像#+LaTeX_CLASS_OPTIONS: [hidelinks,11pt])那样我什么都langtool不会捡。当然,这并不是说要更改不存在langtool的方法,而仅仅是说这超出了我对此主题的专门知识。抱歉..!
Archenoth

15

EmacsWiki类别写作是开始的地方。

它列出了数十个支持使用Emacs编写文本的库,以及一线式描述和指向详细信息页面的链接。

在这里再次列出此类信息没有意义-在那里查阅。

(但是这里的其他人可能会有具体的建议。)

我将仅提及子类别页面Thesauri和Synonyms,该页面具有指向支持同义词查找的库信息的更多链接。


这些建议和使用不同选项的个人经历是我最感兴趣的:-)
elemakil 2014年

精细。您还应该在Wiki页面上找到有关该主题的大量内容。
Drew

@Drew:emacswiki页面上缺少langtool。
Tobias

@tobias:是的,请将langtool添加到Wiki上的列表中(任何人都可以编辑Wiki-这是Wiki ;-)。
提请

做完了 顺便说一句:你能看看一些(恕我直言有趣的)苦恼的问题。提前致谢。
Tobias

15

我使用Emacs编写小说,并根据其某些独特的优势逐步开发了工作流程。(示例:我的最新著作是由Emacs构思,撰写和编辑的。)也就是说,这不是一条没有困难的道路。

  • 组织模式

    组织模式是我开始使用Emacs的原因。能够折叠和展开〜50K单词手稿的各个部分非常宝贵。我以前使用过Scrivener程序,但对它的膨胀和纯文本.scriv文件不满意。组织模式还可以轻松地(使用)移动章节(trees和)。subtreesM-arrow_key

  • 文字处理

    除了emacs大量的文本查找,切片和粘贴实用程序(C-sM-y等)之外,我还使用God模式Avy模式在缓冲区周围寻找方法。前者启用的模态编辑有助于治疗我的关节炎。后者是一种非常快捷的在屏幕上导航的方法,只需几次击键(通常在主行)。

  • Flyspell

    这是一个完全足够的拼写检查器,每天对我都有好处。

  • 魔力

    我最近开始通过Bitbucket使用Git来通过版本控制来管理我的工作。我是一个初学者,但是有很多优点,而且Magit是该系统的出色界面。尽管 尚未针对小说写作进行最佳优化,但效果很好。Git

  • 待办事项和评论

    组织模式可以定义要执行的工作。对于大型MS,从小到大,我可能需要记住40件事或更多。可以识别这些内容,甚至可以使用TODO关键字对其进行排名。此外,可以在前面加上各种注释和想法标题COMMENT,当我将文件发送到时,这些注释和想法标题 将不会导出.odt

  • 分割视窗

    我经常在带有拆分窗口的文件上工作,以显示故事中的两个位置。我经常将一个位置与另一个位置进行比较。我用split-window-rightC-x 3)做了很长一段时间,但是最近我切换到了clone-indirect-buffer-other-windowC-x 4 c)。这样做的好处是,如果更改窗口A的折叠状态,则不会更改窗口B的折叠状态。

  • 一个缺点

    文学出版在MSWord上运行。这是可能的,从获得 .org.doc,但没有,对我来说很容易。目前,我使用Emacs' org-export将文件移植到.odt我用Libreoffice编辑的 文件。我知道如何手动或使用宏来实现更大的发布世界所需的格式,然后将文件保存到.doc。格式并不复杂,但这是必需的。

    编辑过程涉及大量的来回过程,这意味着我要依次导出到Libreoffice,然后重新导入到Emacs。在Emacs端,宏可以为我的标题检索星号,并拉直Word的smartquotes。我目前没有很好的斜体解决方案。有时我会引入错误。如果Emacs并不是那么出色的文本编辑环境,我将不会因此而受苦。

    米奇·彼得森(Mickey Petersen)在其精湛的博客文章中描述了自己的《精通Emacs》一书的工作流程,该书利用diff缓冲区对更改和评论进行排序(目前还不包括在我的书中),并且还要求他的文学编辑/出版商查看纯文本文件。 (当我尝试过时,我将其推迟了)。

  • 结论

    Emacs是我发现用于编写和编辑小说的最有效工具。还有许多其他散文的作者可以使用的模式(例如 org2blog用于撰写和发布Wordpress博客,而 AUCTeX用于编写LaTeX文件)。

    我很愿意看到的未来是之间的联系.txt,并.doc是为这样的作品我做的更顺畅。其中包括:

    • 根据要求将Emacs设置为使用双倍间距或单倍间距
    • 插入手动分页符(例如,在标题页之后)
    • 不会在某些标点符号附近出现的斜体
    • 在除标题之外的所有页面上创建简单的,右对齐的标题

    有一些解决方法(是Sean Miller的博客文章,内容涉及使Emacs始终显示包括标点的斜体,鼓励使用零宽度的空间),当然,作为来自某人的人,我仍然不知道该怎么做而不是文本编辑领域的编程方面。

不久前,我偶然发现了rms的新闻组帖子“ Emacs as word processing”:

25年前,我希望我们能扩展Emacs来进行WYSIWG文字处理。这就是为什么我们添加了文本属性和可变宽度字体的原因。但是,仍然需要更多功能来实现此目的。

人们可以开始研究所需的功能吗?

我很希望看到一个未来,我可以在Emacs中完成所有文学工作而无需启动另一个编辑器。我现在不在那儿,但是总的来说还是很高兴的,因为这个编辑器的惊人实用程序值得在导出端进行额外的工作。


1
也许undoc会对您有所帮助?emacs的文档导入器emacswiki.org/emacs/UnDoc
Jason Mirk

我来看一下 我以前使用过反字词,由于提取过程中发生格式更改,因此花了很多功夫。谢谢你的建议!
史蒂文·阿特森

11

分拆所链接问题的原始答案。

  • 语法检查:我还不知道emacs有任何专用的语法解析器。我将提到writegood-modeMELPA中的可用内容,该内容突出了缓冲区中的鼬鼠单词和被动语音。它使您到达一半。

    另一个可能有用的库dupwords.el可以突出显示在同一句子中是否多次使用了特定单词(通常是名词和代词)。这比查找可以由flys​​pell处理的重复的相邻单词更为笼统。

  • 其他:总体上纠正语言是一个难题。话虽如此,如果在此区域中存在任何外部程序/脚本,通常很容易使其与emacs交互。

如果您使用LaTeX进行书写,我个人发现以下ruby脚本对于检查样式和一致性非常有用。我只是从minibuffer本身调用shell命令。能够进行正向和反向搜索的查看者在校对时也很有价值。在MS Windows上,我使用sumatra-forwardELPA的软件包在SumatraPDF Viewer中进行正向搜索。

  1. Neil Spring进行的样式检查
  2. 连贯性作者:尼尔·康威(Neil Conway)

0

本技巧将使您可以通过一次击键格式化单词/区域(粗体,斜体,删除线,还包括括号,引号等),而不是在单词的开头和结尾添加',' 等。您的文字。我发现这在编写时非常有用,例如在重新阅读和微调书面文本时:/*

(defun xa-bold (&optional char)
  (interactive)
  (unless (region-active-p)
    (backward-word)
    (mark-word))
  (if (region-active-p)
      (insert-pair 1 ?* ?*)
    (insert "//")
    (backward-char))
  (forward-word)
  (right-char))

此代码用于获取粗体字/区域。您要做的就是根据所需的格式类型替换第一个和第二个“ *(insert-pair 1 ?* ?*)。对于parens,请与 (insert-pair 1 ?\( ?\))

只需将一个键绑定到它,就可以完成:

 (define-key org-mode-map (kbd "M-&") 'xa-bold)

注意:我可以随意在此处窃取的代码中进行较小的更改。我说(forward-word) (right-char)的,因为当你写,想格式化的话,你想要的功能结束point格式化字符,所以你可以去后写。但是您可能希望删除(right-char)括号或引号,以保留括号或引号并继续书写。

我不是程序员,只是一个emacs爱好者,有时会玩现有的代码。我希望emacs成为我的文字处理器!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.