diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp
index ba3a8f21a570a9a50e13eddd5fb83ea3b5d87db0..2dbef5a4c620c882ab33cf8d8feb1223cff4c83d 100644
--- a/Applications/ApplicationsLib/ProjectData.cpp
+++ b/Applications/ApplicationsLib/ProjectData.cpp
@@ -471,7 +471,7 @@ void ProjectData::parseLinearSolvers(BaseLib::ConfigTree const& config)
     //! \ogs_file_param{prj__linear_solvers__linear_solver}
     for (auto conf : config.getConfigSubtreeList("linear_solver"))
     {
-        //! \ogs_file_param{linear_solver__name}
+        //! \ogs_file_param{prj__linear_solvers__linear_solver__name}
         auto const name = conf.getConfigParameter<std::string>("name");
         BaseLib::insertIfKeyUniqueElseError(
             _linear_solvers,
diff --git a/Documentation/ProjectFile/i_ProjectFile.md b/Documentation/ProjectFile/i_ProjectFile.md
index b95ed9e4e8d1612de69809f372e61df71b594255..4a6d7e083b57d80587ae9f50e829c0d27ae9613d 100644
--- a/Documentation/ProjectFile/i_ProjectFile.md
+++ b/Documentation/ProjectFile/i_ProjectFile.md
@@ -14,7 +14,7 @@ different prefixes, namely:
    file.<br>
    Usually one can choose one of several cases by specifying the associated
    <tt>&lt;type&gt;</tt> tag in the input file.<br>
-   Example: \ref ogs_file_param__linear_solver
+   Example: \ref ogs_file_param__prj__linear_solvers__linear_solver
    and \ref ogs_file_param__parameter__Constant (<tt>&lt;type&gt;Constant&lt;/type&gt;</tt>)
    vs. \ref ogs_file_param__parameter__MeshNode (<tt>&lt;type&gt;MeshNode&lt;/type&gt;</tt>)
 
diff --git a/Documentation/ProjectFile/linear_solver/c_linear_solver.md b/Documentation/ProjectFile/linear_solver/c_linear_solver.md
deleted file mode 100644
index 2421001b7de105ef51cf5db89ec0a636d0f37a25..0000000000000000000000000000000000000000
--- a/Documentation/ProjectFile/linear_solver/c_linear_solver.md
+++ /dev/null
@@ -1,6 +0,0 @@
-In this group the configuration of linear solvers is described.
-
-Unlike all other options, there can be configurations for linear solvers from
-the Eigen, LIS, PETSc, etc. libraries at the same time. Which solver will be
-applied in the end is determined by the build configuration of the OGS
-executable.
diff --git a/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md b/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md
index b18a1074e7e43a302c36cdf4b4dafea0e8429e32..7ec54badcebefb2b203eeaa7a89c6ed3b0bbaecf 100644
--- a/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md
+++ b/Documentation/ProjectFile/prj/linear_solvers/i_linear_solvers.md
@@ -1 +1,3 @@
-Contains linear solver settings.
+In this group the configuration of linear solvers is described.
+
+The linear solvers are distinguished by their names.
diff --git a/Documentation/ProjectFile/linear_solver/eigen/i_eigen.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/i_eigen.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/i_eigen.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/i_eigen.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_error_tolerance.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_error_tolerance.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_error_tolerance.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_error_tolerance.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_max_iteration_step.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_max_iteration_step.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_max_iteration_step.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_max_iteration_step.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_precon_type.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_precon_type.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_precon_type.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_precon_type.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_scaling.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_scaling.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_scaling.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_scaling.md
diff --git a/Documentation/ProjectFile/linear_solver/eigen/t_solver_type.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_solver_type.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/eigen/t_solver_type.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/eigen/t_solver_type.md
diff --git a/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md
index 21e2a2010b77c5b24da255a80f74cd6681ef283d..e31a29eeea25564e7991f8c96aa77467585278ab 100644
--- a/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md
+++ b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/i_linear_solver.md
@@ -1,3 +1,6 @@
 Defines a single linear solver.
 
-See \ref ogs_file_param__linear_solver.
+Unlike all other options, there can be configurations for linear solvers from
+the Eigen, LIS, PETSc, etc. libraries at the same time. Which solver will be
+applied in the end is determined by the build configuration of the OGS
+executable.
diff --git a/Documentation/ProjectFile/linear_solver/petsc/i_petsc.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/i_petsc.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/petsc/i_petsc.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/i_petsc.md
diff --git a/Documentation/ProjectFile/linear_solver/petsc/t_parameters.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/t_parameters.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/petsc/t_parameters.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/t_parameters.md
diff --git a/Documentation/ProjectFile/linear_solver/petsc/t_prefix.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/t_prefix.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/petsc/t_prefix.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/petsc/t_prefix.md
diff --git a/Documentation/ProjectFile/linear_solver/t_lis.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_lis.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/t_lis.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_lis.md
diff --git a/Documentation/ProjectFile/linear_solver/t_name.md b/Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_name.md
similarity index 100%
rename from Documentation/ProjectFile/linear_solver/t_name.md
rename to Documentation/ProjectFile/prj/linear_solvers/linear_solver/t_name.md
diff --git a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md
index 66686d595320bcb3cb0682696664c3d4f8a70bed..106190c28483a20a54c5c24cc56ef463bb667424 100644
--- a/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md
+++ b/Documentation/ProjectFile/prj/nonlinear_solvers/nonlinear_solver/t_linear_solver.md
@@ -1,4 +1,4 @@
 Specifies the linear solver used to solve the linearized equation systems.
 
-The linear solver is referenced by \ref ogs_file_param__linear_solver__name
+The linear solver is referenced by \ref ogs_file_param__prj__linear_solvers__linear_solver__name
 "name".
diff --git a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
index c04c897a6e1e582358065a95330895f6ab801a6b..b00e9c0c550b27967b70a36106481d1b6b5def88 100644
--- a/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
+++ b/MathLib/LinAlg/Eigen/EigenLinearSolver.cpp
@@ -218,33 +218,33 @@ EigenLinearSolver::~EigenLinearSolver() = default;
 void EigenLinearSolver::setOption(BaseLib::ConfigTree const& option)
 {
     ignoreOtherLinearSolvers(option, "eigen");
-    //! \ogs_file_param{linear_solver__eigen}
+    //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen}
     auto const ptSolver = option.getConfigSubtreeOptional("eigen");
     if (!ptSolver)
         return;
 
     if (auto solver_type =
-            //! \ogs_file_param{linear_solver__eigen__solver_type}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__solver_type}
             ptSolver->getConfigParameterOptional<std::string>("solver_type")) {
         _option.solver_type = _option.getSolverType(*solver_type);
     }
     if (auto precon_type =
-            //! \ogs_file_param{linear_solver__eigen__precon_type}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__precon_type}
             ptSolver->getConfigParameterOptional<std::string>("precon_type")) {
         _option.precon_type = _option.getPreconType(*precon_type);
     }
     if (auto error_tolerance =
-            //! \ogs_file_param{linear_solver__eigen__error_tolerance}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__error_tolerance}
             ptSolver->getConfigParameterOptional<double>("error_tolerance")) {
         _option.error_tolerance = *error_tolerance;
     }
     if (auto max_iteration_step =
-            //! \ogs_file_param{linear_solver__eigen__max_iteration_step}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__max_iteration_step}
             ptSolver->getConfigParameterOptional<int>("max_iteration_step")) {
         _option.max_iterations = *max_iteration_step;
     }
     if (auto scaling =
-            //! \ogs_file_param{linear_solver__eigen__scaling}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__eigen__scaling}
             ptSolver->getConfigParameterOptional<bool>("scaling")) {
 #ifdef USE_EIGEN_UNSUPPORTED
         _option.scaling = *scaling;
diff --git a/MathLib/LinAlg/Lis/LisOption.h b/MathLib/LinAlg/Lis/LisOption.h
index d3313d8d82f02facbf2b4f50bc9b3abde0728609..94d3eac62883567369f72c1162be8098432f7007 100644
--- a/MathLib/LinAlg/Lis/LisOption.h
+++ b/MathLib/LinAlg/Lis/LisOption.h
@@ -44,7 +44,7 @@ struct LisOption
     {
         if (options) {
             ignoreOtherLinearSolvers(*options, "lis");
-            //! \ogs_file_param{linear_solver__lis}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__lis}
             if (auto s = options->getConfigParameterOptional<std::string>("lis")) {
                 if (!s->empty()) {
                     _option_string += " " + *s;
diff --git a/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp b/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp
index 961678f85bf8d423d9cf039d5cb2ec1463f0a5be..75b1a84db9d803a7ad0261ecd25cb47df314322d 100644
--- a/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp
+++ b/MathLib/LinAlg/PETSc/PETScLinearSolver.cpp
@@ -33,16 +33,16 @@ PETScLinearSolver::PETScLinearSolver(const std::string /*prefix*/,
     if (option) {
         ignoreOtherLinearSolvers(*option, "petsc");
 
-        //! \ogs_file_param{linear_solver__petsc}
+        //! \ogs_file_param{prj__linear_solvers__linear_solver__petsc}
         if (auto const subtree = option->getConfigSubtreeOptional("petsc"))
         {
             if (auto const parameters =
-                //! \ogs_file_param{linear_solver__petsc__parameters}
+                //! \ogs_file_param{prj__linear_solvers__linear_solver__petsc__parameters}
                 subtree->getConfigParameterOptional<std::string>("parameters")) {
                 petsc_options = *parameters;
             }
 
-            //! \ogs_file_param{linear_solver__petsc__prefix}
+            //! \ogs_file_param{prj__linear_solvers__linear_solver__petsc__prefix}
             if (auto const pre = subtree->getConfigParameterOptional<std::string>("prefix")) {
                 if (!pre->empty())
                     prefix = *pre + "_";
diff --git a/scripts/doc/append-xml-tags.py b/scripts/doc/append-xml-tags.py
index 3daea1acfd00ed32b626e0c6679fe00b0e4f04b2..6a3e8afe2d7aa93945d8a2924cca05d818256747 100755
--- a/scripts/doc/append-xml-tags.py
+++ b/scripts/doc/append-xml-tags.py
@@ -36,7 +36,6 @@ docdir    = os.path.join(docauxdir, "dox", "ProjectFile")
 # used to expand documentation entry points to full xml tag paths
 # that are used in the prj file.
 tag_path_expansion_table = {
-    "linear_solver":      "linear_solvers.linear_solver",
     "process":            "processes.process",
     "parameter":          "parameters.parameter",
     "prj": "",
diff --git a/scripts/doc/linked-xml-file.py b/scripts/doc/linked-xml-file.py
index 6bd522d7e3c3e03cf02c9fbda97d6913bcb9e75e..cf67be752634a82cf97264d6251716d7eddaaa96 100755
--- a/scripts/doc/linked-xml-file.py
+++ b/scripts/doc/linked-xml-file.py
@@ -34,7 +34,6 @@ docauxdir = os.path.abspath(docauxdir)
 outdir    = os.path.join(docauxdir, "dox", "CTestProjectFiles")
 
 tag_path_expansion_table = {
-    "prj__linear_solvers__linear_solver":                                                "linear_solver",
     "prj__processes__process":                                                           "process",
     "prj__parameters__parameter":                                                        "parameter"
 }