Skip to content

Allow building the documentation as a PDF#2307

Merged
fingolfin merged 15 commits into
Nemocas:masterfrom
varuntrehan7:vt/pdf-build-AA
Mar 4, 2026
Merged

Allow building the documentation as a PDF#2307
fingolfin merged 15 commits into
Nemocas:masterfrom
varuntrehan7:vt/pdf-build-AA

Conversation

@varuntrehan7
Copy link
Copy Markdown
Contributor

@varuntrehan7 varuntrehan7 commented Jan 19, 2026

Continuing the job from oscar-system/Oscar.jl#5627.

@codecov
Copy link
Copy Markdown

codecov Bot commented Jan 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.19%. Comparing base (1a7d93c) to head (325bf05).
⚠️ Report is 125 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2307      +/-   ##
==========================================
+ Coverage   88.00%   88.19%   +0.18%     
==========================================
  Files         127      127              
  Lines       31803    32863    +1060     
==========================================
+ Hits        27989    28983     +994     
- Misses       3814     3880      +66     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@varuntrehan7

This comment was marked as resolved.

@lgoettgens

This comment was marked as resolved.

@varuntrehan7

This comment was marked as resolved.

@lgoettgens

This comment was marked as resolved.

Comment thread .github/workflows/CI.yml Outdated
@fingolfin

This comment was marked as resolved.

@varuntrehan7
Copy link
Copy Markdown
Contributor Author

@varuntrehan7 instead of trying random things, I recommend you post the actual error you are seeing which stumps you!

So I dug through the logs from before you try to switch to tectonic (please revert that), and found this error:

Collected error summary (may duplicate other messages):
  lualatex: Command for 'lualatex' gave return code 1
      Refer to 'AbstractAlgebra.jl.log' and/or above output for details

Error: LaTeXWriter: failed to compile tex with latexmk. Logs and partial output can be found in ../../../../../tmp/jl_TkK37L
  exception = 
    failed process: Process(`latexmk -f -interaction=batchmode -halt-on-error -view=none -lualatex -shell-escape AbstractAlgebra.jl.tex`, ProcessExited(12)) [12]
    
ERROR: LoadError: Compiling the .tex file failed. See logs for more information.
Stacktrace:

So that's the same as we saw with Oscar: TeX runs into an error -- probbaly due to some LaTeX syntax error in one our .md files or docstrings.

To deal with this, you need to look into the actual log file; its location is given in the error message (here: ../../../../../tmp/jl_TkK37L). But of course you can't easily access it on the CI runner. So: you'll need to try building the documentation locally, and then look a the log file. It should give a clue what went wrong. If you can't figure it out, just attach the log file and we might be able to give some guidance.

okay got it, I was a bit stuck so was just trying things out( I will revert it ) and you are right I will post the error here if i cant resolve it, thanks!

@varuntrehan7
Copy link
Copy Markdown
Contributor Author

varuntrehan7 commented Jan 28, 2026

i tried to build it locally, heres the log error

