Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

📚Switch to using DocumenterInterLinks.jl #712

Merged
merged 8 commits into from
Mar 23, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/documenter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
version: 1.3.361
- uses: julia-actions/setup-julia@latest
with:
version: 1.9
version: "1.10"
- name: Julia Cache
uses: julia-actions/cache@v1
- name: Cache Quarto
Expand Down
6 changes: 5 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [0.9.15] unreleased

## Fixed
### Added

* using `DocumenterInterLinks` for links to other Julia packages documentation.

### Fixed

* several typographical errors in the docs
* unifies to use two backticks ``` `` ``` for math instead of ` $ ` further in the docs
Expand Down
2 changes: 2 additions & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ ManifoldDiff = "af67fdf4-a580-4b9f-bbec-742ef357defd"
ManifoldsBase = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb"
Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
MatrixEquations = "99c1a7ee-ab34-5fd5-8076-27c950a045f4"
NonlinearSolve = "8913a72c-1f9b-4ce2-8d82-65094dcecaec"
Quaternions = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
RecursiveArrayTools = "731186ca-8d62-57ce-b412-fbd966d074cd"
Expand Down Expand Up @@ -54,6 +55,7 @@ ManifoldDiff = "0.3.7"
ManifoldsBase = "0.15.6"
Markdown = "1.6"
MatrixEquations = "2.2"
NonlinearSolve = " < 3.8"
OrdinaryDiffEq = "6.31"
Plots = "1"
Quaternions = "0.5, 0.6, 0.7"
Expand Down
1 change: 1 addition & 0 deletions docs/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
DocumenterCitations = "daee34ce-89f3-4625-b898-19384cb65244"
DocumenterInterLinks = "d12716ef-a0f6-4df4-a9f1-a5a34e75c656"
FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000"
Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
HybridArrays = "1baab800-613f-4b0a-84e4-9cd3431bfbb9"
Expand Down
7 changes: 5 additions & 2 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ end

# (c) load necessary packages for the docs
using Plots, RecipesBase, Manifolds, ManifoldsBase, Documenter, PythonPlot
using DocumenterCitations
using DocumenterCitations, DocumenterInterLinks
# required for loading methods that handle differential equation solving
using OrdinaryDiffEq, BoundaryValueDiffEq, DiffEqCallbacks
# required for loading the manifold tests functions
Expand Down Expand Up @@ -65,6 +65,9 @@ end

# (e) ...finally! make docs
bib = CitationBibliography(joinpath(@__DIR__, "src", "references.bib"); style=:alpha)
links = InterLinks(
"ManifoldsBase" => ("https://juliamanifolds.github.io/ManifoldsBase.jl/stable/"),
)
makedocs(;
# for development, we disable prettyurls
format=Documenter.HTML(
Expand Down Expand Up @@ -177,7 +180,7 @@ makedocs(;
"References" => "misc/references.md",
],
],
plugins=[bib],
plugins=[bib, links],
warnonly=[:missing_docs],
)
deploydocs(repo="github.com/JuliaManifolds/Manifolds.jl.git", push_preview=true)
2 changes: 1 addition & 1 deletion docs/src/features/utilities.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Ease of notation

