将 LaTeX 代码渲染为实际方程必须得到渲染文档字符串的软件的支持。因此,为什么您在 Juno 中看不到任何渲染方程的简短答案是,Juno 目前不支持 LaTeX 渲染(正如 Matt B. 指出的,有一个对此的开放问题 https://github.com/JunoLab/atom-julia-client/issues/329).
The doc""
字符串文字/字符串宏是为了解决另一个问题。反斜杠和美元符号通常在字符串文字中具有特殊含义 -转义序列 https://docs.julialang.org/en/latest/manual/strings#man-characters-1 and 变量插值 https://docs.julialang.org/en/latest/manual/strings#string-interpolation-1,分别(例如\n
被换行符替换,$(variable)
插入值variable
到字符串中)。当然,这与普通的 LaTeX 命令和分隔符(例如\frac
, $...$
)。因此,要在字符串中实际包含反斜杠和美元符号,您需要用反斜杠将它们全部转义,例如:
julia> "\$\\frac{x}{y}\$" |> print
$\frac{x}{y}$
不这样做将会给出错误:
julia> "$\frac{x}{y}$" |> print
ERROR: syntax: invalid interpolation syntax: "$\"
或结果字符串中的无效字符:
julia> "``\e^x``" |> print
``^x``
当然,在编写文档字符串时,必须一直转义所有内容会很烦人。因此,正如大卫指出的那样,为了解决这个问题,您可以使用doc
字符串宏/非标准字符串文字。在一个doc
所有标准转义序列都会被忽略,因此未转义的 LaTeX 字符串不会导致任何问题:
julia> doc"$\frac{x}{y}$" |> print
$$
\frac{x}{y}
$$
Note: doc
还解析字符串中的Markdown,实际上返回一个Base.Markdown.MD
对象,而不是字符串,这就是打印的字符串与输入有点不同的原因。
最后,您可以使用这些doc
-literals 作为普通的文档字符串,但是你可以自由地使用 LaTeX 语法,而不必担心转义所有内容:
doc"""
$\frac{x}{y}$
"""
function foo end
这也记录在文档员手册 https://juliadocs.github.io/Documenter.jl/latest/man/latex/#Escaping-characters-in-docstrings-1,尽管它实际上并不是特定于 Documenter 的。
双反引号与美元符号。在 Julia 文档字符串或文档中标记 LaTeX 的首选方法是使用双反引号 https://docs.julialang.org/en/latest/manual/documentation#%5C%5CLaTeX-1 or ```math blocks https://docs.julialang.org/en/latest/manual/documentation#Display-equations-1,如手册中所述。支持美元符号以实现向后兼容性。
注意:记录员手册和show
Julia 中 Markdown 对象的方法应该更新以反映这一点。