- 1259:! Undefined control sequence.
File: pgfcoreimage.code.tex 2023-01-15 v3.1.10 (3.1.10)
)
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexte
rnal.code.tex
File: pgfcoreexternal.code.tex 2023-01-15 v3.1.10 (3.1.10)
\pgfexternal@startupbox=\box76
)
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelaye
rs.code.tex
File: pgfcorelayers.code.tex 2023-01-15 v3.1.10 (3.1.10)
)
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretran
sparency.code.tex
File: pgfcoretransparency.code.tex 2023-01-15 v3.1.10 (3.1.10)
)
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatt
erns.code.tex
File: pgfcorepatterns.code.tex 2023-01-15 v3.1.10 (3.1.10)
)
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.
code.tex
File: pgfcorerdf.code.tex 2023-01-15 v3.1.10 (3.1.10)
)))
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/modules/pgfmoduleshape
s.code.tex
File: pgfmoduleshapes.code.tex 2023-01-15 v3.1.10 (3.1.10)
\pgfnodeparttextbox=\box77
)
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.
code.tex
File: pgfmoduleplot.code.tex 2023-01-15 v3.1.10 (3.1.10)
)
(/usr/local/texlive/2025basic/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-ve
rsion-0-65.sty
Package: pgfcomp-version-0-65 2023-01-15 v3.1.10 (3.1.10)
\pgf@nodesepstart=\dimen325
\pgf@nodesepend=\dimen326
)
(/usr/local/texlive/2025basic/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-ve
rsion-1-18.sty
Package: pgfcomp-version-1-18 2023-01-15 v3.1.10 (3.1.10)
)) (/usr/local/texlive/2025basic/texmf-dist/tex/latex/pgf/utilities/pgffor.sty 
(/usr/local/texlive/2025basic/texmf-dist/tex/latex/pgf/math/pgfmath.sty (/usr/l
ocal/texlive/2025basic/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex))
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/utilities/pgffor.code.
tex
Package: pgffor 2023-01-15 v3.1.10 (3.1.10)
\pgffor@iter=\dimen327
\pgffor@skip=\dimen328
\pgffor@stack=\toks49
\pgffor@toks=\toks50
))
(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tik
z.code.tex
Package: tikz 2023-01-15 v3.1.10 (3.1.10)

(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/libraries/pgflibrarypl
othandlers.code.tex
File: pgflibraryplothandlers.code.tex 2023-01-15 v3.1.10 (3.1.10)
\pgf@plot@mark@count=\count400
\pgfplotmarksize=\dimen329
)
\tikz@lastx=\dimen330
\tikz@lasty=\dimen331
\tikz@lastxsaved=\dimen332
\tikz@lastysaved=\dimen333
\tikz@lastmovetox=\dimen334
\tikz@lastmovetoy=\dimen335
\tikzleveldistance=\dimen336
\tikzsiblingdistance=\dimen337
\tikz@figbox=\box78
\tikz@figbox@bg=\box79
\tikz@tempbox=\box80
\tikz@tempbox@bg=\box81
\tikztreelevel=\count401
\tikznumberofchildren=\count402
\tikznumberofcurrentchild=\count403
\tikz@fig@count=\count404

(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/modules/pgfmodulematri
x.code.tex
File: pgfmodulematrix.code.tex 2023-01-15 v3.1.10 (3.1.10)
\pgfmatrixcurrentrow=\count405
\pgfmatrixcurrentcolumn=\count406
\pgf@matrix@numberofcolumns=\count407
)
\tikz@expandcount=\count408

(/usr/local/texlive/2025basic/texmf-dist/tex/generic/pgf/frontendlayer/tikz/lib
raries/tikzlibrarytopaths.code.tex
File: tikzlibrarytopaths.code.tex 2023-01-15 v3.1.10 (3.1.10)
))) (/usr/local/texlive/2025basic/texmf-dist/tex/latex/environ/environ.sty
Package: environ 2014/05/04 v0.3 A new way to define environments
(/usr/local/texlive/2025basic/texmf-dist/tex/latex/trimspaces/trimspaces.sty
Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list
))
\tcb@titlebox=\box82
\tcb@upperbox=\box83
\tcb@lowerbox=\box84
\tcb@phantombox=\box85
\c@tcbbreakpart=\count409
\c@tcblayer=\count410
\c@tcolorbox@number=\count411
\l__tcobox_tmpa_box=\box86
\l__tcobox_tmpa_dim=\dimen338
! Undefined control sequence.
l.76 \NewStructureName
                    {tcb/box}

Here is how much of LuaTeX's memory you used:
 31716 strings out of 475506
 125061,1373583 words of node,token memory allocated
 1082 words of node memory still in use:
   3 hlist, 1 rule, 1 dir, 3 kern, 1 glyph, 6 attribute, 183 glue_spec, 6 attrib
