在IPython Notebook中转义美元符号

60

我在iPython中有一个Markdown单元格,其中包含四个美元符号。iPython会将任何位于美元符号之间的内容解释为MathJax表达式,这不是我想要的。我该如何转义美元符号?使用反斜杠进行转义可以防止MathJax自动解析,但是反斜杠会在编译后的Markdown中显示。

有什么办法只获取美元符号吗?

谢谢


你能把代码行粘贴进来吗?这样我们就可以看到你是如何转义它的。 - NathanTempelman
7个回答

101

在美元符号前面加上两个反斜杠。例如:

一些价格:\\$3.10、\\$4.25、\\$8.50。

(运行Jupyter笔记本服务器5.7.0


1
非常有用。在引用文本中,此答案的效果很好,而其他解决方案在该上下文中效果不佳。在引用文本中,单个反斜杠仍会进入数学模式。使用反引号会导致文本中出现突出显示的代码块。 - Simon
当您使用双反斜杠导出时,一些美元符号在导出的HTML中被反斜杠转义,而另一些则没有。如果您在Jupyter中将双反斜杠删除为单个反斜杠,则编译MathJax。这非常令人困惑。 - William M.

12

使用反斜杠可以在数学模式下转义 $。尝试使用 $\$$


1
这个解决方案对我有效,当使用\\$转义时无效。但值得注意的是,在数学模式下产生的字符与$字符不完全相同。 - Raisin

8

如果你使用 <span>$</span>,MathJax 将不会将其处理为定界符。在 Markdown 中应该能够输入它。例如,在这里我使用了它:$ 这不是数学 $。


5

你尝试使用等效的HTML实体吗?:

enter image description here

例如。

enter image description here


回答太短了,请详细解释一下。 - Happypig375
没问题。我已经更新了我的答案,并附上了一个例子。请参见上面。 - Oke Uwechue
1
能否解释一下它为什么有效?(关于HTML转义码的工作原理) - Happypig375
我尝试了这里提供的所有选项,希望这个最终能解决问题,但是它也失败了。我使用JupyterLab,在自述文件中解释了类似squeue -u $USER的内容,而美元符号使得下面所有Markdown代码的解释变得很难读。尽管在GitHub上推送时一切正常,但在我的笔记本上,$后面的内容看起来像一团糟,很难阅读。我尝试过的方法是squeue -u &#36;USER。我做错了什么吗? - Valentin_Ștefan

5

我无法使大部分解决方案起作用,但其中一个是可行的,具体方法在这里有说明。它参考了一个SO问题,链接在这里,方法如下:

<span class="tex2jax_ignore">$900 vs $4,500</span>

希望这能对某些人有所帮助!

4

虽然这是一篇旧文章,但它仍然在谷歌上排名第一!这里有一个澄清,我希望我能更早地理解:

Jupter笔记本Markdown

Jupyter Notebook“Markdown”单元格允许您在其中编写HTML,并在大多数情况下按预期呈现HTML。这与其他某些Markdown编辑器不同,在这些编辑器中,您只能使用非常有限的HTML子集或根本不使用HTML。

这对$字面量很重要

很有用的一点是,当您想使用特殊字符的字面量版本时,例如$。也就是说,您想要在单元格的渲染版本中显示一个$,而不是使用$来启动MathJax块。

这超出了$到其他特殊字符的范围。也许你想在渲染单元格中显示一个*,而不是指示项目符号或粗体/斜体文本。我很难想象使用#_[的情况,但可能有某些原因您也想要编写这些文字(而不使用反引号将它们括起来,导致它们被样式化为内联代码块就像我这里所做的那样)。

HTML方法1:创建HTML块

其他几个答案描述了用HTML <span>标签包围$。如果您不像此GitHub评论所示在中间包含换行符,则表示告诉Jupyter Notebook不再将内容解释为Markdown,而是将其解释为HTML。在HTML中,$不表示您正在启动MathJax块,因此它会按字面意思呈现。

个人认为,我不喜欢这种方法,因为很难确定span解决了什么问题,并且它是将span作为hack / workaround使用而不是HTML规范中既定用法的方式。

HTML方法2:HTML字符编码

这就是上面&#36;答案建议的方法,尽管我认为它没有完全解释清楚。

这里的想法是,您不要在Markdown源中放置$文字,而是放置HTML字符代码版本&#36;。如果您好奇,这里有一个更长的字符代码解释。但基本上您只需要知道,如果您在编辑Markdown单元格源时编写相关字符代码,则它将不会被解释为Markdown,但它将正确呈现。

因此,而不是使用此Markdown源:

The price range is $100 to $200

(这将把100 to渲染成MathJax)
只需用&#36;替换$即可:
The price range is &#36;100 to &#36;200

(这将直接显示美元符号)

我更喜欢这种方法,因为HTML字符编码的整个目的是转义特殊字符,因此如果将来有人试图理解您的代码在做什么,他们应该能够相当快地弄清楚。

我也通常尽量避免在我的Jupyter Notebook Markdown中使用HTML开放和关闭标记,因为小错误(例如忘记一个/)可能会产生混乱的连锁效应,但具体情况而定 :)

如果您正在寻找除$以外的字符代码,我喜欢这个资源,虽然你也可以只需Google“HTML代码”加上您想要的字符,并且大多数情况下都可以得到正确的答案。


这个回答是否提供了新信息?它似乎是你如何解决和理解问题的很酷的分解,但似乎并没有提供新的信息。 - aaossa
我添加的特定信息是更清晰地解释在Jupyter Notebook上下文中使用“等效HTML实体”意味着什么。许多编写笔记本的人不熟悉HTML,之前的答案使用了这个措辞并展示了一个HTML表格而不是一个最小化的示例,因此不清楚该建议如何适用于原始问题。 - Erin Hoffman
1
可能只需要添加一条注释,比如“换句话说,你可以写成‘价格范围为$100到$200’而不是‘价格范围为$100到$200’”。但我是新手,还没有足够的声望来评论别人的答案,所以只能回答问题!然后在那个时候,我就忍不住写了更长的解释,包括标题等。 - Erin Hoffman
没问题。就像我说的,这个故障还是很酷的。 - aaossa

4

我知道这个话题很老,但它仍然是谷歌搜索的第一结果,并且其答案是不完整的。

您还可以用 `反引号` 包围 $,就像在 Jupyter 中显示代码一样。

所以 $ 变成 `$`,应该能够正常显示。


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