From ae857a098a4584229a45eb14300a4f526bc98d67 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby Date: Fri, 8 Sep 2023 17:41:40 +0200 Subject: [PATCH] doc: Add user and developers documentation scheme. --- doc/dev/build.sh | 10 ++++ doc/dev/documentation.bib | 1 + doc/dev/documentation.org | 55 +++++++++++++++++++ doc/images/riverly.png | Bin 0 -> 34738 bytes doc/tools/PamhyrDoc.cls | 102 ++++++++++++++++++++++++++++++++++++ doc/tools/latex.org | 19 +++++++ doc/tools/macro.org | 35 +++++++++++++ doc/tools/ref.bib | 0 doc/tools/setup.el | 30 +++++++++++ doc/users/build.sh | 10 ++++ doc/users/documentation.bib | 1 + doc/users/documentation.org | 20 +++++++ 12 files changed, 283 insertions(+) create mode 100755 doc/dev/build.sh create mode 120000 doc/dev/documentation.bib create mode 100644 doc/dev/documentation.org create mode 100644 doc/images/riverly.png create mode 100644 doc/tools/PamhyrDoc.cls create mode 100644 doc/tools/latex.org create mode 100644 doc/tools/macro.org create mode 100644 doc/tools/ref.bib create mode 100644 doc/tools/setup.el create mode 100755 doc/users/build.sh create mode 120000 doc/users/documentation.bib create mode 100644 doc/users/documentation.org diff --git a/doc/dev/build.sh b/doc/dev/build.sh new file mode 100755 index 00000000..476dd5ad --- /dev/null +++ b/doc/dev/build.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +# Build the PDF + +emacs -Q -q -nw --batch \ + --eval "(require 'org)" \ + --eval "(require 'ox-latex)" \ + --eval "(load-file \"../tools/setup.el\")" \ + --file ./documentation.org \ + -f org-latex-export-to-pdf diff --git a/doc/dev/documentation.bib b/doc/dev/documentation.bib new file mode 120000 index 00000000..8319e149 --- /dev/null +++ b/doc/dev/documentation.bib @@ -0,0 +1 @@ +../tools/ref.bib \ No newline at end of file diff --git a/doc/dev/documentation.org b/doc/dev/documentation.org new file mode 100644 index 00000000..99867b08 --- /dev/null +++ b/doc/dev/documentation.org @@ -0,0 +1,55 @@ +# documentation.org -- Pamhyr developers documentation +# Copyright (C) 2023 INRAE +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# -*- coding: utf-8 -*- + +#+STARTUP: indent + +#+INCLUDE: ../tools/macro.org +#+INCLUDE: ../tools/latex.org + +#+TITLE: Developers documentation +#+SUBTITLE: Version: {{{version}}} +#+AUTHOR: {{{INRAE}}} + +#+OPTIONS: toc:t +#+LANGUAGE: UKenglish + +* TODO The environment +* TODO Architecture +** TODO Model +** TODO Solver +** TODO View +** TODO Unit tests +** TODO The debug mode +* TODO Build the project +** TODO Building packages +*** TODO Linux +*** TODO Windows +* TODO Documentation files +** TODO The environment +** TODO Org-mode +*** TODO Format +*** TODO Macro +*** TODO Footnote +*** TODO References +*** TODO Export +* TODO How to contribute? +** TODO Contribution rules +** TODO Translate +** TODO Code contribution + +{{{biblio}}} diff --git a/doc/images/riverly.png b/doc/images/riverly.png new file mode 100644 index 0000000000000000000000000000000000000000..14a38a2f43f67e0aa88cb5b692dc110c681a9d2d GIT binary patch literal 34738 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. + +# -*- coding: utf-8 -*- + +#+LaTeX_CLASS: PamhyrDoc diff --git a/doc/tools/macro.org b/doc/tools/macro.org new file mode 100644 index 00000000..2f897ae4 --- /dev/null +++ b/doc/tools/macro.org @@ -0,0 +1,35 @@ +# macro.org -- Pamhyr documentation macro +# Copyright (C) 2023 INRAE +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# -*- coding: utf-8 -*- + +# Constant name +#+MACRO: oldPamhyr PAMHyR +#+MACRO: Pamhyr Pamhyr2 +#+MACRO: Mage Mage +#+MACRO: Rubarbe RubarBE +#+MACRO: Inrae INRAE + +# Information +#+MACRO: version (eval (pamhyr-version)) +#+MACRO: current-file (eval (pamhyr-current-file)) + +# Special format +#+MACRO: file =$1= + +# Biblio +#+MACRO: cite \cite{$1} +#+MACRO: biblio \bibliography{documentation} diff --git a/doc/tools/ref.bib b/doc/tools/ref.bib new file mode 100644 index 00000000..e69de29b diff --git a/doc/tools/setup.el b/doc/tools/setup.el new file mode 100644 index 00000000..81335dd3 --- /dev/null +++ b/doc/tools/setup.el @@ -0,0 +1,30 @@ +(require 'org) +(require 'subr-x) + +(add-to-list + 'org-latex-classes + '("PamhyrDoc" + "\\documentclass{../tools/PamhyrDoc}" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))) + + +(setq org-latex-pdf-process + '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" + "bibtex documentation" + "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f" + "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")) + + +(defun pamhyr-version () + "Return the contents of the pamhyr version file." + (with-temp-buffer + (insert-file-contents "../../VERSION") + (buffer-string))) + +(defun pamhyr-current-file () + (let ((lst (split-string (buffer-file-name) "/"))) + (string-join (nthcdr (- (length lst) 3) lst) "/"))) diff --git a/doc/users/build.sh b/doc/users/build.sh new file mode 100755 index 00000000..476dd5ad --- /dev/null +++ b/doc/users/build.sh @@ -0,0 +1,10 @@ +#! /bin/sh + +# Build the PDF + +emacs -Q -q -nw --batch \ + --eval "(require 'org)" \ + --eval "(require 'ox-latex)" \ + --eval "(load-file \"../tools/setup.el\")" \ + --file ./documentation.org \ + -f org-latex-export-to-pdf diff --git a/doc/users/documentation.bib b/doc/users/documentation.bib new file mode 120000 index 00000000..8319e149 --- /dev/null +++ b/doc/users/documentation.bib @@ -0,0 +1 @@ +../tools/ref.bib \ No newline at end of file diff --git a/doc/users/documentation.org b/doc/users/documentation.org new file mode 100644 index 00000000..1907bf93 --- /dev/null +++ b/doc/users/documentation.org @@ -0,0 +1,20 @@ +#+STARTUP: indent + +#+INCLUDE: ../tools/macro.org +#+INCLUDE: ../tools/latex.org + +#+TITLE: User documentation +#+SUBTITLE: Version: {{{version}}} +#+AUTHOR: {{{INRAE}}} + +#+OPTIONS: toc:t +#+LANGUAGE: UKenglish + +* TODO Over view +* TODO Get started +** Installation +*** Linux +*** Windows +* TODO Usage + +{{{biblio}}}