ute_list, 2 if_stack, 2 write, 1 pdf_colorstack nodes
   avail lists: 1:3,2:18,3:3,4:4,5:2,7:4,9:2,11:3
 54050 multiletter control sequences out of 65536+600000
 39 fonts using 31430695 bytes
 115i,1n,132p,521b,267s stack positions out of 10000i,1000n,20000p,200000b,200000s
!  ==> Fatal error occurred, no output PDF file produced!

@fingolfin
Copy link
Copy Markdown
Member

Is that the full .log file?

@varuntrehan7
Copy link
Copy Markdown
Contributor Author

AbstractAlgebra.jl.log
no, this is the whole file.

@varuntrehan7
Copy link
Copy Markdown
Contributor Author

varuntrehan7 commented Jan 30, 2026

I should add one clarification,

With the original configuration (i.e. without warnonly = true), makedocs aborts earlier due to missing docstrings in several @docs blocks, so the LaTeX stage is never reached and no log file is produced. for example these -

 ┌ Error: no docs found for 'Base.sqrt(::FracElem{T}) where {T <: RingElem}' in `@docs` block in docs/src/fraction.md:304-306
│ ```@docs
│ Base.sqrt(::FracElem{T}) where {T <: RingElem}
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'Base.sqrt(::Generic.RationalFunctionFieldElem{T, U}) where {T <: FieldElem, U <: Union{PolyRingElem, MPolyRingElem}}' in `@docs` block in docs/src/function_field.md:165-167
│ ```@docs
│ Base.sqrt(::Generic.RationalFunctionFieldElem{T, U}) where {T <: FieldElem, U <: Union{PolyRingElem, MPolyRingElem}}
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'gens(::Generic.Ideal{T}) where T <: RingElement' in `@docs` block in docs/src/ideal.md:87-89
│ ```@docs
│ gens(::Generic.Ideal{T}) where T <: RingElement
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'is_subset(::Generic.Ideal{T}, ::Generic.Ideal{T}) where T <: RingElement' in `@docs` block in docs/src/ideal.md:119-121
│ ```@docs
│ is_subset(::Generic.Ideal{T}, ::Generic.Ideal{T}) where T <: RingElement
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'transpose(::MatrixElem{T}) where T <: RingElement' in `@docs` block in docs/src/matrix.md:67-93
│ ```@docs
│ number_of_rows(::MatrixElem{T}) where T <: RingElement
│ number_of_columns(::MatrixElem{T}) where T <: RingElement
│ length(::MatrixElem{T}) where T <: RingElement
│ isempty(::MatrixElem{T}) where T <: RingElement
│ identity_matrix(::Ring, ::Int)
│ identity_matrix(::MatElem{T}) where T <: RingElement
│ ones_matrix(::Ring, ::Int, ::Int)
│ scalar_matrix(R::Ring, n::Int, a::RingElement)
│ diagonal_matrix(::RingElement, ::Int, ::Int)
│ zero(::MatElem{T}, ::Ring) where T <: RingElement
│ one(::MatElem{T}) where T <: RingElement
│ transpose(::MatrixElem{T}) where T <: RingElement
│ tr(::MatElem{T}) where T <: RingElement
│ det{T <: RingElem}(::MatElem{T})
│ rank{T <: RingElem}(::MatElem{T})
│ lower_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ upper_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ strictly_lower_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ strictly_upper_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ is_lower_triangular(::MatrixElem)
│ is_upper_triangular(::MatrixElem)
│ is_diagonal(::MatrixElem)
│ change_base_ring(::Ring, ::MatElem{T}) where T <: RingElement
│ Base.map(f, ::MatrixElem{T}) where T <: RingElement
│ Base.map!(f, ::MatrixElem{S}, ::MatrixElem{T}) where {S <: RingElement, T <: RingElement}
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'is_lower_triangular(::MatrixElem)' in `@docs` block in docs/src/matrix.md:67-93
│ ```@docs
│ number_of_rows(::MatrixElem{T}) where T <: RingElement
│ number_of_columns(::MatrixElem{T}) where T <: RingElement
│ length(::MatrixElem{T}) where T <: RingElement
│ isempty(::MatrixElem{T}) where T <: RingElement
│ identity_matrix(::Ring, ::Int)
│ identity_matrix(::MatElem{T}) where T <: RingElement
│ ones_matrix(::Ring, ::Int, ::Int)
│ scalar_matrix(R::Ring, n::Int, a::RingElement)
│ diagonal_matrix(::RingElement, ::Int, ::Int)
│ zero(::MatElem{T}, ::Ring) where T <: RingElement
│ one(::MatElem{T}) where T <: RingElement
│ transpose(::MatrixElem{T}) where T <: RingElement
│ tr(::MatElem{T}) where T <: RingElement
│ det{T <: RingElem}(::MatElem{T})
│ rank{T <: RingElem}(::MatElem{T})
│ lower_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ upper_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ strictly_lower_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ strictly_upper_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ is_lower_triangular(::MatrixElem)
│ is_upper_triangular(::MatrixElem)
│ is_diagonal(::MatrixElem)
│ change_base_ring(::Ring, ::MatElem{T}) where T <: RingElement
│ Base.map(f, ::MatrixElem{T}) where T <: RingElement
│ Base.map!(f, ::MatrixElem{S}, ::MatrixElem{T}) where {S <: RingElement, T <: RingElement}
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'is_upper_triangular(::MatrixElem)' in `@docs` block in docs/src/matrix.md:67-93
│ ```@docs
│ number_of_rows(::MatrixElem{T}) where T <: RingElement
│ number_of_columns(::MatrixElem{T}) where T <: RingElement
│ length(::MatrixElem{T}) where T <: RingElement
│ isempty(::MatrixElem{T}) where T <: RingElement
│ identity_matrix(::Ring, ::Int)
│ identity_matrix(::MatElem{T}) where T <: RingElement
│ ones_matrix(::Ring, ::Int, ::Int)
│ scalar_matrix(R::Ring, n::Int, a::RingElement)
│ diagonal_matrix(::RingElement, ::Int, ::Int)
│ zero(::MatElem{T}, ::Ring) where T <: RingElement
│ one(::MatElem{T}) where T <: RingElement
│ transpose(::MatrixElem{T}) where T <: RingElement
│ tr(::MatElem{T}) where T <: RingElement
│ det{T <: RingElem}(::MatElem{T})
│ rank{T <: RingElem}(::MatElem{T})
│ lower_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ upper_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ strictly_lower_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ strictly_upper_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ is_lower_triangular(::MatrixElem)
│ is_upper_triangular(::MatrixElem)
│ is_diagonal(::MatrixElem)
│ change_base_ring(::Ring, ::MatElem{T}) where T <: RingElement
│ Base.map(f, ::MatrixElem{T}) where T <: RingElement
│ Base.map!(f, ::MatrixElem{S}, ::MatrixElem{T}) where {S <: RingElement, T <: RingElement}
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'is_diagonal(::MatrixElem)' in `@docs` block in docs/src/matrix.md:67-93
│ ```@docs
│ number_of_rows(::MatrixElem{T}) where T <: RingElement
│ number_of_columns(::MatrixElem{T}) where T <: RingElement
│ length(::MatrixElem{T}) where T <: RingElement
│ isempty(::MatrixElem{T}) where T <: RingElement
│ identity_matrix(::Ring, ::Int)
│ identity_matrix(::MatElem{T}) where T <: RingElement
│ ones_matrix(::Ring, ::Int, ::Int)
│ scalar_matrix(R::Ring, n::Int, a::RingElement)
│ diagonal_matrix(::RingElement, ::Int, ::Int)
│ zero(::MatElem{T}, ::Ring) where T <: RingElement
│ one(::MatElem{T}) where T <: RingElement
│ transpose(::MatrixElem{T}) where T <: RingElement
│ tr(::MatElem{T}) where T <: RingElement
│ det{T <: RingElem}(::MatElem{T})
│ rank{T <: RingElem}(::MatElem{T})
│ lower_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ upper_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ strictly_lower_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ strictly_upper_triangular_matrix(L::AbstractVector{T}) where {T <: RingElement}
│ is_lower_triangular(::MatrixElem)
│ is_upper_triangular(::MatrixElem)
│ is_diagonal(::MatrixElem)
│ change_base_ring(::Ring, ::MatElem{T}) where T <: RingElement
│ Base.map(f, ::MatrixElem{T}) where T <: RingElement
│ Base.map!(f, ::MatrixElem{S}, ::MatrixElem{T}) where {S <: RingElement, T <: RingElement}
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'is_skew_symmetric(::MatrixElem)' in `@docs` block in docs/src/matrix.md:463-467
│ ```@docs
│ is_symmetric(::MatrixElem)
│ 
│ is_skew_symmetric(::MatrixElem)
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'characteristic(::Generic.AbsMSeries)' in `@docs` block in docs/src/mseries.md:243-245
│ ```@docs
│ characteristic(::Generic.AbsMSeries)
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'evaluate(::NCPolyRingElem, ::Integer)' in `@docs` block in docs/src/ncpolynomial.md:353-356
│ ```@docs
│ evaluate{T <: NCRingElem}(::NCPolyRingElem{T}, ::T)
│ evaluate(::NCPolyRingElem, ::Integer)
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'polynomial_ring_only(R::Ring, s::Symbol; cached::Bool=true)' in `@docs` block in docs/src/poly_interface.md:148-150
│ ```@docs
│ polynomial_ring_only(R::Ring, s::Symbol; cached::Bool=true)
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'Base.sqrt(::PolyRingElem{T}; check::Bool) where T <: RingElement' in `@docs` block in docs/src/polynomial.md:677-679
│ ```@docs
│ Base.sqrt(::PolyRingElem{T}; check::Bool) where T <: RingElement
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'Base.sqrt(a::Generic.PuiseuxSeriesElem)' in `@docs` block in docs/src/puiseux.md:332-334
│ ```@docs
│ Base.sqrt(a::Generic.PuiseuxSeriesElem)
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'Base.sqrt{T <: Integer}(::ResFieldElem{T})' in `@docs` block in docs/src/residue.md:267-269
│ ```@docs
│ Base.sqrt{T <: Integer}(::ResFieldElem{T})
│ ```
└ @ Documenter ~/.julia/packages/Documenter/xvqbW/src/utilities/utilities.jl:47
┌ Error: no docs found for 'Base.sqrt(a::RelPowerSeriesRingElem)' in `@docs` block in docs/src/series.md:690-692
│ ```@docs
│ Base.sqrt(a::RelPowerSeriesRingElem)
│ ```

