Julia:文档字符串和 LaTeX

2023-12-24

朱莉娅有docstrings功能,记录在此处https://docs.julialang.org/en/stable/manual/documentation/ https://docs.julialang.org/en/stable/manual/documentation/。我的印象是它支持LaTeX代码,但我不确定 LaTeX 代码的意图是否应该看起来像代码或像解释。下面,LaTeX 代码有些乱码(例如,参见 rho)并且没有被解释(rho 看起来不像 ρ)。难道我做错了什么?

有没有办法得到LaTeX代码看起来被解释了吗?

我所说的解释是指他们在做的事情https://math.stackexchange.com/ https://math.stackexchange.com/.

文档说LaTeX代码应该用双反引号括起来,并且希腊字母应该输入为ρ而不是\rho。但这恰恰违背了能够包含的意义LaTeX代码,不是吗?

注意:版本 0.5.2 在 Juno/Atom 控制台中运行。

"""

Module blabla

The objective function is:
``\max \mathbb{E}_0 \int_0^{\infty} e^{-\rho t} F(x_t) dt``

"""
module blabla
end

如果我随后执行该模块并查询,我会得到以下结果:

使用三引号时,美元符号消失,但公式打印在深色背景上:

EDIT大卫·桑德斯 (David P. Sanders) 建议的后续行动Documenter.jl包裹。

    using Documenter
    doc"""
    Module blabla

    The objective function is:
    $\max \mathbb{E}_0 \int_0^{\infty} e^{-\rho t} F(x_t) dt$
    """
    module blabla
    end

给出以下内容:LaTeX代码似乎打印正确,但它没有被解释(ρ 显示为\rho。我遵循以下建议:https://juliadocs.github.io/Documenter.jl/stable/man/latex.html https://juliadocs.github.io/Documenter.jl/stable/man/latex.html to


将 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,如手册中所述。支持美元符号以实现向后兼容性。

注意:记录员手册和showJulia 中 Markdown 对象的方法应该更新以反映这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Julia:文档字符串和 LaTeX 的相关文章

  • 如何在命令行中执行 Julia 代码?

    我最近在 Julia 中转移了我的代码 我想知道如何在命令行中执行 Julia 代码 我知道 Julia 代码可以通过运行一次来 编译 但问题是我需要对集 群上的模拟模型进行参数扫描 我只能使用命令行 而不能使用 REPL 在集群上运行模拟
  • 在 Julia 中迭代具有不同数量参数的不同函数

    我正在尝试使用不同数量的参数对不同的函数运行循环 变量是在运行时在循环内创建的 我想在每次迭代时使用 eval 来使用变量 symbol 实例化一个 Struct 但是 我不能这样做 因为 eval 只在全局范围内有效 这是有效案例的 MW
  • Julia DataFrames 中的高效自定义排序?

    有没有一种快速的方法来指定自定义订单sort sort 在 Julia 数据框架上 julia gt using DataFrames julia gt srand 1 julia gt df DataFrame x rand 10 y r
  • Julia:生成唯一的随机整数数组

    我正在尝试创建 10 个唯一随机整数的元素数组 但是我无法创建具有唯一值的数组 Julia 中是否有类似 Python 的东西样本函数 https docs python org 2 library random html random s
  • Julia - 迭代字典中的键组合

    有没有一种巧妙的方法来迭代字典中的键组合 我的字典有这样的值 1 gt 1 2 2 3 gt 15 3 gt 6 7 8 4 9 11 gt 3 我需要做的是获取所有长度的键组合1 n where n可能是FX 3 就像上面的例子一样 我想
  • 在 Julia 中提取参数类型

    假设我在 Julia 中编写了一个函数 它接受Dict K V 作为参数 然后创建类型的数组Array K 1 and Array V 1 我怎样才能提取类型K and V来自 Dict 对象 以便我可以使用它们来创建数组 斯文和约翰的答案
  • 具有单变量优化的 NLopt

    任何人都知道 NLopt 是否适用于单变量优化 尝试运行以下代码 using NLopt function myfunc x grad x 2 end opt Opt LD MMA 1 min objective opt myfunc mi
  • 使用 Julia 的 Debugger.jl - 如何进入类似于 Python 的 pdb.set_trace() 或 ipdb.set_trace() 的调试模式?

    Julia 的新 Debugger jl 很棒 但有时要达到我想要达到的代码中的确切位置有点痛苦 有没有办法可以进入交互式调试模式 类似于 Python 在 pdb set trace 或 ipdb set trace 中的模式 例如 我希
  • 为什么 Julia 中的“where”语法对换行符敏感?

    在 Stack Overflow 上的另一个问题中 答案包括以下函数 julia gt function nzcols b SubArray T 2 P Tuple UnitRange Int64 UnitRange Int64 where
  • 获取参数类型的参数

    假设我定义了一个这样的类型 type Point Tx Ty end 然后我创建一个这种类型的变量 例如 a Point Int64 something 现在 我只知道我可以获得以下类型a by typeof a 那是 Point Int6
  • Julia:将数组数组转换为二维数组

    我有一个数组d包含一个浮点数组 julia gt d 99 element Array Array Float64 1 1 我正在尝试将其转换为二维数组 并且我成功地实现了我的目标 data Array Float64 length d l
  • 如何在 Julia 中引用结构本身

    我有这个代码 struct MyStruct text String function MyStruct text String text text do other things end end 当我写这篇文章时 我意识到朱莉娅没有认识到
  • Julia 中基准和时间宏的区别

    我最近发现两个宏之间存在巨大差异 benchmark 和 time 在内存分配信息和时间方面 例如 benchmark quadgk x gt x 0 1 BenchmarkTools Trial memory estimate 560 b
  • 如何将缺失值插入到 Julia 的数据框中

    df3 10 A missing df3 15 B missing df3 15 C missing 即使 NA 也不起作用 我收到错误 方法错误 不能convertMissings Missing 类型的对象到 Int64 类型的对象 这
  • 将全局标题添加到 Plots.jl 子图

    我想使用 Plots jl 向一组子图添加全局标题 理想情况下 我会做类似的事情 using Plots pyplot plot rand 10 2 plot title Main title title A B layout 2 但是 根
  • 如何在 Julia 中使用 set precision?

    我试图增加使用 set precision 函数的代码 但每次我使用示例时 无论多么简单 它总是给出相同的错误 当我做 x big 1 23456789 setprecision x 20 我收到以下错误 ERROR LoadError M
  • 如何向数组添加维度? (与“挤压”相反)

    我永远不记得如何做到这一点 怎么可以去 来自向量 大小 n1 到列矩阵 大小 n1 1 或来自矩阵 大小 n1 n2 到数组 T 3 大小 n1 n2 1 或来自数组 T 3 大小 n1 n2 n3 到数组 T 4 大小 n1 n2 n3
  • 调试 Julia v.0.6

    我克隆了一个存储库 https github com XiaojingGeorgeZhang OBCA tree master AutonomousParking在 Julia 0 5 和 0 6 中进行了测试 我之前使用的是最新的 Jul
  • Julia DataFrame 中列的累积和

    在 Python Pandas 中 如果我想用现有列的累积和创建一个新列 我会这样做 df cumulative sum df scores cumsum 在 Julia 中执行此操作的等效方法是什么 您可以使用基本方法cumsum计算向量
  • 在向量的参数向量上调度时出现 MethodError

    我编写了一个函数 该函数在向量的向量上进行分派Integers 但是 当我尝试使用它时 出现 MethodError julia gt foo x Vector Vector lt Integer last last x julia gt

随机推荐