关于离线文档问题

有没有离线的文档(英文的,中文的肯定还没出来),是pdf的那种(因为在电脑上看不太方便,想打印出来方便一些做些笔记)我看到网上有一份版本在这里[Offline Julia 1.0 documentation - #7 by mortenpi - General Usage - Julia Programming Language],不过是非官方版本的。不知道你们可不可以从源文件(Markdown文件)中生成pdf(我试了好几次,但就是搞不好),如果实在不行的用这个非官方的版本凑合也可以,不过我想要一个比较新一点的文档。

官方文档的 Makefile 里有 PDF 格式的目标,直接 make pdf 就可以。

ref:


如果不是从源编译的版本,可能会出现
环境变量的问题,以及相对路径的问题。

wo@utp:~/julia$ make -C doc pdf
make: Entering directory '/home/wo/julia/doc'
/home/wo/julia/deps/tools/jlchecksum UnicodeData.txt
Building PDF documentation.
/home/wo/julia/usr/bin/julia --color=yes /home/wo/julia/doc/make.jl -- pdf linkcheck= doctest=
make: /home/wo/julia/usr/bin/julia: Command not found
Makefile:42: recipe for target 'pdf' failed
make: *** [pdf] Error 127
make: Leaving directory '/home/wo/julia/doc'

调整一下可执行文件的路径 make -C doc pdf -e JULIA_EXECUTABLE=julia

还可能会出现相对路径的问题:

wo@utp:~/julia/doc$ make pdf -e JULIA_EXECUTABLE=julia
/home/wo/julia/deps/tools/jlchecksum UnicodeData.txt
Building PDF documentation.
julia --color=yes /home/wo/julia/doc/make.jl -- pdf linkcheck= doctest=
  Updating registry at `deps/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
Documenter: setting up build directory.
Documenter: expanding markdown templates.
 !! Warning in src/manual/unicode-input.md:

Failed to evaluate `@eval` block.

ERROR: SystemError("opening file /home/wo/doc/UnicodeData.txt", 2, nothing)

我用的是编译好的二进制文件,放在 /home/wo/julia-1.0.0/bin 里。
unicode-input.md 里使用的是相对可执行文件的路径

file = normpath(Sys.BINDIR, "..", "..", "doc", "UnicodeData.txt")

需要修改一下。
我改成了 normpath(@__DIR__, "..", "..", "..", "..", "UnicodeData.txt") 应该有更优雅的写法。
继续编译需要 LaTeX 据没有继续了。

Documenter: rendering document.
 !! `latexmk` and `lualatex` required for PDF generation.
Build finished.

1 个赞

用浏览器打开官方Julia二进制文件里类似julia/share/doc/julia/html/en/index.html的位置的文件就可以了。虽然不是PDF,但是是离线的。

成功了没有,我前面没有成功就放弃了

对,我也没有成功,中间出了很多错误(而且这个pdf生成是不是要用Latex,不过反正我也装了),我放弃了

可以用这个脚本,但只支持英文文档,所以要把markdown文件用官方原版替换一下

discourse好像不能传文件,我群里发你了

不知道是不是我装的latex的问题,文档里的代码块render不了

目前的设置里,没有允许普通用户上传图片以外的文件

有需要的话,可以去设置里 authorized extensions for staff添加。(不过建议先别添加)

另外,目前的设置里,管理员可以在私信里上传任意文件(拖到私信对话框里就行)。

1 个赞

我又在 Windows 下试了试

julia 1.0 + TeXLive 环境

  1. clone 或者下载 1.0 的 repo
    clone 的切换到 git checkout v1.0.0

  2. 手工下载 www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt
    保存到 julia-master\doc\UnicodeData.txt

  3. 修改 julia-master\doc\src\manual\unicode-input.md 第 34 行
    改为文件对应的绝对路径。有更优雅的写法务必告诉我

    file = normpath("C:\\Users\\woclass\\Desktop\\GitHub\\julia\\doc", "UnicodeData.txt")
  1. julia-master\doc 下执行 julia.exe --color=yes .\make.jl -- pdf -e JULIA_EXECUTABLE=julia

失败了。


单独编译 .tex 文件

先装上 python 的 pygmentize 包和 RobotoMono 字体

我抽出了 生成的 TheJuliaLanguage.tex 手工导入 documenter.sty

注释掉导入其它包的两句

%\usepackage{./documenter}
%\usepackage{./custom}

然后 xelatex -shell-escape TheJuliaLanguage.tex 编译 x3
latexmk -f -interaction=nonstopmode -view=none -lualatex -shell-escape TheJuliaLanguage.tex 一次

ref: Documenter.jl/LaTeXWriter.jl

然后就能正常显示代码了。不过目录没了,有待修复。 已修复

编译好的版本


@Gnimuc

  1. 看 log 它用的是 minted 包,需要 python 包 pygmentize 的支持。装一下就应该能用了。
    ref: LaTeX技巧703:minted包使用环境的搭建 - LaTeX科技排版工作室
  2. 装上 RobotoMono 字体
1 个赞

谢谢了:pray:(不过还真是复杂,但幸好我们只用做一次,以后还可以接着用)