To be able to reach the LaTeX failure, I temporarily enabled warnonly = true locally only, which allowed Documenter to proceed far enough to generate the LaTeX output.

@fingolfin
Copy link
Copy Markdown
Member

I took the liberty of reformatting your comment using code block fences, i.e., triple backticks ``` to make them more readable -- please do that next time yourself (no big issue, just is helpful).

Those no docs found errors you are seeing are very suspicious. Do you also get them with master? How exactly are you running the tests locally?

@fingolfin
Copy link
Copy Markdown
Member

If I run this locally I get a quite different error in the log:

LaTeX Font Info:    Font shape `TU/DejaVuSans(0)/m/it' will be
(Font)              scaled to size 7.88116pt on input line 359.
[8]

! LaTeX Error: Unknown graphics extension: .svg.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.383 ...dth=\linewidth]{assets/parents_diagram.svg}

So yeah, that won't work. We'd need a PDF version of that SVG. But just to see what happens, I remove the two lines referencing SVGs in docs/src/visualizing_types.md.

With that hack, building the PDF succeeded

@fingolfin
Copy link
Copy Markdown
Member

I've merged PR #2324 to hopefully fix CI.

@fingolfin fingolfin closed this Feb 3, 2026
@fingolfin fingolfin reopened this Feb 3, 2026
@fingolfin fingolfin added doc This change adds or pertains to documentation release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes labels Feb 3, 2026
Comment thread docs/make.jl Outdated
Comment thread docs/make.jl Outdated
@varuntrehan7
Copy link
Copy Markdown
Contributor Author