The following terms introduce a nicer notation for some operations, for example using the ∈ operator, ``p ∈ \mathcal M`` to determine whether ``p`` is a point on the [`AbstractManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#ManifoldsBase.AbstractManifold) ``\mathcal M``.
The following terms introduce a nicer notation for some operations, for example using the ∈ operator, ``p ∈ \mathcal M`` to determine whether ``p`` is a point on the [`AbstractManifold`](@extref `ManifoldsBase.AbstractManifold`) ``\mathcal M``.

````@docs
in
Expand Down
4 changes: 2 additions & 2 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Manifolds.Manifolds

The implemented manifolds are accompanied by their mathematical formulae.

The manifolds are implemented using the interface for manifolds given in [`ManifoldsBase.jl`](https://juliamanifolds.github.io/ManifoldsBase.jl/).
The manifolds are implemented using the interface for manifolds given in [`ManifoldsBase.jl`](@extref ManifoldsBase :doc:`index`).
You can use that interface to implement your own software on manifolds, such that all manifolds
based on that interface can be used within your code.

Expand All @@ -20,7 +20,7 @@ To install the package just type
using Pkg; Pkg.add("Manifolds")
```

Then you can directly start, for example to stop half way from the north pole on the [`Sphere`](@ref) to a point on the the equator, you can generate the [`shortest_geodesic`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/functions.html#ManifoldsBase.shortest_geodesic-Tuple{AbstractManifold,%20Any,%20Any}).
Then you can directly start, for example to stop half way from the north pole on the [`Sphere`](@ref) to a point on the the equator, you can generate the [`shortest_geodesic`](@extref `ManifoldsBase.shortest_geodesic-Tuple{AbstractManifold, Any, Any}`).
It internally employs [`log`](@ref log(::Sphere,::Any,::Any)) and [`exp`](@ref exp(::Sphere,::Any,::Any)).

```@example
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manifolds/connection.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ Order = [:function]

## [Charts and bases of vector spaces](@id connections_charts)

All connection-related functions take a basis of a vector space as one of the arguments. This is needed because generally there is no way to define these functions without referencing a basis. In some cases there is no need to be explicit about this basis, and then for example a [`DefaultOrthonormalBasis`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/bases.html#ManifoldsBase.DefaultOrthonormalBasis) object can be used. In cases where being explicit about these bases is needed, for example when using multiple charts, a basis can be specified, for example using [`induced_basis`](@ref Main.Manifolds.induced_basis).
All connection-related functions take a basis of a vector space as one of the arguments. This is needed because generally there is no way to define these functions without referencing a basis. In some cases there is no need to be explicit about this basis, and then for example a [`DefaultOrthonormalBasis`](@extref `ManifoldsBase.DefaultOrthonormalBasis`) object can be used. In cases where being explicit about these bases is needed, for example when using multiple charts, a basis can be specified, for example using [`induced_basis`](@ref Main.Manifolds.induced_basis).
2 changes: 1 addition & 1 deletion docs/src/manifolds/essentialmanifold.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Essential Manifold
The essential manifold is modeled as an [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) of the ``3×3`` [`Rotations`](@ref) and uses [`NestedPowerRepresentation`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.NestedPowerRepresentation).
The essential manifold is modeled as an [`AbstractPowerManifold`](@extref `ManifoldsBase.AbstractPowerManifold`) of the ``3×3`` [`Rotations`](@ref) and uses [`NestedPowerRepresentation`](@extref `ManifoldsBase.NestedPowerRepresentation`).

```@autodocs
Modules = [Manifolds]
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manifolds/euclidean.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# [Euclidean space](@id EuclideanSection)

The Euclidean space ``ℝ^n`` is a simple model space, since it has curvature constantly zero everywhere; hence, nearly all operations simplify.
The easiest way to generate an Euclidean space is to use a field, i.e. [`AbstractNumbers`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/types.html#number-system), e.g. to create the ``ℝ^n`` or ``ℝ^{n×n}`` you can simply type `M = ℝ^n` or `ℝ^(n,n)`, respectively.
The easiest way to generate an Euclidean space is to use a field, i.e. [`AbstractNumbers`](@extref ManifoldsBase number-system), e.g. to create the ``ℝ^n`` or ``ℝ^{n×n}`` you can simply type `M = ℝ^n` or `ℝ^(n,n)`, respectively.

```@autodocs
Modules = [Manifolds]
Expand Down
4 changes: 2 additions & 2 deletions docs/src/manifolds/graph.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Graph manifold

For a given graph ``G(V,E)`` implemented using [`Graphs.jl`](https://juliagraphs.github.io/Graphs.jl/latest/), the [`GraphManifold`](@ref) models a [`PowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.PowerManifold) either on the nodes or edges of the graph, depending on the [`GraphManifoldType`](@ref).
For a given graph ``G(V,E)`` implemented using [`Graphs.jl`](https://juliagraphs.github.io/Graphs.jl/latest/), the [`GraphManifold`](@ref) models a [`PowerManifold`](@extref `ManifoldsBase.PowerManifold`) either on the nodes or edges of the graph, depending on the [`GraphManifoldType`](@ref).
i.e., it's either a ``\mathcal M^{\lvert V \rvert}`` for the case of a vertex manifold or a ``\mathcal M^{\lvert E \rvert}`` for the case of a edge manifold.

## Example
Expand All @@ -20,7 +20,7 @@ add_edge!(G, 2, 3)
N = GraphManifold(G, M, VertexManifold())
```

It supports all [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) operations (it is based on [`NestedPowerRepresentation`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.NestedPowerRepresentation)) and furthermore it is possible to compute a graph logarithm:
It supports all [`AbstractPowerManifold`](@extref `ManifoldsBase.AbstractPowerManifold`) operations (it is based on [`NestedPowerRepresentation`](@extref `ManifoldsBase.NestedPowerRepresentation`)) and furthermore it is possible to compute a graph logarithm:

```@setup graph-1
using Manifolds
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manifolds/group.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# [Group manifolds](@id GroupManifoldSection)

Lie groups, groups that are Riemannian manifolds with a smooth binary group operation [`AbstractGroupOperation`](@ref), are implemented as [`AbstractDecoratorManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/decorator.html#ManifoldsBase.AbstractDecoratorManifold) and specifying the group operation using the [`IsGroupManifold`](@ref) or by decorating an existing manifold with a group operation using [`GroupManifold`](@ref).
Lie groups, groups that are Riemannian manifolds with a smooth binary group operation [`AbstractGroupOperation`](@ref), are implemented as [`AbstractDecoratorManifold`](@extref `ManifoldsBase.AbstractDecoratorManifold`) and specifying the group operation using the [`IsGroupManifold`](@ref) or by decorating an existing manifold with a group operation using [`GroupManifold`](@ref).

The common addition and multiplication group operations of [`AdditionOperation`](@ref) and [`MultiplicationOperation`](@ref) are provided, though their behavior may be customized for a specific group.

Expand Down
10 changes: 5 additions & 5 deletions docs/src/manifolds/metric.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ If you later introduce a second, the old (first) metric can be used with the (no
This manifold decorator serves two purposes:

1. to implement different metrics (e.g. in closed form) for one `AbstractManifold`
2. to provide a way to compute geodesics on manifolds, where this [`AbstractMetric`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractMetric) does not yield closed formula.
2. to provide a way to compute geodesics on manifolds, where this [`AbstractMetric`](@extref `ManifoldsBase.AbstractMetric`) does not yield closed formula.

```@contents
Pages = ["metric.md"]
Expand All @@ -31,15 +31,15 @@ Order = [:type]

## Implement Different Metrics on the same Manifold

In order to distinguish different metrics on one manifold, one can introduce two [`AbstractMetric`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractMetric)s and use this type to dispatch on the metric, see [`SymmetricPositiveDefinite`](@ref).
To avoid overhead, one [`AbstractMetric`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractMetric) can then be marked as being the default, i.e. the one that is used, when no [`MetricManifold`](@ref) decorator is present.
In order to distinguish different metrics on one manifold, one can introduce two [`AbstractMetric`](@extref `ManifoldsBase.AbstractMetric`)s and use this type to dispatch on the metric, see [`SymmetricPositiveDefinite`](@ref).
To avoid overhead, one [`AbstractMetric`](@extref `ManifoldsBase.AbstractMetric`) can then be marked as being the default, i.e. the one that is used, when no [`MetricManifold`](@ref) decorator is present.
This avoids reimplementation of the first existing metric, access to the metric-dependent functions that were implemented using the undecorated manifold, as well as the transparent fallback of the corresponding [`MetricManifold`](@ref) with default metric to the undecorated implementations.
This does not cause any runtime overhead.
Introducing a default [`AbstractMetric`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractMetric) serves a better readability of the code when working with different metrics.
Introducing a default [`AbstractMetric`](@extref `ManifoldsBase.AbstractMetric`) serves a better readability of the code when working with different metrics.

## Implementation of Metrics

For the case that a [`local_metric`](@ref) is implemented as a bilinear form that is positive definite, the following further functions are provided, unless the corresponding [`AbstractMetric`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractMetric) is marked as default – then the fallbacks mentioned in the last section are used for e.g. the exponential map.
For the case that a [`local_metric`](@ref) is implemented as a bilinear form that is positive definite, the following further functions are provided, unless the corresponding [`AbstractMetric`](@extref `ManifoldsBase.AbstractMetric`) is marked as default – then the fallbacks mentioned in the last section are used for e.g. the exponential map.

```@autodocs
Modules = [Manifolds, ManifoldsBase]
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manifolds/multinomial.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Order = [:type]

## Functions

Most functions are directly implemented for an [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) with [`ArrayPowerRepresentation`](@ref) except the following special cases:
Most functions are directly implemented for an [`AbstractPowerManifold`](@extref `ManifoldsBase.AbstractPowerManifold`) with [`ArrayPowerRepresentation`](@ref) except the following special cases:

```@autodocs
Modules = [Manifolds]
Expand Down
4 changes: 2 additions & 2 deletions docs/src/manifolds/oblique.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Oblique manifold

The oblique manifold ``\mathcal{OB}(n,m)`` is modeled as an [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) of the (real-valued) [`Sphere`](@ref) and uses [`ArrayPowerRepresentation`](@ref).
The oblique manifold ``\mathcal{OB}(n,m)`` is modeled as an [`AbstractPowerManifold`](@extref `ManifoldsBase.AbstractPowerManifold`) of the (real-valued) [`Sphere`](@ref) and uses [`ArrayPowerRepresentation`](@ref).
Points on the torus are hence matrices, ``x ∈ ℝ^{n,m}``.

```@autodocs
Expand All @@ -11,7 +11,7 @@ Order = [:type]

## Functions

Most functions are directly implemented for an [`AbstractPowerManifold`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/manifolds.html#ManifoldsBase.AbstractPowerManifold) with [`ArrayPowerRepresentation`](@ref) except the following special cases:
Most functions are directly implemented for an [`AbstractPowerManifold`](@extref `ManifoldsBase.AbstractPowerManifold`) with [`ArrayPowerRepresentation`](@ref) except the following special cases:

```@autodocs
Modules = [Manifolds]
Expand Down
Loading
Loading