如何告诉 org-mode 在 verbatim 文本中禁用标题?

11
如何使org模式不将以星号开头的行解释为标题? 我在我的org模式文档中有一些原样文本。 有些行以星号开头。 Org模式将这些行解释为标题。 我不想要那个。
以下是带有一些上下文的文本:


* 20160721 2016年7月21日的头条新闻
我创建了一个git代码库以用于rfc-tools。它位于 ~/Documents/rfc-tools。
将grep-rfc-index.sh重命名为search-rfc-index.sh,因为它搜索的功能更为明显。尽管它使用grep,但这并不重要。
为项目撰写了README.md文件,内容如下:
#+BEGIN_SRC text ----- BEGIN QUOTED TEXT ----- 这是rfc-tools的README.md文件,其中包含一系列处理IETF RFCs的程序。
* fetch-rfcs-by-title.sh会将标题中包含在命令行上给定字符串的RFC下载到当前目录。使用当前目录中的rfc-index文件。优先获取PDF版本的RFC,如果没有PDF版本,则获取文本版本。
* fetch-sip-rfcs.sh会将标题中包含"Session Initiation"的RFC下载到当前目录。
* search-rfc-index.sh会在当前目录中的rfc-index文件中搜索给定的字符串。该字符串可以包含空格。
* join-titles.awk可以将rfc-index文件的内容转换为一系列长行。每行以RFC编号开头,然后是rfc-index中剩余的内容。 ----- END QUOTED TEXT ----- #+END_SRC

我希望“----- BEGIN QUOTED TEXT -----”和“----- END QUOTED TEXT -----”之间的行只是普通文本,并且从属于“20160721 Headline for July 21, 2016”的标题。在Org mode中,所有以星号开头的行都被解释为顶级标题。

顺便提一下,这段文字是Markdown格式的。我希望这没有关系。


2
这个问题的更好标题是“如何告诉org-mode在verbatim文本中禁用标题”? - David Talmage
5个回答

2

对我有效:

    #+BEGIN_SRC markdown

1
请在你的回答中添加更多细节。 - Anantha Raju C
2
这是答案的三分之一。首先,安装并加载markdown-mode.el。其次,在markdown代码的每一行前面添加一个空格。现在,您可以使用C-c'在文本上调用markdown-mode。使用另一个C-c'退出markdown-mode。markdown源块中的所有内容都已正确格式化为org-mode。 - David Talmage
在 #+BEGIN_SRC 文本 ... #+END_SRC 前添加空格的技巧同样适用。 - David Talmage

2
尝试将您的文本放在各种特殊块标记中。例如,您可以尝试将文本放在这些标记内:
#+BEGIN_SRC text

...

#+END_SRC 

这是我的Emacs格式化的屏幕截图:

enter image description here

如果那不能满足你的需求,你可以尝试:
 #+BEGIN_EXAMPLE

 ...

 #+END_EXAMPLE

这将呈现标签内所有内容,但不包含标记,并以等宽字体显示。

如果这种方法也不起作用,您可以尝试其中一种在此处列出的其他标签。


我已经尝试了所有的方法,无论是BEGIN_SRC、BEGIN_EXAMPLE、BEGIN_QUOTE还是BEGIN_VERSE都不能关闭我引用文本中前导星号的特殊性质。 - David Talmage
抱歉,它没有起作用。这很奇怪。这可能是与.emacs中的其他组织相关设置有关联。您可以尝试使用-Q选项启动Emacs,看看它是否有效。请参考我的屏幕截图了解我的工作情况。 - elethan
当您按下“20160721 7月21日的标题”的TAB键时会发生什么? 当我按照您上面描述的方式操作时,org-mode会隐藏该行和“* fetch-rfcs-by-title.sh下载RFC到当前目录”之间的文本。 我想隐藏所有文本直到“#+END_SRC”。 - David Talmage
换句话说,org-mode将“* fetch-rfcs-by-title.sh下载RFC到当前目录”视为标题。如果我在该行上按TAB键,org-mode会隐藏所有内容,直到下一行以星号“* fetch-sip-rfcs.sh下载包含“会话初始化”的RFC”开头。 - David Talmage
是的,直到你提到它,我才意识到这一点,但我也遇到了同样的行为。到目前为止,我找到的唯一解决方法是确保那些项目符号缩进比你的标题深一级,但然后它们仍然表现得"特殊",它们只是嵌套在另一个标题下。 - elethan

0

像这样用逗号转义*,*

如果您键入C-c'进入特殊编辑,然后退出,org可能会为您执行此操作。


这确实关闭了“*”的特殊含义,但它也改变了我想逐字包含的文本。 - David Talmage
我尝试了 C-c ',Emacs 回应道:“没有特殊的环境可供编辑”。 - David Talmage

0

我认为答案是“你不能这样做”。我找到了一种使用抽屉来解决问题的方法。org-mode手册解释说,抽屉是放置不想一直看到的文本的地方。

一个StackExchange用户有一个关于如何打开/关闭自定义org抽屉的问题。似乎对于旧版本的org-mode,您必须告诉org-mode您的抽屉的名称。例如,如果您有一个名为“COMMANDS”的抽屉。

:COMMANDS:
ls
cat
grep
:END:

你必须使用+DRAWERS关键字告诉org-mode抽屉的名称:

#+DRAWERS COMMAND

并重新启动org-mode。


1
虽然这个方法可以工作,但更好的解决方法是在每行混淆 org-mode 的文本前添加一个空格,然后用 #+BEGIN_SRC text...#+END_SRC 包围文本。在我的情况下,使用了 markdown 文本,我使用了 #+BEGIN_SRC markdown ... #+END_SRC。一旦在每行开头有了空格,org-mode 就不会将你的文本与它自己的文本混淆,你就可以用 C-c' 进行编辑。 - David Talmage

0

我找到了一个解决方案:

  1. 转义字符

有时您可能想要编写看起来像Org语法的文本,但实际上应该读作纯文本。在某些情况下,Org可能会在宏(请参见宏替换)和链接(请参见链接格式)中使用特定的转义字符,或者在源代码和示例块(请参见文字示例)中使用逗号。然而,在一般情况下,我们建议使用零宽度空格。您可以使用以下任何一种插入一个零宽度空格:

C-x 8 零宽度空格

C-x 8 200B

例如,为了将“[[1,2]]”原样写入您的文档中,您可以写成

[X[1,2]]

其中“X”表示零宽度空格字符。

  1. 如何删除零宽度空格:

sed -i "s/$(echo -ne '\u200b')//g" abc.txt


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接