I took the liberty of reformatting your comment using code block fences, i.e., triple backticks ``` to make them more readable -- please do that next time yourself (no big issue, just is helpful).

Those no docs found errors you are seeing are very suspicious. Do you also get them with master? How exactly are you running the tests locally?

oh thankyou i had no idea you can do that, i will do it next time and yes i am also getting them at master, i am running it locally using this - julia --project=docs -e 'include("docs/make.jl")'.

@fingolfin
Copy link
Copy Markdown
Member

The tests now run locally, if you still see problems locally then there is an issue with your setup.

You write that you are doing

julia --project=docs -e 'include("docs/make.jl")

That can work if the Manifest is up-to-date, and you have dev'ed AbstractAlgebra. What do you see when you do

julia --project=docs -e "using Pkg; Pkg.status()"

Comment thread docs/make.jl Outdated
size_threshold_warn = 204800,
size_threshold = 409600,
),
Documenter.LaTeX(),
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need a way to turn this off (or on): building the PDF is much slower than building HTML. So I want this off while I test the docs locally.

In Julia this is done in its doc/make.jl by checking:

# Check if we are building a PDF
const render_pdf = "pdf" in ARGS

and then use render_pdf to determine whether Documenter.LaTeX is included in the list of formats. Then you can run this to produce a PDF:

julia --project=docs docs/make.jl pdf

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While we are at it, it would also be nice if one could disable the doctests, e.g. by passing nodoctests or so, then it would set doctest=false

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay I got it, thanks!

@varuntrehan7
Copy link
Copy Markdown
Contributor Author

Please have a look at this @fingolfin , Also next should i do Nemo as we discussed before?

Comment thread docs/make.jl
Comment thread docs/make.jl Outdated
Comment thread .github/workflows/CI.yml Outdated
version: '1.10'
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- name: Install TeX
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- name: Install TeX
- name: Install TeX

Comment thread .github/workflows/CI.yml
Comment thread .github/workflows/CI.yml Outdated
Comment thread .github/workflows/CI.yml Outdated
@varuntrehan7 varuntrehan7 marked this pull request as ready for review February 21, 2026 01:15
@varuntrehan7 varuntrehan7 marked this pull request as draft February 21, 2026 01:15
varuntrehan7 and others added 2 commits February 21, 2026 06:46
Co-authored-by: Max Horn <max@quendi.de>
Co-authored-by: Max Horn <max@quendi.de>
@varuntrehan7 varuntrehan7 marked this pull request as ready for review February 21, 2026 01:18
Comment thread .github/workflows/CI.yml Outdated
@fingolfin fingolfin added triage and removed triage labels Mar 2, 2026
@fingolfin
Copy link
Copy Markdown
Member

OK, it works, let's merge it.

But note that the latest upload-artifacts version now can upload files without zip compression. We want that for the PDFs. Please make a follow-up PR to do that.

You can also start on a PR for Nemo adding a PDF version of the manual there, too.

@fingolfin fingolfin merged commit 822fa3d into Nemocas:master Mar 4, 2026
26 checks passed
@lgoettgens lgoettgens changed the title Create PDF version for AbstractAlgebra Create PDF documentation Mar 4, 2026
@lgoettgens lgoettgens changed the title Create PDF documentation Allow building the documentation as a PDF Mar 4, 2026
aftabkhaoop-web

This comment was marked as spam.

@aftabkhaoop-web

This comment was marked as spam.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doc This change adds or pertains to documentation release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants