mirror of
https://github.com/getpelican/pelican.git
synced 2025-10-15 20:28:56 +02:00
Début Documentation Français
This commit is contained in:
parent
282730e635
commit
156d757bd8
28 changed files with 3809 additions and 0 deletions
130
docs/fr/Makefile
Normal file
130
docs/fr/Makefile
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
PAPER =
|
||||
BUILDDIR = _build
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||
|
||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
@echo " dirhtml to make HTML files named index.html in directories"
|
||||
@echo " singlehtml to make a single large HTML file"
|
||||
@echo " pickle to make pickle files"
|
||||
@echo " json to make JSON files"
|
||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||
@echo " qthelp to make HTML files and a qthelp project"
|
||||
@echo " devhelp to make HTML files and a Devhelp project"
|
||||
@echo " epub to make an epub"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||
@echo " text to make text files"
|
||||
@echo " man to make manual pages"
|
||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
|
||||
clean:
|
||||
-rm -rf $(BUILDDIR)/*
|
||||
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
dirhtml:
|
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||
|
||||
singlehtml:
|
||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||
|
||||
pickle:
|
||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||
@echo
|
||||
@echo "Build finished; now you can process the pickle files."
|
||||
|
||||
json:
|
||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||
@echo
|
||||
@echo "Build finished; now you can process the JSON files."
|
||||
|
||||
htmlhelp:
|
||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||
|
||||
qthelp:
|
||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Raclette.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Raclette.qhc"
|
||||
|
||||
devhelp:
|
||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/Raclette"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Raclette"
|
||||
@echo "# devhelp"
|
||||
|
||||
epub:
|
||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||
@echo
|
||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||
|
||||
latex:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo
|
||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||
"(use \`make latexpdf' here to do that automatically)."
|
||||
|
||||
latexpdf:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through pdflatex..."
|
||||
make -C $(BUILDDIR)/latex all-pdf
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
text:
|
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||
@echo
|
||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||
|
||||
man:
|
||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||
@echo
|
||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||
|
||||
changes:
|
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||
@echo
|
||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||
|
||||
linkcheck:
|
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||
@echo
|
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||
|
||||
doctest:
|
||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt."
|
||||
BIN
docs/fr/_build/doctrees/basis.doctree
Normal file
BIN
docs/fr/_build/doctrees/basis.doctree
Normal file
Binary file not shown.
BIN
docs/fr/_build/doctrees/environment.pickle
Normal file
BIN
docs/fr/_build/doctrees/environment.pickle
Normal file
Binary file not shown.
BIN
docs/fr/_build/doctrees/faq.doctree
Normal file
BIN
docs/fr/_build/doctrees/faq.doctree
Normal file
Binary file not shown.
BIN
docs/fr/_build/doctrees/getting_started.doctree
Normal file
BIN
docs/fr/_build/doctrees/getting_started.doctree
Normal file
Binary file not shown.
BIN
docs/fr/_build/doctrees/index.doctree
Normal file
BIN
docs/fr/_build/doctrees/index.doctree
Normal file
Binary file not shown.
BIN
docs/fr/_build/doctrees/install.doctree
Normal file
BIN
docs/fr/_build/doctrees/install.doctree
Normal file
Binary file not shown.
BIN
docs/fr/_build/doctrees/internals.doctree
Normal file
BIN
docs/fr/_build/doctrees/internals.doctree
Normal file
Binary file not shown.
BIN
docs/fr/_build/doctrees/settings.doctree
Normal file
BIN
docs/fr/_build/doctrees/settings.doctree
Normal file
Binary file not shown.
BIN
docs/fr/_build/doctrees/themes.doctree
Normal file
BIN
docs/fr/_build/doctrees/themes.doctree
Normal file
Binary file not shown.
4
docs/fr/_build/html/.buildinfo
Normal file
4
docs/fr/_build/html/.buildinfo
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 169ffeb4c85c990fa0841cda8c347b3b
|
||||
tags: fbb0d17656682115ca4d033fb2f83ba1
|
||||
58
docs/fr/_build/latex/Makefile
Normal file
58
docs/fr/_build/latex/Makefile
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
# Makefile for Sphinx LaTeX output
|
||||
|
||||
ALLDOCS = $(basename $(wildcard *.tex))
|
||||
ALLPDF = $(addsuffix .pdf,$(ALLDOCS))
|
||||
ALLDVI = $(addsuffix .dvi,$(ALLDOCS))
|
||||
|
||||
# Prefix for archive names
|
||||
ARCHIVEPRREFIX =
|
||||
# Additional LaTeX options
|
||||
LATEXOPTS =
|
||||
|
||||
all: $(ALLPDF)
|
||||
all-pdf: $(ALLPDF)
|
||||
all-dvi: $(ALLDVI)
|
||||
all-ps: all-dvi
|
||||
for f in *.dvi; do dvips $$f; done
|
||||
|
||||
zip: all-$(FMT)
|
||||
mkdir $(ARCHIVEPREFIX)docs-$(FMT)
|
||||
cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
|
||||
zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT)
|
||||
rm -r $(ARCHIVEPREFIX)docs-$(FMT)
|
||||
|
||||
tar: all-$(FMT)
|
||||
mkdir $(ARCHIVEPREFIX)docs-$(FMT)
|
||||
cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT)
|
||||
tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT)
|
||||
rm -r $(ARCHIVEPREFIX)docs-$(FMT)
|
||||
|
||||
bz2: tar
|
||||
bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar
|
||||
|
||||
# The number of LaTeX runs is quite conservative, but I don't expect it
|
||||
# to get run often, so the little extra time won't hurt.
|
||||
%.dvi: %.tex
|
||||
latex $(LATEXOPTS) '$<'
|
||||
latex $(LATEXOPTS) '$<'
|
||||
latex $(LATEXOPTS) '$<'
|
||||
-makeindex -s python.ist '$(basename $<).idx'
|
||||
-makeindex -s python.ist '$(basename mod$<).idx'
|
||||
latex $(LATEXOPTS) '$<'
|
||||
latex $(LATEXOPTS) '$<'
|
||||
|
||||
%.pdf: %.tex
|
||||
pdflatex $(LATEXOPTS) '$<'
|
||||
pdflatex $(LATEXOPTS) '$<'
|
||||
pdflatex $(LATEXOPTS) '$<'
|
||||
-makeindex -s python.ist '$(basename $<).idx'
|
||||
-makeindex -s python.ist '$(basename mod$<).idx'
|
||||
pdflatex $(LATEXOPTS) '$<'
|
||||
pdflatex $(LATEXOPTS) '$<'
|
||||
|
||||
clean:
|
||||
rm -f *.pdf *.dvi *.ps
|
||||
rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla
|
||||
|
||||
.PHONY: all all-pdf all-dvi all-ps clean
|
||||
|
||||
829
docs/fr/_build/latex/Raclette.tex
Normal file
829
docs/fr/_build/latex/Raclette.tex
Normal file
|
|
@ -0,0 +1,829 @@
|
|||
% Generated by Sphinx.
|
||||
\documentclass[letterpaper,10pt,english]{manual}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{babel}
|
||||
\usepackage{times}
|
||||
\usepackage[Bjarne]{fncychap}
|
||||
\usepackage{longtable}
|
||||
\usepackage{sphinx}
|
||||
|
||||
|
||||
\title{Raclette Documentation}
|
||||
\date{January 24, 2011}
|
||||
\release{2}
|
||||
\author{Alexis Métaireau}
|
||||
\newcommand{\sphinxlogo}{}
|
||||
\renewcommand{\releasename}{Release}
|
||||
\makeindex
|
||||
\makemodindex
|
||||
|
||||
\makeatletter
|
||||
\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax%
|
||||
\let\PYG@ul=\relax \let\PYG@tc=\relax%
|
||||
\let\PYG@bc=\relax \let\PYG@ff=\relax}
|
||||
\def\PYG@tok#1{\csname PYG@tok@#1\endcsname}
|
||||
\def\PYG@toks#1+{\ifx\relax#1\empty\else%
|
||||
\PYG@tok{#1}\expandafter\PYG@toks\fi}
|
||||
\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{%
|
||||
\PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}}
|
||||
\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}}
|
||||
|
||||
\def\PYG@tok@gd{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}}
|
||||
\def\PYG@tok@gu{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}}
|
||||
\def\PYG@tok@gt{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.25,0.82}{##1}}}
|
||||
\def\PYG@tok@gs{\let\PYG@bf=\textbf}
|
||||
\def\PYG@tok@gr{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}}
|
||||
\def\PYG@tok@cm{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
|
||||
\def\PYG@tok@vg{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
|
||||
\def\PYG@tok@m{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
|
||||
\def\PYG@tok@mh{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
|
||||
\def\PYG@tok@cs{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{\colorbox[rgb]{1.00,0.94,0.94}{##1}}}
|
||||
\def\PYG@tok@ge{\let\PYG@it=\textit}
|
||||
\def\PYG@tok@vc{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
|
||||
\def\PYG@tok@il{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
|
||||
\def\PYG@tok@go{\def\PYG@tc##1{\textcolor[rgb]{0.19,0.19,0.19}{##1}}}
|
||||
\def\PYG@tok@cp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@gi{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}}
|
||||
\def\PYG@tok@gh{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}}
|
||||
\def\PYG@tok@ni{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}}
|
||||
\def\PYG@tok@nl{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}}
|
||||
\def\PYG@tok@nn{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
|
||||
\def\PYG@tok@no{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}}
|
||||
\def\PYG@tok@na{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
\def\PYG@tok@nb{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@nc{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}}
|
||||
\def\PYG@tok@nd{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}}
|
||||
\def\PYG@tok@ne{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@nf{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}}
|
||||
\def\PYG@tok@si{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}}
|
||||
\def\PYG@tok@s2{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
\def\PYG@tok@vi{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
|
||||
\def\PYG@tok@nt{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}}
|
||||
\def\PYG@tok@nv{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}}
|
||||
\def\PYG@tok@s1{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
\def\PYG@tok@gp{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
|
||||
\def\PYG@tok@sh{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
\def\PYG@tok@ow{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@sx{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}}
|
||||
\def\PYG@tok@bp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@c1{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
|
||||
\def\PYG@tok@kc{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@c{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}}
|
||||
\def\PYG@tok@mf{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
|
||||
\def\PYG@tok@err{\def\PYG@bc##1{\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{##1}}}
|
||||
\def\PYG@tok@kd{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@ss{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}}
|
||||
\def\PYG@tok@sr{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}}
|
||||
\def\PYG@tok@mo{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
|
||||
\def\PYG@tok@mi{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}}
|
||||
\def\PYG@tok@kn{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@o{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}}
|
||||
\def\PYG@tok@kr{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@s{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
\def\PYG@tok@kp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@w{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}}
|
||||
\def\PYG@tok@kt{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}}
|
||||
\def\PYG@tok@sc{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
\def\PYG@tok@sb{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
\def\PYG@tok@k{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}}
|
||||
\def\PYG@tok@se{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
\def\PYG@tok@sd{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}}
|
||||
|
||||
\def\PYGZbs{\char`\\}
|
||||
\def\PYGZus{\char`\_}
|
||||
\def\PYGZob{\char`\{}
|
||||
\def\PYGZcb{\char`\}}
|
||||
\def\PYGZca{\char`\^}
|
||||
\def\PYGZsh{\char`\#}
|
||||
\def\PYGZpc{\char`\%}
|
||||
\def\PYGZdl{\char`\$}
|
||||
\def\PYGZti{\char`\~}
|
||||
% for compatibility with earlier versions
|
||||
\def\PYGZat{@}
|
||||
\def\PYGZlb{[}
|
||||
\def\PYGZrb{]}
|
||||
\makeatother
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
\hypertarget{--doc-index}{}
|
||||
|
||||
|
||||
Pelican est un generateur de blog simple codé en python
|
||||
\begin{itemize}
|
||||
\item {}
|
||||
Écrivez vos articles directement dans votre éditeur favori (vim !) et
|
||||
directement en syntaxe reStructuredText ou Markdown ;
|
||||
|
||||
\item {}
|
||||
Un outil simple en ligne de conmmande pour (re)générer le blog ;
|
||||
|
||||
\item {}
|
||||
Sortie complètement statique, facile pour l'héberger n'importe où ;
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\chapter{Fonctionnalités}
|
||||
|
||||
Pelican supporte actuellement :
|
||||
\begin{itemize}
|
||||
\item {}
|
||||
des articles de blog ;
|
||||
|
||||
\item {}
|
||||
des pages statiques ;
|
||||
|
||||
\item {}
|
||||
les commentaires via un service externe (\href{http://disqus.com}{disqus})
|
||||
Notez qu'étant bien un service externe assez pratique, vous ne gérez pas
|
||||
vous même les commentaires. Ce qui pourrait occasionner une perte de vos données;
|
||||
|
||||
\item {}
|
||||
support de template (les templates sont crées avec Jinja 2 \href{http://jinjna.pocoo.org}{jinja2}) ;
|
||||
|
||||
\item {}
|
||||
génération optionnelle de vos pages et articles en pdf.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\chapter{Pourquoi le nom ``Pelican'' ?}
|
||||
|
||||
Vous n'avez pas remarqué ? ''Pelican'' est un anagramme pour ``Calepin'' ;)
|
||||
|
||||
|
||||
\chapter{Code source}
|
||||
|
||||
Vous pouvez accéder au code source via mercurial sur \href{http://hg.notmyidea.org/pelican/}{http://hg.notmyidea.org/pelican/}
|
||||
ou via git à l'adresse \href{http://github.com/ametaireau/pelican/}{http://github.com/ametaireau/pelican/}
|
||||
|
||||
|
||||
\chapter{Feedback !}
|
||||
|
||||
Si vous voulez de nouvelles fonctionnalitées pour Pelican, n'hésitez pas à me le dire,
|
||||
à cloner le dépôt, etc … C'est open source !!!
|
||||
|
||||
Contactez moi à ``alexis at notmyidea dot org'' pour quelques requêtes ou retour d'expérience que ce soi !
|
||||
|
||||
|
||||
\chapter{Documentation}
|
||||
|
||||
\resetcurrentobjects
|
||||
\hypertarget{--doc-getting\_started}{}
|
||||
|
||||
\section{Installation et mise à jour de Pelican}
|
||||
|
||||
|
||||
\subsection{Installation}
|
||||
|
||||
Il y a deux façons d’installer Pelican sur son système. La première est via l’utilitaire
|
||||
pip, l’autre façon est de télécharger Pelican via Github. Ici nous allons voir les deux
|
||||
façons de procéder.
|
||||
|
||||
|
||||
\subsubsection{Via pip}
|
||||
|
||||
Pour installer Pelican via pip, vous aurez besoin du paquet python-pip. puis installez Pelican
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
\PYG{c}{\PYGZsh{} apt-get install python-pip}
|
||||
\PYG{c}{\PYGZsh{} pip install pelican}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\subsubsection{Via Github}
|
||||
|
||||
Pour installer Pelican en reprenant le code via Github, nous aurons besoin du paquet
|
||||
git-core pour récupérez les sources de Pelican. Puis nous procédons à l’installation
|
||||
|
||||
\begin{Verbatim}[commandchars=@\[\]]
|
||||
@# apt-get install git-core
|
||||
@$ git clone https://github.com/ametaireau/pelican.git
|
||||
@$ cd pelican
|
||||
@# python setup.py install
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\subsection{Mises à jour}
|
||||
|
||||
|
||||
\subsubsection{Via pip}
|
||||
|
||||
Rien de bien compliqué pour mettre à jour via pip
|
||||
|
||||
\begin{Verbatim}[commandchars=@\[\]]
|
||||
@$ cd votreRepertoireSource
|
||||
@$ pip install --upgrade pelican
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\subsubsection{Via Github}
|
||||
|
||||
C'est un peu plus long avec Github par contre
|
||||
|
||||
\begin{Verbatim}[commandchars=@\[\]]
|
||||
@$ cd votreRepertoireSource
|
||||
@$ git pull origin master
|
||||
@$ cd pelican
|
||||
@# python setup.py install
|
||||
\end{Verbatim}
|
||||
|
||||
Vous aurez un message d’erreur si le module setuptools de python n’est pas installé.
|
||||
La manipulation est la suivante
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
\PYG{c}{\PYGZsh{} apt-get install python-setuptools}
|
||||
\end{Verbatim}
|
||||
|
||||
|
||||
\subsection{Alors, quelle méthode choisir ?}
|
||||
|
||||
Vous avez le choix entre deux méthodes, mais aussi entre deux concepts. La méthode
|
||||
de Github est la version de développement, où les modifications arrivent assez
|
||||
fréquemment sans être testées à fond. La version de pip est une version arrêtée avec un
|
||||
numéro de version dans laquelle vous aurez moins de bug. N’oubliez cependant pas
|
||||
que le projet est très jeune et manque donc de maturité. Si vous aimez avoir les toutes
|
||||
dernières versions utilisez Github, sinon penchez vous sur pip.
|
||||
|
||||
\resetcurrentobjects
|
||||
\hypertarget{--doc-settings}{}
|
||||
|
||||
\section{Settings}
|
||||
|
||||
|
||||
\subsection{Specifying the settings}
|
||||
|
||||
Pelican is configurable thanks to a configuration file, that you can pass to
|
||||
the command line:
|
||||
|
||||
\begin{Verbatim}[commandchars=@\[\]]
|
||||
@$ pelican -s path/to/your/settingsfile.py path
|
||||
\end{Verbatim}
|
||||
|
||||
Settings are given as the form of a python module (a file). You can have an
|
||||
example by looking at \href{https://github.com/ametaireau/pelican/raw/master/samples/pelican.conf.py}{/samples/pelican.conf.py}
|
||||
|
||||
All the settings identifiers must be set in caps, otherwise they will not be
|
||||
processed.
|
||||
|
||||
Here are the available settings. Please note that all the settings you put in
|
||||
this file will be passed to the templates as well.
|
||||
|
||||
\begin{tabulary}{\textwidth}{|L|L|}
|
||||
\hline
|
||||
\textbf{
|
||||
Setting name
|
||||
} & \textbf{
|
||||
what it does ?
|
||||
}\\
|
||||
\hline
|
||||
|
||||
\emph{AUTHOR}
|
||||
&
|
||||
Default author (put your name)
|
||||
\\
|
||||
|
||||
\emph{CATEGORY\_FEED}
|
||||
&
|
||||
Where to put the atom categories feeds. default is
|
||||
\emph{feeds/\%s.atom.xml}, where \%s is the name of the
|
||||
category.
|
||||
\\
|
||||
|
||||
\emph{CATEGORY\_FEED\_RSS}
|
||||
&
|
||||
Where to put the categories rss feeds. default is None
|
||||
(no rss)
|
||||
\\
|
||||
|
||||
\emph{CSS\_FILE}
|
||||
&
|
||||
To specify the CSS file you want to load, if it's not
|
||||
the default one (`main.css')
|
||||
\\
|
||||
|
||||
\emph{DEFAULT\_CATEGORY}
|
||||
&
|
||||
The default category to fallback on. \emph{misc} by default.
|
||||
\\
|
||||
|
||||
\emph{DEFAULT\_LANG}
|
||||
&
|
||||
The default language to use. Default is `en'.
|
||||
\\
|
||||
|
||||
\emph{DISPLAY\_PAGES\_ON\_MENU}
|
||||
&
|
||||
Display or not the pages on the menu of the template.
|
||||
Templates can follow or not this settings.
|
||||
\\
|
||||
|
||||
\emph{FALLBACK\_ON\_FS\_DATE}
|
||||
&
|
||||
If True, pelican will use the file system dates infos
|
||||
(mtime) if it can't get informations from the
|
||||
metadata?
|
||||
\\
|
||||
|
||||
\emph{FEED}
|
||||
&
|
||||
relative url to output the atom feed. Default is
|
||||
\emph{feeds/all.atom.xml}
|
||||
\\
|
||||
|
||||
\emph{FEED\_RSS}
|
||||
&
|
||||
relative url to output the rss feed. Default is
|
||||
None (no rss)
|
||||
\\
|
||||
|
||||
\emph{JINJA\_EXTENSIONS}
|
||||
&
|
||||
A list of any Jinja2 extensions you want to use.
|
||||
Default is no extensions (the empty list).
|
||||
\\
|
||||
|
||||
\emph{KEEP\_OUTPUT\_DIRECTORY}
|
||||
&
|
||||
Keep the output directory and just update all the generated files.
|
||||
Default is to delete the output directory.
|
||||
\\
|
||||
|
||||
\emph{MARKUP}
|
||||
&
|
||||
A list of available markup languages you want to use.
|
||||
For the moment, only available values are \emph{rst} and \emph{md}.
|
||||
\\
|
||||
|
||||
\emph{OUTPUT\_PATH}
|
||||
&
|
||||
Where to output the generated files. Default to
|
||||
``output''
|
||||
\\
|
||||
|
||||
\emph{PATH}
|
||||
&
|
||||
path to look at for input files.
|
||||
\\
|
||||
|
||||
\emph{PDF\_PROCESSOR}
|
||||
&
|
||||
Put True if you want to have PDF versions of your
|
||||
documents. You will need to install \emph{rst2pdf}.
|
||||
\\
|
||||
|
||||
\emph{REVERSE\_ARCHIVE\_ORDER}
|
||||
&
|
||||
Reverse the archives order. (True makes it in
|
||||
descending order: the newer first)
|
||||
\\
|
||||
|
||||
\emph{SITEURL}
|
||||
&
|
||||
base URL of your website.
|
||||
\\
|
||||
|
||||
\emph{SITENAME}
|
||||
&
|
||||
Your site name,
|
||||
\\
|
||||
|
||||
\emph{STATIC\_PATHS}
|
||||
&
|
||||
The static paths you want to have accessible on the
|
||||
output path ``static''. By default, pelican will copy
|
||||
the `images' folder to the output folder.
|
||||
\\
|
||||
|
||||
\emph{STATIC\_THEME\_PATHS}
|
||||
&
|
||||
Static theme paths you want to copy. Default values
|
||||
is \emph{static}, but if your theme have others static paths,
|
||||
you can put them here.
|
||||
\\
|
||||
|
||||
\emph{THEME}
|
||||
&
|
||||
theme to use to product the output. can be the
|
||||
complete static path to a theme folder, or chosen
|
||||
between the list of default themes (see below)
|
||||
\\
|
||||
|
||||
\emph{TRANSLATION\_FEED}
|
||||
&
|
||||
Where to put the RSS feed for translations. Default
|
||||
is feeds/all-\%s.atom.xml where \%s is the name of the
|
||||
lang.
|
||||
\\
|
||||
\hline
|
||||
\end{tabulary}
|
||||
|
||||
|
||||
|
||||
\subsection{Themes}
|
||||
|
||||
3 themes are available. You can specify them using the \emph{-t} option:
|
||||
\begin{itemize}
|
||||
\item {}
|
||||
notmyidea
|
||||
|
||||
\item {}
|
||||
simple (a synonym for ``full text'' :)
|
||||
|
||||
\item {}
|
||||
martyalchin
|
||||
|
||||
\end{itemize}
|
||||
|
||||
You can define your own theme too, and specify it's emplacement in the same
|
||||
way (be sure to specify the full absolute path to it).
|
||||
|
||||
Here is \href{http://alexis.notmyidea.org/pelican/themes.html}{a guide on how to create your theme}
|
||||
|
||||
The \emph{notmyidea} theme can make good use of the following settings. I recommend
|
||||
to use them too in your themes.
|
||||
|
||||
\begin{tabulary}{\textwidth}{|L|L|}
|
||||
\hline
|
||||
\textbf{
|
||||
Setting name
|
||||
} & \textbf{
|
||||
what it does ?
|
||||
}\\
|
||||
\hline
|
||||
|
||||
\emph{DISQUS\_SITENAME}
|
||||
&
|
||||
Pelican can handle disqus comments, specify the
|
||||
sitename you've filled in on disqus
|
||||
\\
|
||||
|
||||
\emph{GITHUB\_URL}
|
||||
&
|
||||
Your github URL (if you have one), it will then
|
||||
use it to create a github ribbon.
|
||||
\\
|
||||
|
||||
\emph{GOOGLE\_ANALYTICS}
|
||||
&
|
||||
`UA-XXXX-YYYY' to activate google analytics.
|
||||
\\
|
||||
|
||||
\emph{LINKS}
|
||||
&
|
||||
A list of tuples (Title, Url) for links to appear on
|
||||
the header.
|
||||
\\
|
||||
|
||||
\emph{SOCIAL}
|
||||
&
|
||||
A list of tuples (Title, Url) to appear in the ``social''
|
||||
section.
|
||||
\\
|
||||
|
||||
\emph{TWITTER\_USERNAME}
|
||||
&
|
||||
Allows to add a button on the articles to tweet about
|
||||
them. Add you twitter username if you want this
|
||||
button to appear.
|
||||
\\
|
||||
\hline
|
||||
\end{tabulary}
|
||||
|
||||
|
||||
In addition, you can use the ``wide'' version of the \emph{notmyidea} theme, by
|
||||
adding that in your configuration:
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
\PYG{n}{CSS\PYGZus{}FILE} \PYG{o}{=} \PYG{l+s}{"}\PYG{l+s}{wide.css}\PYG{l+s}{"}
|
||||
\end{Verbatim}
|
||||
|
||||
\resetcurrentobjects
|
||||
\hypertarget{--doc-themes}{}
|
||||
|
||||
\hypertarget{theming-pelican}{}\section{How to create themes for pelican}
|
||||
|
||||
Pelican uses the great \href{http://jinjna.pocoo.org}{jinja2} templating engine to
|
||||
generate it's HTML output. The jinja2 syntax is really simple. If you want to
|
||||
create your own theme, feel free to take inspiration from the ``simple'' theme,
|
||||
which is available \href{https://github.com/ametaireau/pelican/tree/master/pelican/themes/simple/templates}{here}
|
||||
|
||||
|
||||
\subsection{Structure}
|
||||
|
||||
To make your own theme, you must follow the following structure:
|
||||
|
||||
\begin{Verbatim}[commandchars=@\[\]]
|
||||
├-- static
|
||||
@textbar[] ├-- css
|
||||
@textbar[] └-- images
|
||||
└-- templates
|
||||
├-- archives.html // to display archives
|
||||
├-- article.html // processed for each article
|
||||
├-- categories.html // must list all the categories
|
||||
├-- category.html // processed for each category
|
||||
├-- index.html // the index. List all the articles
|
||||
├-- page.html // processed for each page
|
||||
├-- tag.html // processed for each tag
|
||||
└-- tags.html // must list all the tags. Can be a tag cloud.
|
||||
\end{Verbatim}
|
||||
\begin{itemize}
|
||||
\item {}
|
||||
\emph{static} contains all the static content. It will be copied on the output
|
||||
\emph{theme/static} folder then. I've put the css and image folders, but they are
|
||||
just examples. Put what you need here.
|
||||
|
||||
\item {}
|
||||
\emph{templates} contains all the templates that will be used to generate the content.
|
||||
I've just put the mandatory templates here, you can define your own if it helps
|
||||
you to organize yourself while doing the theme.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\subsection{Templates and variables}
|
||||
|
||||
It's using a simple syntax, that you can embbed into your html pages.
|
||||
This document describes which templates should exists on a theme, and which
|
||||
variables will be passed to each template, while generating it.
|
||||
|
||||
All templates will receive the variables defined in your settings file, if they
|
||||
are in caps. You can access them directly.
|
||||
|
||||
|
||||
\subsubsection{Common variables}
|
||||
|
||||
All of those settings will be given to all templates.
|
||||
|
||||
\begin{tabulary}{\textwidth}{|L|L|}
|
||||
\hline
|
||||
\textbf{
|
||||
Variable
|
||||
} & \textbf{
|
||||
Description
|
||||
}\\
|
||||
\hline
|
||||
|
||||
articles
|
||||
&
|
||||
That's the list of articles, ordsered desc. by date
|
||||
all the elements are \emph{Article} objects, so you can
|
||||
access their properties (e.g. title, summary, author
|
||||
etc.
|
||||
\\
|
||||
|
||||
dates
|
||||
&
|
||||
The same list of article, but ordered by date,
|
||||
ascending
|
||||
\\
|
||||
|
||||
tags
|
||||
&
|
||||
A dict containing each tags (keys), and the list of
|
||||
relative articles.
|
||||
\\
|
||||
|
||||
categories
|
||||
&
|
||||
A dict containing each category (keys), and the
|
||||
list of relative articles.
|
||||
\\
|
||||
|
||||
pages
|
||||
&
|
||||
The list of pages
|
||||
\\
|
||||
\hline
|
||||
\end{tabulary}
|
||||
|
||||
|
||||
|
||||
\subsubsection{category.html}
|
||||
|
||||
This template will be processed for each of the existing categories, and will
|
||||
finally remain at output/category/\emph{category\_name}.html.
|
||||
|
||||
\begin{tabulary}{\textwidth}{|L|L|}
|
||||
\hline
|
||||
\textbf{
|
||||
Variable
|
||||
} & \textbf{
|
||||
Description
|
||||
}\\
|
||||
\hline
|
||||
|
||||
articles
|
||||
&
|
||||
The articles of this category
|
||||
\\
|
||||
|
||||
category
|
||||
&
|
||||
The name of the category being processed
|
||||
\\
|
||||
\hline
|
||||
\end{tabulary}
|
||||
|
||||
|
||||
|
||||
\subsubsection{article.html}
|
||||
|
||||
This template will be processed for each article. .html files will be outputed
|
||||
in output/\emph{article\_name}.html. Here are the specific variables it gets.
|
||||
|
||||
\begin{tabulary}{\textwidth}{|L|L|}
|
||||
\hline
|
||||
\textbf{
|
||||
Variable
|
||||
} & \textbf{
|
||||
Description
|
||||
}\\
|
||||
\hline
|
||||
|
||||
article
|
||||
&
|
||||
The article object to be displayed
|
||||
\\
|
||||
|
||||
category
|
||||
&
|
||||
The name of the category of the current article
|
||||
\\
|
||||
\hline
|
||||
\end{tabulary}
|
||||
|
||||
|
||||
|
||||
\subsubsection{tag.html}
|
||||
|
||||
For each tag, this template will be processed. It will create .html files in
|
||||
/output/tag/\emph{tag\_name}.html
|
||||
|
||||
\begin{tabulary}{\textwidth}{|L|L|}
|
||||
\hline
|
||||
\textbf{
|
||||
Variable
|
||||
} & \textbf{
|
||||
Description
|
||||
}\\
|
||||
\hline
|
||||
|
||||
tag
|
||||
&
|
||||
The name of the tag being processed
|
||||
\\
|
||||
|
||||
articles
|
||||
&
|
||||
Articles related to this tag
|
||||
\\
|
||||
\hline
|
||||
\end{tabulary}
|
||||
|
||||
|
||||
\resetcurrentobjects
|
||||
\hypertarget{--doc-internals}{}
|
||||
|
||||
\section{Pelican internals}
|
||||
|
||||
This section describe how pelican is working internally. As you'll see, it's
|
||||
quite simple, but a bit of documentation doesn't hurt :)
|
||||
|
||||
|
||||
\subsection{Overall structure}
|
||||
|
||||
What \emph{pelican} does, is taking a list of files, and processing them, to some
|
||||
sort of output. Usually, the files are restructured text and markdown files,
|
||||
and the output is a blog, but it can be anything you want.
|
||||
|
||||
I've separated the logic in different classes and concepts:
|
||||
\begin{itemize}
|
||||
\item {}
|
||||
\emph{writers} are responsible of all the writing process of the
|
||||
files. It's writing .html files, RSS feeds and so on. Since those operations
|
||||
are commonly used, the object is created once, and then passed to the
|
||||
generators.
|
||||
|
||||
\item {}
|
||||
\emph{readers} are used to read from various formats (Markdown, and Restructured
|
||||
Text for now, but the system is extensible). Given a file, they return
|
||||
metadata (author, tags, category etc) and content (HTML formated)
|
||||
|
||||
\item {}
|
||||
\emph{generators} generate the different outputs. For instance, pelican comes with
|
||||
\emph{ArticlesGenerator} and \emph{PageGenerator}, into others. Given
|
||||
a configurations, they can do whatever they want. Most of the time it's
|
||||
generating files from inputs.
|
||||
|
||||
\item {}
|
||||
\emph{pelican} also uses \emph{templates}, so it's easy to write you own theme. The
|
||||
syntax is \emph{jinja2}, and, trust me, really easy to learn, so don't hesitate
|
||||
a second.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\subsection{How to implement a new reader ?}
|
||||
|
||||
There is an awesome markup language you want to add to pelican ?
|
||||
Well, the only thing you have to do is to create a class that have a \emph{read}
|
||||
method, that is returning an HTML content and some metadata.
|
||||
|
||||
Take a look to the Markdown reader:
|
||||
|
||||
\begin{Verbatim}[commandchars=\\\{\}]
|
||||
\PYG{k}{class} \PYG{n+nc}{MarkdownReader}\PYG{p}{(}\PYG{n+nb}{object}\PYG{p}{)}\PYG{p}{:}
|
||||
|
||||
\PYG{k}{def} \PYG{n+nf}{read}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{n}{filename}\PYG{p}{)}\PYG{p}{:}
|
||||
\PYG{l+s+sd}{"""Parse content and metadata of markdown files"""}
|
||||
\PYG{n}{text} \PYG{o}{=} \PYG{n+nb}{open}\PYG{p}{(}\PYG{n}{filename}\PYG{p}{)}
|
||||
\PYG{n}{md} \PYG{o}{=} \PYG{n}{Markdown}\PYG{p}{(}\PYG{n}{extensions} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{'}\PYG{l+s}{meta}\PYG{l+s}{'}\PYG{p}{,} \PYG{l+s}{'}\PYG{l+s}{codehilite}\PYG{l+s}{'}\PYG{p}{]}\PYG{p}{)}
|
||||
\PYG{n}{content} \PYG{o}{=} \PYG{n}{md}\PYG{o}{.}\PYG{n}{convert}\PYG{p}{(}\PYG{n}{text}\PYG{p}{)}
|
||||
|
||||
\PYG{n}{metadatas} \PYG{o}{=} \PYG{p}{\PYGZob{}}\PYG{p}{\PYGZcb{}}
|
||||
\PYG{k}{for} \PYG{n}{name}\PYG{p}{,} \PYG{n}{value} \PYG{o+ow}{in} \PYG{n}{md}\PYG{o}{.}\PYG{n}{Meta}\PYG{o}{.}\PYG{n}{items}\PYG{p}{(}\PYG{p}{)}\PYG{p}{:}
|
||||
\PYG{k}{if} \PYG{n}{name} \PYG{o+ow}{in} \PYG{n}{\PYGZus{}METADATAS\PYGZus{}FIELDS}\PYG{p}{:}
|
||||
\PYG{n}{meta} \PYG{o}{=} \PYG{n}{\PYGZus{}METADATAS\PYGZus{}FIELDS}\PYG{p}{[}\PYG{n}{name}\PYG{p}{]}\PYG{p}{(}\PYG{n}{value}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{p}{)}
|
||||
\PYG{k}{else}\PYG{p}{:}
|
||||
\PYG{n}{meta} \PYG{o}{=} \PYG{n}{value}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}
|
||||
\PYG{n}{metadatas}\PYG{p}{[}\PYG{n}{name}\PYG{o}{.}\PYG{n}{lower}\PYG{p}{(}\PYG{p}{)}\PYG{p}{]} \PYG{o}{=} \PYG{n}{meta}
|
||||
\PYG{k}{return} \PYG{n}{content}\PYG{p}{,} \PYG{n}{metadatas}
|
||||
\end{Verbatim}
|
||||
|
||||
Simple isn't it ?
|
||||
|
||||
|
||||
\subsection{How to implement a new generator ?}
|
||||
|
||||
Generators have basically two important methods. You're not forced to create
|
||||
both, only the existing ones will be called.
|
||||
\begin{itemize}
|
||||
\item {}
|
||||
\emph{generate\_context}, that is called in a first place, for all the generators.
|
||||
Do whatever you have to do, and update the global context if needed. This
|
||||
context is shared between all generators, and will be passed to the
|
||||
templates. For instance, the \emph{PageGenerator} \emph{generate\_context} method find
|
||||
all the pages, transform them into objects, and populate the context with
|
||||
them. Be careful to \emph{not} output anything using this context at this stage,
|
||||
as it is likely to change by the effect of others generators.
|
||||
|
||||
\item {}
|
||||
\emph{generate\_output} is then called. And guess what is it made for ? Oh,
|
||||
generating the output :) That's here that you may want to look at the context
|
||||
and call the methods of the \emph{writer} object, that is passed at the first
|
||||
argument of this function. In the \emph{PageGenerator} example, this method will
|
||||
look at all the pages recorded in the global context, and output a file on
|
||||
the disk (using the writer method \emph{write\_file}) for each page encountered.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\resetcurrentobjects
|
||||
\hypertarget{--doc-faq}{}
|
||||
|
||||
\section{Frequently Asked Questions (FAQ)}
|
||||
|
||||
Here is a summary of the frequently asked questions for pelican.
|
||||
|
||||
|
||||
\subsection{Is it mandatory to have a configuration file ?}
|
||||
|
||||
No, it's not. Configurations files are just an easy way to configure pelican.
|
||||
For the basic operations, it's possible to specify options while invoking
|
||||
pelican with the command line (see \emph{pelican --help} for more informations about
|
||||
that)
|
||||
|
||||
|
||||
\subsection{I'm creating my own theme, how to use pygments ?}
|
||||
|
||||
Pygment add some classes to the generated content, so the theming of your theme
|
||||
will be done thanks to a css file. You can have a look to the one proposed by
|
||||
default \href{http://pygments.org/demo/15101/}{on the project website}
|
||||
|
||||
|
||||
\subsection{How do I create my own theme ?}
|
||||
|
||||
Please refer yourself to \hyperlink{theming-pelican}{\emph{How to create themes for pelican}}.
|
||||
|
||||
|
||||
\subsection{How can I help ?}
|
||||
|
||||
You have different options to help. First, you can use pelican, and report any
|
||||
idea or problem you have on \href{http://github.com/ametaireau/pelican/issues}{the bugtracker}.
|
||||
|
||||
If you want to contribute, please have a look to \href{https://github.com/ametaireau/pelican/}{the git repository}, fork it, add your changes and do
|
||||
a pull request, I'll review them as soon as possible.
|
||||
|
||||
You can also contribute by creating themes, and making the documentation
|
||||
better.
|
||||
|
||||
|
||||
\renewcommand{\indexname}{Module Index}
|
||||
\printmodindex
|
||||
\renewcommand{\indexname}{Index}
|
||||
\printindex
|
||||
\end{document}
|
||||
683
docs/fr/_build/latex/fncychap.sty
Normal file
683
docs/fr/_build/latex/fncychap.sty
Normal file
|
|
@ -0,0 +1,683 @@
|
|||
%%% Copyright Ulf A. Lindgren
|
||||
%%%
|
||||
%%% Note Premission is granted to modify this file under
|
||||
%%% the condition that it is saved using another
|
||||
%%% file and package name.
|
||||
%%%
|
||||
%%% Revision 1.1 (1997)
|
||||
%%%
|
||||
%%% Jan. 8th Modified package name base date option
|
||||
%%% Jan. 22th Modified FmN and FmTi for error in book.cls
|
||||
%%% \MakeUppercase{#}->{\MakeUppercase#}
|
||||
%%% Apr. 6th Modified Lenny option to prevent undesired
|
||||
%%% skip of line.
|
||||
%%% Nov. 8th Fixed \@chapapp for AMS
|
||||
%%%
|
||||
%%% Revision 1.2 (1998)
|
||||
%%%
|
||||
%%% Feb. 11th Fixed appendix problem related to Bjarne
|
||||
%%% Aug. 11th Fixed problem related to 11pt and 12pt
|
||||
%%% suggested by Tomas Lundberg. THANKS!
|
||||
%%%
|
||||
%%% Revision 1.3 (2004)
|
||||
%%% Sep. 20th problem with frontmatter, mainmatter and
|
||||
%%% backmatter, pointed out by Lapo Mori
|
||||
%%%
|
||||
%%% Revision 1.31 (2004)
|
||||
%%% Sep. 21th problem with the Rejne definition streched text
|
||||
%%% caused ugly gaps in the vrule aligned with the title
|
||||
%%% text. Kindly pointed out to me by Hendri Adriaens
|
||||
%%%
|
||||
%%% Revision 1.32 (2005)
|
||||
%%% Jun. 23th compatibility problem with the KOMA class 'scrbook.cls'
|
||||
%%% a remedy is a redefinition of '\@schapter' in
|
||||
%%% line with that used in KOMA. The problem was pointed
|
||||
%%% out to me by Mikkel Holm Olsen
|
||||
%%%
|
||||
%%% Revision 1.33 (2005)
|
||||
%%% Aug. 9th misspelled ``TWELV'' corrected, the error was pointed
|
||||
%%% out to me by George Pearson
|
||||
%%%
|
||||
%%% Revision 1.34 (2007)
|
||||
%%% Added an alternative to Lenny provided by Peter
|
||||
%%% Osborne (2005-11-28)
|
||||
%%% Corrected front, main and back matter, based on input
|
||||
%%% from Bas van Gils (2006-04-24)
|
||||
%%% Jul. 30th Added Bjornstrup option provided by Jean-Marc
|
||||
%%% Francois (2007-01-05).
|
||||
%%% Reverted to \MakeUppercase{#} see rev 1.1, solved
|
||||
%%% problem with MakeUppercase and MakeLowercase pointed
|
||||
%%% out by Marco Feuerstein (2007-06-06)
|
||||
|
||||
|
||||
%%% Last modified Jul. 2007
|
||||
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
\ProvidesPackage{fncychap}
|
||||
[2007/07/30 v1.34
|
||||
LaTeX package (Revised chapters)]
|
||||
|
||||
%%%% For conditional inclusion of color
|
||||
\newif\ifusecolor
|
||||
\usecolorfalse
|
||||
|
||||
|
||||
|
||||
%%%% DEFINITION OF Chapapp variables
|
||||
\newcommand{\CNV}{\huge\bfseries}
|
||||
\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}}
|
||||
|
||||
|
||||
%%%% DEFINITION OF TheChapter variables
|
||||
\newcommand{\CNoV}{\huge\bfseries}
|
||||
\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}}
|
||||
|
||||
\newif\ifUCN
|
||||
\UCNfalse
|
||||
\newif\ifLCN
|
||||
\LCNfalse
|
||||
\def\ChNameLowerCase{\LCNtrue\UCNfalse}
|
||||
\def\ChNameUpperCase{\UCNtrue\LCNfalse}
|
||||
\def\ChNameAsIs{\UCNfalse\LCNfalse}
|
||||
|
||||
%%%%% Fix for AMSBook 971008
|
||||
|
||||
\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}
|
||||
|
||||
|
||||
%%%%% Fix for Bjarne and appendix 980211
|
||||
|
||||
\newif\ifinapp
|
||||
\inappfalse
|
||||
\renewcommand\appendix{\par
|
||||
\setcounter{chapter}{0}%
|
||||
\setcounter{section}{0}%
|
||||
\inapptrue%
|
||||
\renewcommand\@chapapp{\appendixname}%
|
||||
\renewcommand\thechapter{\@Alph\c@chapter}}
|
||||
|
||||
%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
|
||||
|
||||
\@ifundefined{@mainmatter}{\newif\if@mainmatter \@mainmattertrue}{}
|
||||
|
||||
%%%%%
|
||||
|
||||
|
||||
|
||||
\newcommand{\FmN}[1]{%
|
||||
\ifUCN
|
||||
{\MakeUppercase{#1}}\LCNfalse
|
||||
\else
|
||||
\ifLCN
|
||||
{\MakeLowercase{#1}}\UCNfalse
|
||||
\else #1
|
||||
\fi
|
||||
\fi}
|
||||
|
||||
|
||||
%%%% DEFINITION OF Title variables
|
||||
\newcommand{\CTV}{\Huge\bfseries}
|
||||
\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}}
|
||||
|
||||
%%%% DEFINITION OF the basic rule width
|
||||
\newlength{\RW}
|
||||
\setlength{\RW}{1pt}
|
||||
\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}}
|
||||
|
||||
\newif\ifUCT
|
||||
\UCTfalse
|
||||
\newif\ifLCT
|
||||
\LCTfalse
|
||||
\def\ChTitleLowerCase{\LCTtrue\UCTfalse}
|
||||
\def\ChTitleUpperCase{\UCTtrue\LCTfalse}
|
||||
\def\ChTitleAsIs{\UCTfalse\LCTfalse}
|
||||
\newcommand{\FmTi}[1]{%
|
||||
\ifUCT
|
||||
{\MakeUppercase{#1}}\LCTfalse
|
||||
\else
|
||||
\ifLCT
|
||||
{\MakeLowercase{#1}}\UCTfalse
|
||||
\else {#1}
|
||||
\fi
|
||||
\fi}
|
||||
|
||||
|
||||
|
||||
\newlength{\mylen}
|
||||
\newlength{\myhi}
|
||||
\newlength{\px}
|
||||
\newlength{\py}
|
||||
\newlength{\pyy}
|
||||
\newlength{\pxx}
|
||||
|
||||
|
||||
\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@}
|
||||
|
||||
\newcommand{\DOCH}{%
|
||||
\CNV\FmN{\@chapapp}\space \CNoV\thechapter
|
||||
\par\nobreak
|
||||
\vskip 20\p@
|
||||
}
|
||||
\newcommand{\DOTI}[1]{%
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@
|
||||
}
|
||||
\newcommand{\DOTIS}[1]{%
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@
|
||||
}
|
||||
|
||||
%%%%%% SONNY DEF
|
||||
|
||||
\DeclareOption{Sonny}{%
|
||||
\ChNameVar{\Large\sf}
|
||||
\ChNumVar{\Huge}
|
||||
\ChTitleVar{\Large\sf}
|
||||
\ChRuleWidth{0.5pt}
|
||||
\ChNameUpperCase
|
||||
\renewcommand{\DOCH}{%
|
||||
\raggedleft
|
||||
\CNV\FmN{\@chapapp}\space \CNoV\thechapter
|
||||
\par\nobreak
|
||||
\vskip 40\p@}
|
||||
\renewcommand{\DOTI}[1]{%
|
||||
\CTV\raggedleft\mghrulefill{\RW}\par\nobreak
|
||||
\vskip 5\p@
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\mghrulefill{\RW}\par\nobreak
|
||||
\vskip 40\p@}
|
||||
\renewcommand{\DOTIS}[1]{%
|
||||
\CTV\raggedleft\mghrulefill{\RW}\par\nobreak
|
||||
\vskip 5\p@
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\mghrulefill{\RW}\par\nobreak
|
||||
\vskip 40\p@}
|
||||
}
|
||||
|
||||
%%%%%% LENNY DEF
|
||||
|
||||
\DeclareOption{Lenny}{%
|
||||
|
||||
\ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
|
||||
\ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
|
||||
\ChTitleVar{\Huge\bfseries\rm}
|
||||
\ChRuleWidth{1pt}
|
||||
\renewcommand{\DOCH}{%
|
||||
\settowidth{\px}{\CNV\FmN{\@chapapp}}
|
||||
\addtolength{\px}{2pt}
|
||||
\settoheight{\py}{\CNV\FmN{\@chapapp}}
|
||||
\addtolength{\py}{1pt}
|
||||
|
||||
\settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
|
||||
\addtolength{\mylen}{1pt}
|
||||
\settowidth{\pxx}{\CNoV\thechapter}
|
||||
\addtolength{\pxx}{-1pt}
|
||||
|
||||
\settoheight{\pyy}{\CNoV\thechapter}
|
||||
\addtolength{\pyy}{-2pt}
|
||||
\setlength{\myhi}{\pyy}
|
||||
\addtolength{\myhi}{-1\py}
|
||||
\par
|
||||
\parbox[b]{\textwidth}{%
|
||||
\rule[\py]{\RW}{\myhi}%
|
||||
\hskip -\RW%
|
||||
\rule[\pyy]{\px}{\RW}%
|
||||
\hskip -\px%
|
||||
\raggedright%
|
||||
\CNV\FmN{\@chapapp}\space\CNoV\thechapter%
|
||||
\hskip1pt%
|
||||
\mghrulefill{\RW}%
|
||||
\rule{\RW}{\pyy}\par\nobreak%
|
||||
\vskip -\baselineskip%
|
||||
\vskip -\pyy%
|
||||
\hskip \mylen%
|
||||
\mghrulefill{\RW}\par\nobreak%
|
||||
\vskip \pyy}%
|
||||
\vskip 20\p@}
|
||||
|
||||
|
||||
\renewcommand{\DOTI}[1]{%
|
||||
\raggedright
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@}
|
||||
|
||||
\renewcommand{\DOTIS}[1]{%
|
||||
\raggedright
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@}
|
||||
}
|
||||
|
||||
%%%%%% Peter Osbornes' version of LENNY DEF
|
||||
|
||||
\DeclareOption{PetersLenny}{%
|
||||
|
||||
% five new lengths
|
||||
\newlength{\bl} % bottom left : orig \space
|
||||
\setlength{\bl}{6pt}
|
||||
\newcommand{\BL}[1]{\setlength{\bl}{#1}}
|
||||
\newlength{\br} % bottom right : orig 1pt
|
||||
\setlength{\br}{1pt}
|
||||
\newcommand{\BR}[1]{\setlength{\br}{#1}}
|
||||
\newlength{\tl} % top left : orig 2pt
|
||||
\setlength{\tl}{2pt}
|
||||
\newcommand{\TL}[1]{\setlength{\tl}{#1}}
|
||||
\newlength{\trr} % top right :orig 1pt
|
||||
\setlength{\trr}{1pt}
|
||||
\newcommand{\TR}[1]{\setlength{\trr}{#1}}
|
||||
\newlength{\blrule} % top right :orig 1pt
|
||||
\setlength{\trr}{0pt}
|
||||
\newcommand{\BLrule}[1]{\setlength{\blrule}{#1}}
|
||||
|
||||
|
||||
\ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
|
||||
\ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
|
||||
\ChTitleVar{\Huge\bfseries\rm}
|
||||
\ChRuleWidth{1pt}
|
||||
\renewcommand{\DOCH}{%
|
||||
|
||||
|
||||
%%%%%%% tweaks for 1--9 and A--Z
|
||||
\ifcase\c@chapter\relax%
|
||||
\or\BL{-3pt}\TL{-4pt}\BR{0pt}\TR{-6pt}%1
|
||||
\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%2
|
||||
\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%3
|
||||
\or\BL{0pt}\TL{5pt}\BR{2pt}\TR{-4pt}%4
|
||||
\or\BL{0pt}\TL{3pt}\BR{2pt}\TR{-4pt}%5
|
||||
\or\BL{-1pt}\TL{0pt}\BR{2pt}\TR{-2pt}%6
|
||||
\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%7
|
||||
\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%8
|
||||
\or\BL{0pt}\TL{-3pt}\BR{-4pt}\TR{-2pt}%9
|
||||
\or\BL{-3pt}\TL{-3pt}\BR{2pt}\TR{-7pt}%10
|
||||
\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%11
|
||||
\or\BL{-6pt}\TL{-6pt}\BR{2pt}\TR{-7pt}%12
|
||||
\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%13
|
||||
\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%14
|
||||
\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%15
|
||||
\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%16
|
||||
\or\BL{-5pt}\TL{-3pt}\BR{-8pt}\TR{-6pt}%17
|
||||
\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%18
|
||||
\or\BL{-3pt}\TL{-3pt}\BR{-6pt}\TR{-9pt}%19
|
||||
\or\BL{0pt}\TL{0pt}\BR{0pt}\TR{-5pt}%20
|
||||
\fi
|
||||
|
||||
\ifinapp\ifcase\c@chapter\relax%
|
||||
\or\BL{0pt}\TL{14pt}\BR{5pt}\TR{-19pt}%A
|
||||
\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}%B
|
||||
\or\BL{-3pt}\TL{-2pt}\BR{1pt}\TR{-6pt}\BLrule{0pt}%C
|
||||
\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}\BLrule{0pt}%D
|
||||
\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-3pt}%E
|
||||
\or\BL{0pt}\TL{-5pt}\BR{-10pt}\TR{-1pt}%F
|
||||
\or\BL{-3pt}\TL{0pt}\BR{0pt}\TR{-7pt}%G
|
||||
\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%H
|
||||
\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%I
|
||||
\or\BL{2pt}\TL{0pt}\BR{-3pt}\TR{1pt}%J
|
||||
\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%K
|
||||
\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-19pt}%L
|
||||
\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%M
|
||||
\or\BL{0pt}\TL{-5pt}\BR{-2pt}\TR{-1pt}%N
|
||||
\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%O
|
||||
\or\BL{0pt}\TL{-5pt}\BR{-9pt}\TR{-3pt}%P
|
||||
\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%Q
|
||||
\or\BL{0pt}\TL{-5pt}\BR{4pt}\TR{-8pt}%R
|
||||
\or\BL{-2pt}\TL{-2pt}\BR{-2pt}\TR{-7pt}%S
|
||||
\or\BL{-3pt}\TL{0pt}\BR{-5pt}\TR{4pt}\BLrule{8pt}%T
|
||||
\or\BL{-7pt}\TL{-11pt}\BR{-5pt}\TR{-7pt}\BLrule{0pt}%U
|
||||
\or\BL{-14pt}\TL{-5pt}\BR{-14pt}\TR{-1pt}\BLrule{14pt}%V
|
||||
\or\BL{-10pt}\TL{-9pt}\BR{-13pt}\TR{-3pt}\BLrule{7pt}%W
|
||||
\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%X
|
||||
\or\BL{-6pt}\TL{-4pt}\BR{-7pt}\TR{1pt}\BLrule{7pt}%Y
|
||||
\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%Z
|
||||
\fi\fi
|
||||
%%%%%%%
|
||||
\settowidth{\px}{\CNV\FmN{\@chapapp}}
|
||||
\addtolength{\px}{\tl} %MOD change 2pt to \tl
|
||||
\settoheight{\py}{\CNV\FmN{\@chapapp}}
|
||||
\addtolength{\py}{1pt}
|
||||
|
||||
\settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
|
||||
\addtolength{\mylen}{\trr}% MOD change 1pt to \tr
|
||||
\settowidth{\pxx}{\CNoV\thechapter}
|
||||
\addtolength{\pxx}{-1pt}
|
||||
|
||||
\settoheight{\pyy}{\CNoV\thechapter}
|
||||
\addtolength{\pyy}{-2pt}
|
||||
\setlength{\myhi}{\pyy}
|
||||
\addtolength{\myhi}{-1\py}
|
||||
\par
|
||||
\parbox[b]{\textwidth}{%
|
||||
\rule[\py]{\RW}{\myhi}%
|
||||
\hskip -\RW%
|
||||
\rule[\pyy]{\px}{\RW}%
|
||||
\hskip -\px%
|
||||
\raggedright%
|
||||
\CNV\FmN{\@chapapp}\rule{\blrule}{\RW}\hskip\bl\CNoV\thechapter%MOD
|
||||
% \CNV\FmN{\@chapapp}\space\CNoV\thechapter %ORIGINAL
|
||||
\hskip\br% %MOD 1pt to \br
|
||||
\mghrulefill{\RW}%
|
||||
\rule{\RW}{\pyy}\par\nobreak%
|
||||
\vskip -\baselineskip%
|
||||
\vskip -\pyy%
|
||||
\hskip \mylen%
|
||||
\mghrulefill{\RW}\par\nobreak%
|
||||
\vskip \pyy}%
|
||||
\vskip 20\p@}
|
||||
|
||||
|
||||
\renewcommand{\DOTI}[1]{%
|
||||
\raggedright
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@}
|
||||
|
||||
\renewcommand{\DOTIS}[1]{%
|
||||
\raggedright
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@}
|
||||
}
|
||||
|
||||
|
||||
%
|
||||
|
||||
|
||||
%%%%%% BJORNSTRUP DEF
|
||||
|
||||
\DeclareOption{Bjornstrup}{%
|
||||
\usecolortrue
|
||||
% pzc (Zapf Chancelery) is nice. ppl (Palatino) is cool too.
|
||||
\ChNumVar{\fontsize{76}{80}\usefont{OT1}{pzc}{m}{n}\selectfont}
|
||||
\ChTitleVar{\raggedleft\Large\sffamily\bfseries}
|
||||
|
||||
\setlength{\myhi}{10pt} % Space between grey box border and text
|
||||
\setlength{\mylen}{\textwidth}
|
||||
\addtolength{\mylen}{-2\myhi}
|
||||
\renewcommand{\DOCH}{%
|
||||
\settowidth{\py}{\CNoV\thechapter}
|
||||
\addtolength{\py}{-10pt} % Amount of space by which the
|
||||
% % number is shifted right
|
||||
\fboxsep=0pt%
|
||||
\colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}%
|
||||
\kern-\py\raise20pt%
|
||||
\hbox{\color[gray]{.5}\CNoV\thechapter}\\%
|
||||
}
|
||||
|
||||
\renewcommand{\DOTI}[1]{%
|
||||
\nointerlineskip\raggedright%
|
||||
\fboxsep=\myhi%
|
||||
\vskip-1ex%
|
||||
\colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
|
||||
\vskip 40\p@%
|
||||
}
|
||||
|
||||
\renewcommand{\DOTIS}[1]{%
|
||||
\fboxsep=0pt
|
||||
\colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}\\%
|
||||
\nointerlineskip\raggedright%
|
||||
\fboxsep=\myhi%
|
||||
\colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak%
|
||||
\vskip 40\p@%
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
%%%%%%% GLENN DEF
|
||||
|
||||
|
||||
\DeclareOption{Glenn}{%
|
||||
\ChNameVar{\bfseries\Large\sf}
|
||||
\ChNumVar{\Huge}
|
||||
\ChTitleVar{\bfseries\Large\rm}
|
||||
\ChRuleWidth{1pt}
|
||||
\ChNameUpperCase
|
||||
\ChTitleUpperCase
|
||||
\renewcommand{\DOCH}{%
|
||||
\settoheight{\myhi}{\CTV\FmTi{Test}}
|
||||
\setlength{\py}{\baselineskip}
|
||||
\addtolength{\py}{\RW}
|
||||
\addtolength{\py}{\myhi}
|
||||
\setlength{\pyy}{\py}
|
||||
\addtolength{\pyy}{-1\RW}
|
||||
|
||||
\raggedright
|
||||
\CNV\FmN{\@chapapp}\space\CNoV\thechapter
|
||||
\hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak}
|
||||
|
||||
\renewcommand{\DOTI}[1]{%
|
||||
\addtolength{\pyy}{-4pt}
|
||||
\settoheight{\myhi}{\CTV\FmTi{#1}}
|
||||
\addtolength{\myhi}{\py}
|
||||
\addtolength{\myhi}{-1\RW}
|
||||
\vskip -1\pyy
|
||||
\rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
|
||||
\raggedleft\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 80\p@}
|
||||
|
||||
\newlength{\backskip}
|
||||
\renewcommand{\DOTIS}[1]{%
|
||||
% \setlength{\py}{10pt}
|
||||
% \setlength{\pyy}{\py}
|
||||
% \addtolength{\pyy}{\RW}
|
||||
% \setlength{\myhi}{\baselineskip}
|
||||
% \addtolength{\myhi}{\pyy}
|
||||
% \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
|
||||
% \addtolength{}{}
|
||||
%\vskip -1\baselineskip
|
||||
% \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
|
||||
% \raggedleft\CTV\FmTi{#1}\par\nobreak
|
||||
% \vskip 60\p@}
|
||||
%% Fix suggested by Tomas Lundberg
|
||||
\setlength{\py}{25pt} % eller vad man vill
|
||||
\setlength{\pyy}{\py}
|
||||
\setlength{\backskip}{\py}
|
||||
\addtolength{\backskip}{2pt}
|
||||
\addtolength{\pyy}{\RW}
|
||||
\setlength{\myhi}{\baselineskip}
|
||||
\addtolength{\myhi}{\pyy}
|
||||
\mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
|
||||
\vskip -1\backskip
|
||||
\rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt %
|
||||
\raggedleft\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@}
|
||||
}
|
||||
|
||||
%%%%%%% CONNY DEF
|
||||
|
||||
\DeclareOption{Conny}{%
|
||||
\ChNameUpperCase
|
||||
\ChTitleUpperCase
|
||||
\ChNameVar{\centering\Huge\rm\bfseries}
|
||||
\ChNumVar{\Huge}
|
||||
\ChTitleVar{\centering\Huge\rm}
|
||||
\ChRuleWidth{2pt}
|
||||
|
||||
\renewcommand{\DOCH}{%
|
||||
\mghrulefill{3\RW}\par\nobreak
|
||||
\vskip -0.5\baselineskip
|
||||
\mghrulefill{\RW}\par\nobreak
|
||||
\CNV\FmN{\@chapapp}\space \CNoV\thechapter
|
||||
\par\nobreak
|
||||
\vskip -0.5\baselineskip
|
||||
}
|
||||
\renewcommand{\DOTI}[1]{%
|
||||
\mghrulefill{\RW}\par\nobreak
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 60\p@
|
||||
}
|
||||
\renewcommand{\DOTIS}[1]{%
|
||||
\mghrulefill{\RW}\par\nobreak
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 60\p@
|
||||
}
|
||||
}
|
||||
|
||||
%%%%%%% REJNE DEF
|
||||
|
||||
\DeclareOption{Rejne}{%
|
||||
|
||||
\ChNameUpperCase
|
||||
\ChTitleUpperCase
|
||||
\ChNameVar{\centering\Large\rm}
|
||||
\ChNumVar{\Huge}
|
||||
\ChTitleVar{\centering\Huge\rm}
|
||||
\ChRuleWidth{1pt}
|
||||
\renewcommand{\DOCH}{%
|
||||
\settoheight{\py}{\CNoV\thechapter}
|
||||
\parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
|
||||
\addtolength{\py}{-1pt}
|
||||
\CNV\FmN{\@chapapp}\par\nobreak
|
||||
\vskip 20\p@
|
||||
\setlength{\myhi}{2\baselineskip}
|
||||
\setlength{\px}{\myhi}
|
||||
\addtolength{\px}{-1\RW}
|
||||
\rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip
|
||||
10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip 10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak
|
||||
\vskip -3\p@% Added -2pt vskip to correct for streched text v1.31
|
||||
}
|
||||
\renewcommand{\DOTI}[1]{%
|
||||
\setlength{\mylen}{\textwidth}
|
||||
\parskip=0pt plus 1pt % Set parskip to default, just in case v1.31
|
||||
\addtolength{\mylen}{-2\RW}
|
||||
{\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule width\RW}\par\nobreak%
|
||||
\vskip -3pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}%
|
||||
\vskip 60\p@% Added -2pt in vskip to correct for streched text v1.31
|
||||
}
|
||||
\renewcommand{\DOTIS}[1]{%
|
||||
\setlength{\py}{\fboxrule}
|
||||
\setlength{\fboxrule}{\RW}
|
||||
\setlength{\mylen}{\textwidth}
|
||||
\addtolength{\mylen}{-2\RW}
|
||||
\fbox{\parbox{\mylen}{\vskip 2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}}
|
||||
\setlength{\fboxrule}{\py}
|
||||
\vskip 60\p@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
%%%%%%% BJARNE DEF
|
||||
|
||||
\DeclareOption{Bjarne}{%
|
||||
\ChNameUpperCase
|
||||
\ChTitleUpperCase
|
||||
\ChNameVar{\raggedleft\normalsize\rm}
|
||||
\ChNumVar{\raggedleft \bfseries\Large}
|
||||
\ChTitleVar{\raggedleft \Large\rm}
|
||||
\ChRuleWidth{1pt}
|
||||
|
||||
|
||||
%% Note thechapter -> c@chapter fix appendix bug
|
||||
%% Fixed misspelled 12
|
||||
|
||||
\newcounter{AlphaCnt}
|
||||
\newcounter{AlphaDecCnt}
|
||||
\newcommand{\AlphaNo}{%
|
||||
\ifcase\number\theAlphaCnt
|
||||
\ifnum\c@chapter=0
|
||||
ZERO\else{}\fi
|
||||
\or ONE\or TWO\or THREE\or FOUR\or FIVE
|
||||
\or SIX\or SEVEN\or EIGHT\or NINE\or TEN
|
||||
\or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN
|
||||
\or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi
|
||||
}
|
||||
|
||||
\newcommand{\AlphaDecNo}{%
|
||||
\setcounter{AlphaDecCnt}{0}
|
||||
\@whilenum\number\theAlphaCnt>0\do
|
||||
{\addtocounter{AlphaCnt}{-10}
|
||||
\addtocounter{AlphaDecCnt}{1}}
|
||||
\ifnum\number\theAlphaCnt=0
|
||||
\else
|
||||
\addtocounter{AlphaDecCnt}{-1}
|
||||
\addtocounter{AlphaCnt}{10}
|
||||
\fi
|
||||
|
||||
|
||||
\ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or
|
||||
FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi
|
||||
}
|
||||
\newcommand{\TheAlphaChapter}{%
|
||||
|
||||
\ifinapp
|
||||
\thechapter
|
||||
\else
|
||||
\setcounter{AlphaCnt}{\c@chapter}
|
||||
\ifnum\c@chapter<20
|
||||
\AlphaNo
|
||||
\else
|
||||
\AlphaDecNo\AlphaNo
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
\renewcommand{\DOCH}{%
|
||||
\mghrulefill{\RW}\par\nobreak
|
||||
\CNV\FmN{\@chapapp}\par\nobreak
|
||||
\CNoV\TheAlphaChapter\par\nobreak
|
||||
\vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak
|
||||
\vskip 20\p@
|
||||
}
|
||||
\renewcommand{\DOTI}[1]{%
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@
|
||||
}
|
||||
\renewcommand{\DOTIS}[1]{%
|
||||
\CTV\FmTi{#1}\par\nobreak
|
||||
\vskip 40\p@
|
||||
}
|
||||
}
|
||||
|
||||
\DeclareOption*{%
|
||||
\PackageWarning{fancychapter}{unknown style option}
|
||||
}
|
||||
|
||||
\ProcessOptions* \relax
|
||||
|
||||
\ifusecolor
|
||||
\RequirePackage{color}
|
||||
\fi
|
||||
\def\@makechapterhead#1{%
|
||||
\vspace*{50\p@}%
|
||||
{\parindent \z@ \raggedright \normalfont
|
||||
\ifnum \c@secnumdepth >\m@ne
|
||||
\if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920
|
||||
\DOCH
|
||||
\fi
|
||||
\fi
|
||||
\interlinepenalty\@M
|
||||
\if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424
|
||||
\DOTI{#1}%
|
||||
\else%
|
||||
\DOTIS{#1}%
|
||||
\fi
|
||||
}}
|
||||
|
||||
|
||||
%%% Begin: To avoid problem with scrbook.cls (fncychap version 1.32)
|
||||
|
||||
%%OUT:
|
||||
%\def\@schapter#1{\if@twocolumn
|
||||
% \@topnewpage[\@makeschapterhead{#1}]%
|
||||
% \else
|
||||
% \@makeschapterhead{#1}%
|
||||
% \@afterheading
|
||||
% \fi}
|
||||
|
||||
%%IN:
|
||||
\def\@schapter#1{%
|
||||
\if@twocolumn%
|
||||
\@makeschapterhead{#1}%
|
||||
\else%
|
||||
\@makeschapterhead{#1}%
|
||||
\@afterheading%
|
||||
\fi}
|
||||
|
||||
%%% End: To avoid problem with scrbook.cls (fncychap version 1.32)
|
||||
|
||||
\def\@makeschapterhead#1{%
|
||||
\vspace*{50\p@}%
|
||||
{\parindent \z@ \raggedright
|
||||
\normalfont
|
||||
\interlinepenalty\@M
|
||||
\DOTIS{#1}
|
||||
\vskip 40\p@
|
||||
}}
|
||||
|
||||
\endinput
|
||||
|
||||
|
||||
70
docs/fr/_build/latex/howto.cls
Normal file
70
docs/fr/_build/latex/howto.cls
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
%
|
||||
% howto.cls for Sphinx
|
||||
%
|
||||
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
\ProvidesClass{howto}[2008/10/18 Document class (Sphinx HOWTO)]
|
||||
|
||||
% Pass all given class options to the parent class.
|
||||
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
|
||||
\ProcessOptions\relax
|
||||
\LoadClass[twoside]{article}
|
||||
|
||||
% Set some sane defaults for section numbering depth and TOC depth. You can
|
||||
% reset these counters in your preamble.
|
||||
%
|
||||
\setcounter{secnumdepth}{2}
|
||||
|
||||
% Change the title page to look a bit better, and fit in with the fncychap
|
||||
% ``Bjarne'' style a bit better.
|
||||
%
|
||||
\renewcommand{\maketitle}{
|
||||
\rule{\textwidth}{1pt}
|
||||
\ifsphinxpdfoutput
|
||||
\begingroup
|
||||
% These \defs are required to deal with multi-line authors; it
|
||||
% changes \\ to ', ' (comma-space), making it pass muster for
|
||||
% generating document info in the PDF file.
|
||||
\def\\{, }
|
||||
\def\and{and }
|
||||
\pdfinfo{
|
||||
/Author (\@author)
|
||||
/Title (\@title)
|
||||
}
|
||||
\endgroup
|
||||
\fi
|
||||
\begin{flushright}
|
||||
\sphinxlogo%
|
||||
{\rm\Huge\py@HeaderFamily \@title} \par
|
||||
{\em\large\py@HeaderFamily \py@release\releaseinfo} \par
|
||||
\vspace{25pt}
|
||||
{\Large\py@HeaderFamily
|
||||
\begin{tabular}[t]{c}
|
||||
\@author
|
||||
\end{tabular}} \par
|
||||
\vspace{25pt}
|
||||
\@date \par
|
||||
\py@authoraddress \par
|
||||
\end{flushright}
|
||||
\@thanks
|
||||
\setcounter{footnote}{0}
|
||||
\let\thanks\relax\let\maketitle\relax
|
||||
%\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
|
||||
}
|
||||
|
||||
\let\py@OldTableofcontents=\tableofcontents
|
||||
\renewcommand{\tableofcontents}{
|
||||
\begingroup
|
||||
\parskip = 0mm
|
||||
\py@OldTableofcontents
|
||||
\endgroup
|
||||
\rule{\textwidth}{1pt}
|
||||
\vspace{12pt}
|
||||
}
|
||||
|
||||
\@ifundefined{fancyhf}{
|
||||
\pagestyle{plain}}{
|
||||
\pagestyle{normal}} % start this way; change for
|
||||
\pagenumbering{arabic} % ToC & chapters
|
||||
|
||||
\thispagestyle{empty}
|
||||
108
docs/fr/_build/latex/manual.cls
Normal file
108
docs/fr/_build/latex/manual.cls
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
%
|
||||
% manual.cls for Sphinx
|
||||
%
|
||||
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
\ProvidesClass{manual}[2008/10/18 Document class (Sphinx manual)]
|
||||
|
||||
% Pass all given class options to the parent class.
|
||||
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
|
||||
\ProcessOptions\relax
|
||||
\LoadClass[twoside,openright]{report}
|
||||
|
||||
% Set some sane defaults for section numbering depth and TOC depth. You can
|
||||
% reset these counters in your preamble.
|
||||
%
|
||||
\setcounter{secnumdepth}{2}
|
||||
\setcounter{tocdepth}{1}
|
||||
|
||||
% Change the title page to look a bit better, and fit in with the fncychap
|
||||
% ``Bjarne'' style a bit better.
|
||||
%
|
||||
\renewcommand{\maketitle}{%
|
||||
\begin{titlepage}%
|
||||
\let\footnotesize\small
|
||||
\let\footnoterule\relax
|
||||
\rule{\textwidth}{1pt}%
|
||||
\ifsphinxpdfoutput
|
||||
\begingroup
|
||||
% These \defs are required to deal with multi-line authors; it
|
||||
% changes \\ to ', ' (comma-space), making it pass muster for
|
||||
% generating document info in the PDF file.
|
||||
\def\\{, }
|
||||
\def\and{and }
|
||||
\pdfinfo{
|
||||
/Author (\@author)
|
||||
/Title (\@title)
|
||||
}
|
||||
\endgroup
|
||||
\fi
|
||||
\begin{flushright}%
|
||||
\sphinxlogo%
|
||||
{\rm\Huge\py@HeaderFamily \@title \par}%
|
||||
{\em\LARGE\py@HeaderFamily \py@release\releaseinfo \par}
|
||||
\vfill
|
||||
{\LARGE\py@HeaderFamily
|
||||
\begin{tabular}[t]{c}
|
||||
\@author
|
||||
\end{tabular}
|
||||
\par}
|
||||
\vfill\vfill
|
||||
{\large
|
||||
\@date \par
|
||||
\vfill
|
||||
\py@authoraddress \par
|
||||
}%
|
||||
\end{flushright}%\par
|
||||
\@thanks
|
||||
\end{titlepage}%
|
||||
\cleardoublepage%
|
||||
\setcounter{footnote}{0}%
|
||||
\let\thanks\relax\let\maketitle\relax
|
||||
%\gdef\@thanks{}\gdef\@author{}\gdef\@title{}
|
||||
}
|
||||
|
||||
|
||||
% Catch the end of the {abstract} environment, but here make sure the abstract
|
||||
% is followed by a blank page if the 'openright' option is used.
|
||||
%
|
||||
\let\py@OldEndAbstract=\endabstract
|
||||
\renewcommand{\endabstract}{
|
||||
\if@openright
|
||||
\ifodd\value{page}
|
||||
\typeout{Adding blank page after the abstract.}
|
||||
\vfil\pagebreak
|
||||
\fi
|
||||
\fi
|
||||
\py@OldEndAbstract
|
||||
}
|
||||
|
||||
% This wraps the \tableofcontents macro with all the magic to get the spacing
|
||||
% right and have the right number of pages if the 'openright' option has been
|
||||
% used. This eliminates a fair amount of crud in the individual document files.
|
||||
%
|
||||
\let\py@OldTableofcontents=\tableofcontents
|
||||
\renewcommand{\tableofcontents}{%
|
||||
\setcounter{page}{1}%
|
||||
\pagebreak%
|
||||
\pagestyle{plain}%
|
||||
{%
|
||||
\parskip = 0mm%
|
||||
\py@OldTableofcontents%
|
||||
\if@openright%
|
||||
\ifodd\value{page}%
|
||||
\typeout{Adding blank page after the table of contents.}%
|
||||
\pagebreak\hspace{0pt}%
|
||||
\fi%
|
||||
\fi%
|
||||
\cleardoublepage%
|
||||
}%
|
||||
\pagenumbering{arabic}%
|
||||
\@ifundefined{fancyhf}{}{\pagestyle{normal}}%
|
||||
}
|
||||
|
||||
% This is needed to get the width of the section # area wide enough in the
|
||||
% library reference. Doing it here keeps it the same for all the manuals.
|
||||
%
|
||||
\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}}
|
||||
\renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}}
|
||||
11
docs/fr/_build/latex/python.ist
Normal file
11
docs/fr/_build/latex/python.ist
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
line_max 100
|
||||
headings_flag 1
|
||||
heading_prefix " \\bigletter "
|
||||
|
||||
preamble "\\begin{theindex}
|
||||
\\def\\bigletter#1{{\\Large\\sffamily#1}\\nopagebreak\\vspace{1mm}}
|
||||
|
||||
"
|
||||
|
||||
symhead_positive "{Symbols}"
|
||||
numhead_positive "{Numbers}"
|
||||
744
docs/fr/_build/latex/sphinx.sty
Normal file
744
docs/fr/_build/latex/sphinx.sty
Normal file
|
|
@ -0,0 +1,744 @@
|
|||
%
|
||||
% sphinx.sty
|
||||
%
|
||||
% Adapted from the old python.sty, mostly written by Fred Drake,
|
||||
% by Georg Brandl.
|
||||
%
|
||||
|
||||
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
||||
\ProvidesPackage{sphinx}[2008/05/01 LaTeX package (Sphinx markup)]
|
||||
|
||||
\RequirePackage{textcomp}
|
||||
\RequirePackage{fancyhdr}
|
||||
\RequirePackage{fancybox}
|
||||
\RequirePackage{titlesec}
|
||||
\RequirePackage{tabulary}
|
||||
\RequirePackage{amsmath} % for \text
|
||||
\RequirePackage{makeidx}
|
||||
\RequirePackage{framed}
|
||||
\RequirePackage{color}
|
||||
% For highlighted code.
|
||||
\RequirePackage{fancyvrb}
|
||||
% For table captions.
|
||||
\RequirePackage{threeparttable}
|
||||
% Handle footnotes in tables.
|
||||
\RequirePackage{footnote}
|
||||
\makesavenoteenv{tabulary}
|
||||
% For floating figures in the text.
|
||||
\RequirePackage{wrapfig}
|
||||
% Separate paragraphs by space by default.
|
||||
\RequirePackage{parskip}
|
||||
|
||||
% Redefine these colors to your liking in the preamble.
|
||||
\definecolor{TitleColor}{rgb}{0.126,0.263,0.361}
|
||||
\definecolor{InnerLinkColor}{rgb}{0.208,0.374,0.486}
|
||||
\definecolor{OuterLinkColor}{rgb}{0.216,0.439,0.388}
|
||||
% Redefine these colors to something not white if you want to have colored
|
||||
% background and border for code examples.
|
||||
\definecolor{VerbatimColor}{rgb}{1,1,1}
|
||||
\definecolor{VerbatimBorderColor}{rgb}{1,1,1}
|
||||
|
||||
% Uncomment these two lines to ignore the paper size and make the page
|
||||
% size more like a typical published manual.
|
||||
%\renewcommand{\paperheight}{9in}
|
||||
%\renewcommand{\paperwidth}{8.5in} % typical squarish manual
|
||||
%\renewcommand{\paperwidth}{7in} % O'Reilly ``Programmming Python''
|
||||
|
||||
% For graphicx, check if we are compiling under latex or pdflatex.
|
||||
\ifx\pdftexversion\undefined
|
||||
\usepackage{graphicx}
|
||||
\else
|
||||
\usepackage[pdftex]{graphicx}
|
||||
\fi
|
||||
|
||||
% for PDF output, use colors and maximal compression
|
||||
\newif\ifsphinxpdfoutput\sphinxpdfoutputfalse
|
||||
\ifx\pdfoutput\undefined\else\ifcase\pdfoutput
|
||||
\let\py@NormalColor\relax
|
||||
\let\py@TitleColor\relax
|
||||
\else
|
||||
\sphinxpdfoutputtrue
|
||||
\input{pdfcolor}
|
||||
\def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}}
|
||||
\def\py@TitleColor{\color{TitleColor}}
|
||||
\pdfcompresslevel=9
|
||||
\fi\fi
|
||||
|
||||
% XeLaTeX can do colors, too
|
||||
\ifx\XeTeXrevision\undefined\else
|
||||
\def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}}
|
||||
\def\py@TitleColor{\color{TitleColor}}
|
||||
\fi
|
||||
|
||||
% Increase printable page size (copied from fullpage.sty)
|
||||
\topmargin 0pt
|
||||
\advance \topmargin by -\headheight
|
||||
\advance \topmargin by -\headsep
|
||||
|
||||
% attempt to work a little better for A4 users
|
||||
\textheight \paperheight
|
||||
\advance\textheight by -2in
|
||||
|
||||
\oddsidemargin 0pt
|
||||
\evensidemargin 0pt
|
||||
%\evensidemargin -.25in % for ``manual size'' documents
|
||||
\marginparwidth 0.5in
|
||||
|
||||
\textwidth \paperwidth
|
||||
\advance\textwidth by -2in
|
||||
|
||||
|
||||
% Style parameters and macros used by most documents here
|
||||
\raggedbottom
|
||||
\sloppy
|
||||
\hbadness = 5000 % don't print trivial gripes
|
||||
|
||||
\pagestyle{empty} % start this way; change for
|
||||
\pagenumbering{roman} % ToC & chapters
|
||||
|
||||
% Use this to set the font family for headers and other decor:
|
||||
\newcommand{\py@HeaderFamily}{\sffamily\bfseries}
|
||||
|
||||
% Redefine the 'normal' header/footer style when using "fancyhdr" package:
|
||||
\@ifundefined{fancyhf}{}{
|
||||
% Use \pagestyle{normal} as the primary pagestyle for text.
|
||||
\fancypagestyle{normal}{
|
||||
\fancyhf{}
|
||||
\fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
|
||||
\fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}}
|
||||
\fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}}
|
||||
\fancyhead[LE,RO]{{\py@HeaderFamily \@title, \py@release}}
|
||||
\renewcommand{\headrulewidth}{0.4pt}
|
||||
\renewcommand{\footrulewidth}{0.4pt}
|
||||
}
|
||||
% Update the plain style so we get the page number & footer line,
|
||||
% but not a chapter or section title. This is to keep the first
|
||||
% page of a chapter and the blank page between chapters `clean.'
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\renewcommand{\footrulewidth}{0.4pt}
|
||||
}
|
||||
}
|
||||
|
||||
% Some custom font markup commands.
|
||||
%
|
||||
\newcommand{\strong}[1]{{\bf #1}}
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
\newcommand{\bfcode}[1]{\code{\bfseries#1}}
|
||||
\newcommand{\samp}[1]{`\code{#1}'}
|
||||
\newcommand{\email}[1]{\textsf{#1}}
|
||||
|
||||
\newcommand{\py@modulebadkey}{{--just-some-junk--}}
|
||||
|
||||
% Redefine the Verbatim environment to allow border and background colors.
|
||||
% The original environment is still used for verbatims within tables.
|
||||
\let\OriginalVerbatim=\Verbatim
|
||||
\let\endOriginalVerbatim=\endVerbatim
|
||||
|
||||
% Play with vspace to be able to keep the indentation.
|
||||
\newlength\distancetoright
|
||||
\newlength\leftsidespace
|
||||
\def\mycolorbox#1{%
|
||||
\setlength\leftsidespace{\@totalleftmargin}%
|
||||
\setlength\distancetoright{\textwidth}%
|
||||
\advance\distancetoright -\@totalleftmargin %
|
||||
\noindent\hspace*{\@totalleftmargin}%
|
||||
\fcolorbox{VerbatimBorderColor}{VerbatimColor}{%
|
||||
\begin{minipage}{\distancetoright}%
|
||||
\smallskip%
|
||||
\noindent\hspace*{-\leftsidespace}%
|
||||
#1
|
||||
\end{minipage}%
|
||||
}%
|
||||
}
|
||||
\def\FrameCommand{\mycolorbox}
|
||||
|
||||
\renewcommand{\Verbatim}[1][1]{%
|
||||
% The list environement is needed to control perfectly the vertical
|
||||
% space.
|
||||
\list{}{%
|
||||
\setlength\parskip{0pt}%
|
||||
\setlength\itemsep{0ex}%
|
||||
\setlength\topsep{0ex}%
|
||||
\setlength\partopsep{0pt}%
|
||||
\setlength\leftmargin{0pt}%
|
||||
}%
|
||||
\item\MakeFramed {\FrameRestore}%
|
||||
\small%
|
||||
\OriginalVerbatim[#1]%
|
||||
}
|
||||
\renewcommand{\endVerbatim}{%
|
||||
\endOriginalVerbatim%
|
||||
\endMakeFramed%
|
||||
\endlist%
|
||||
}
|
||||
|
||||
|
||||
% Index-entry generation support.
|
||||
%
|
||||
|
||||
% Command to generate two index entries (using subentries)
|
||||
\newcommand{\indexii}[2]{\index{#1!#2}\index{#2!#1}}
|
||||
|
||||
% And three entries (using only one level of subentries)
|
||||
\newcommand{\indexiii}[3]{\index{#1!#2 #3}\index{#2!#3, #1}\index{#3!#1 #2}}
|
||||
|
||||
% And four (again, using only one level of subentries)
|
||||
\newcommand{\indexiv}[4]{
|
||||
\index{#1!#2 #3 #4}
|
||||
\index{#2!#3 #4, #1}
|
||||
\index{#3!#4, #1 #2}
|
||||
\index{#4!#1 #2 #3}
|
||||
}
|
||||
|
||||
% support for the module index
|
||||
\newif\ifpy@UseModuleIndex
|
||||
\py@UseModuleIndexfalse
|
||||
|
||||
\newcommand{\makemodindex}{
|
||||
\newwrite\modindexfile
|
||||
\openout\modindexfile=mod\jobname.idx
|
||||
\py@UseModuleIndextrue
|
||||
}
|
||||
|
||||
\newcommand{\printmodindex}{
|
||||
\@input@{mod\jobname.ind}
|
||||
}
|
||||
|
||||
% Add the defining entry for a module
|
||||
\newcommand{\py@modindex}[2]{%
|
||||
\renewcommand{\py@thismodule}{#1}
|
||||
\ifpy@UseModuleIndex%
|
||||
\@ifundefined{py@modplat@\py@thismodulekey}{
|
||||
\write\modindexfile{\protect\indexentry{#1@{\texttt{#1}}|hyperpage}{\thepage}}%
|
||||
}{\write\modindexfile{\protect\indexentry{#1@{\texttt{#1 }%
|
||||
\emph{(\platformof{\py@thismodulekey})}}|hyperpage}{\thepage}}%
|
||||
}
|
||||
\fi%
|
||||
}
|
||||
|
||||
% "Current" keys
|
||||
\newcommand{\py@thisclass}{}
|
||||
\newcommand{\py@thismodule}{}
|
||||
\newcommand{\py@thismodulekey}{}
|
||||
\newcommand{\py@thismoduletype}{}
|
||||
\newcommand{\py@emptymodule}{}
|
||||
|
||||
% \declaremodule[key]{type}{name}
|
||||
\newcommand{\declaremodule}[3][\py@modulebadkey]{
|
||||
\renewcommand{\py@thismoduletype}{#2}
|
||||
\ifx\py@modulebadkey#1
|
||||
\renewcommand{\py@thismodulekey}{#3}
|
||||
\else
|
||||
\renewcommand{\py@thismodulekey}{#1}
|
||||
\fi
|
||||
\py@modindex{#3}{}
|
||||
%\label{module-\py@thismodulekey}
|
||||
}
|
||||
|
||||
% Record module platforms for the Module Index
|
||||
\newif\ifpy@ModPlatformFileIsOpen \py@ModPlatformFileIsOpenfalse
|
||||
\long\def\py@writeModPlatformFile#1{%
|
||||
\protected@write\py@ModPlatformFile%
|
||||
{\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%
|
||||
{\string#1}%
|
||||
}
|
||||
\newcommand{\py@ModPlatformFilename}{\jobname.pla}
|
||||
\newcommand{\platform}[1]{
|
||||
\ifpy@ModPlatformFileIsOpen\else
|
||||
\newwrite\py@ModPlatformFile
|
||||
\openout\py@ModPlatformFile=\py@ModPlatformFilename
|
||||
\py@ModPlatformFileIsOpentrue
|
||||
\fi
|
||||
\py@writeModPlatformFile{\py@defplatform{\py@thismodulekey}{#1}}
|
||||
}
|
||||
\newcommand{\py@defplatform}[2]{\expandafter\def\csname py@modplat@#1\endcsname{#2}}
|
||||
\newcommand{\platformof}[1]{\csname py@modplat@#1\endcsname}
|
||||
|
||||
\InputIfFileExists{\jobname.pla}{}{}
|
||||
|
||||
% \moduleauthor{name}{email}
|
||||
\newcommand{\moduleauthor}[2]{}
|
||||
|
||||
% \sectionauthor{name}{email}
|
||||
\newcommand{\sectionauthor}[2]{}
|
||||
|
||||
% Ignore module synopsis.
|
||||
\newcommand{\modulesynopsis}[1]{}
|
||||
|
||||
% Reset "current" objects.
|
||||
\newcommand{\resetcurrentobjects}{
|
||||
\renewcommand{\py@thisclass}{}
|
||||
\renewcommand{\py@thismodule}{}
|
||||
\renewcommand{\py@thismodulekey}{}
|
||||
\renewcommand{\py@thismoduletype}{}
|
||||
}
|
||||
|
||||
% Augment the sectioning commands used to get our own font family in place,
|
||||
% and reset some internal data items:
|
||||
\titleformat{\section}{\Large\py@HeaderFamily}%
|
||||
{\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor}
|
||||
\titleformat{\subsection}{\large\py@HeaderFamily}%
|
||||
{\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
|
||||
\titleformat{\subsubsection}{\py@HeaderFamily}%
|
||||
{\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
|
||||
\titleformat{\paragraph}{\large\py@HeaderFamily}%
|
||||
{\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor}
|
||||
|
||||
|
||||
% Now for a lot of semantically-loaded environments that do a ton of magical
|
||||
% things to get the right formatting and index entries for the stuff in
|
||||
% Python modules and C API.
|
||||
|
||||
|
||||
% {fulllineitems} is used in one place in libregex.tex, but is really for
|
||||
% internal use in this file.
|
||||
%
|
||||
\newcommand{\py@itemnewline}[1]{%
|
||||
\@tempdima\linewidth%
|
||||
\advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}%
|
||||
}
|
||||
|
||||
\newenvironment{fulllineitems}{
|
||||
\begin{list}{}{\labelwidth \leftmargin \labelsep 0pt
|
||||
\rightmargin 0pt \topsep -\parskip \partopsep \parskip
|
||||
\itemsep -\parsep
|
||||
\let\makelabel=\py@itemnewline}
|
||||
}{\end{list}}
|
||||
|
||||
% \optional is mostly for use in the arguments parameters to the various
|
||||
% {*desc} environments defined below, but may be used elsewhere. Known to
|
||||
% be used in the debugger chapter.
|
||||
%
|
||||
% Typical usage:
|
||||
%
|
||||
% \begin{funcdesc}{myfunc}{reqparm\optional{, optparm}}
|
||||
% ^^^ ^^^
|
||||
% No space here No space here
|
||||
%
|
||||
% When a function has multiple optional parameters, \optional should be
|
||||
% nested, not chained. This is right:
|
||||
%
|
||||
% \begin{funcdesc}{myfunc}{\optional{parm1\optional{, parm2}}}
|
||||
%
|
||||
\let\py@badkey=\@undefined
|
||||
|
||||
\newcommand{\optional}[1]{%
|
||||
{\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}}
|
||||
|
||||
% This can be used when a function or method accepts an varying number
|
||||
% of arguments, such as by using the *args syntax in the parameter list.
|
||||
\newcommand{\py@moreargs}{...}
|
||||
|
||||
% This can be used when you don't want to document the parameters to a
|
||||
% function or method, but simply state that it's an alias for
|
||||
% something else.
|
||||
\newcommand{\py@unspecified}{...}
|
||||
|
||||
\newcommand{\py@varvars}[1]{{%
|
||||
{\let\unspecified=\py@unspecified%
|
||||
\let\moreargs=\py@moreargs%
|
||||
\emph{#1}}}}
|
||||
|
||||
\newlength{\py@argswidth}
|
||||
\newcommand{\py@sigparams}[1]{%
|
||||
\parbox[t]{\py@argswidth}{\py@varvars{#1}\code{)}}}
|
||||
\newcommand{\py@sigline}[2]{%
|
||||
\settowidth{\py@argswidth}{#1\code{(}}%
|
||||
\addtolength{\py@argswidth}{-2\py@argswidth}%
|
||||
\addtolength{\py@argswidth}{\textwidth}%
|
||||
\item[#1\code{(}\py@sigparams{#2}]}
|
||||
|
||||
% C functions ------------------------------------------------------------
|
||||
% \begin{cfuncdesc}[refcount]{type}{name}{arglist}
|
||||
% Note that the [refcount] slot should only be filled in by
|
||||
% tools/anno-api.py; it pulls the value from the refcounts database.
|
||||
\newcommand{\cfuncline}[3]{
|
||||
\py@sigline{\code{#1 \bfcode{#2}}}{#3}%
|
||||
}
|
||||
\newenvironment{cfuncdesc}[3]{
|
||||
\begin{fulllineitems}
|
||||
\cfuncline{#1}{#2}{#3}
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% C variables ------------------------------------------------------------
|
||||
% \begin{cvardesc}{type}{name}
|
||||
\newenvironment{cvardesc}[2]{
|
||||
\begin{fulllineitems}
|
||||
\item[\code{#1 \bfcode{#2}}]
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% C data types -----------------------------------------------------------
|
||||
% \begin{ctypedesc}[index name]{typedef name}
|
||||
\newenvironment{ctypedesc}[2][\py@badkey]{
|
||||
\begin{fulllineitems}
|
||||
\item[\bfcode{#2}]
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% C type fields ----------------------------------------------------------
|
||||
% \begin{cmemberdesc}{container type}{ctype}{membername}
|
||||
\newcommand{\cmemberline}[3]{
|
||||
\item[\code{#2 \bfcode{#3}}]
|
||||
}
|
||||
\newenvironment{cmemberdesc}[3]{
|
||||
\begin{fulllineitems}
|
||||
\cmemberline{#1}{#2}{#3}
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% Funky macros -----------------------------------------------------------
|
||||
% \begin{csimplemacrodesc}{name}
|
||||
% -- "simple" because it has no args; NOT for constant definitions!
|
||||
\newenvironment{csimplemacrodesc}[1]{
|
||||
\begin{fulllineitems}
|
||||
\item[\bfcode{#1}]
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% simple functions (not methods) -----------------------------------------
|
||||
% \begin{funcdesc}{name}{args}
|
||||
\newcommand{\funcline}[2]{%
|
||||
\py@sigline{\bfcode{#1}}{#2}}
|
||||
\newenvironment{funcdesc}[2]{
|
||||
\begin{fulllineitems}
|
||||
\funcline{#1}{#2}
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% classes ----------------------------------------------------------------
|
||||
% \begin{classdesc}{name}{constructor args}
|
||||
\newcommand{\classline}[2]{
|
||||
\py@sigline{\strong{class }\bfcode{#1}}{#2}}
|
||||
\newenvironment{classdesc}[2]{
|
||||
% Using \renewcommand doesn't work for this, for unknown reasons:
|
||||
\global\def\py@thisclass{#1}
|
||||
\begin{fulllineitems}
|
||||
\classline{#1}{#2}
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% \begin{excclassdesc}{name}{constructor args}
|
||||
% but indexes as an exception
|
||||
\newenvironment{excclassdesc}[2]{
|
||||
% Using \renewcommand doesn't work for this, for unknown reasons:
|
||||
\global\def\py@thisclass{#1}
|
||||
\begin{fulllineitems}
|
||||
\py@sigline{\strong{exception }\bfcode{#1}}{#2}%
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% There is no corresponding {excclassdesc*} environment. To describe
|
||||
% a class exception without parameters, use the {excdesc} environment.
|
||||
|
||||
|
||||
\let\py@classbadkey=\@undefined
|
||||
|
||||
% object method ----------------------------------------------------------
|
||||
% \begin{methoddesc}[classname]{methodname}{args}
|
||||
\newcommand{\methodline}[3][\@undefined]{
|
||||
\py@sigline{\bfcode{#2}}{#3}}
|
||||
\newenvironment{methoddesc}[3][\@undefined]{
|
||||
\begin{fulllineitems}
|
||||
\ifx\@undefined#1\relax
|
||||
\methodline{#2}{#3}
|
||||
\else
|
||||
\def\py@thisclass{#1}
|
||||
\methodline{#2}{#3}
|
||||
\fi
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% static method ----------------------------------------------------------
|
||||
% \begin{staticmethoddesc}[classname]{methodname}{args}
|
||||
\newcommand{\staticmethodline}[3][\@undefined]{
|
||||
\py@sigline{static \bfcode{#2}}{#3}}
|
||||
\newenvironment{staticmethoddesc}[3][\@undefined]{
|
||||
\begin{fulllineitems}
|
||||
\ifx\@undefined#1\relax
|
||||
\staticmethodline{#2}{#3}
|
||||
\else
|
||||
\def\py@thisclass{#1}
|
||||
\staticmethodline{#2}{#3}
|
||||
\fi
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% class method ----------------------------------------------------------
|
||||
% \begin{classmethoddesc}[classname]{methodname}{args}
|
||||
\newcommand{\classmethodline}[3][\@undefined]{
|
||||
\py@sigline{class \bfcode{#2}}{#3}}
|
||||
\newenvironment{classmethoddesc}[3][\@undefined]{
|
||||
\begin{fulllineitems}
|
||||
\ifx\@undefined#1\relax
|
||||
\classmethodline{#2}{#3}
|
||||
\else
|
||||
\def\py@thisclass{#1}
|
||||
\classmethodline{#2}{#3}
|
||||
\fi
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% object data attribute --------------------------------------------------
|
||||
% \begin{memberdesc}[classname]{membername}
|
||||
\newcommand{\memberline}[2][\py@classbadkey]{%
|
||||
\ifx\@undefined#1\relax
|
||||
\item[\bfcode{#2}]
|
||||
\else
|
||||
\item[\bfcode{#2}]
|
||||
\fi
|
||||
}
|
||||
\newenvironment{memberdesc}[2][\py@classbadkey]{
|
||||
\begin{fulllineitems}
|
||||
\ifx\@undefined#1\relax
|
||||
\memberline{#2}
|
||||
\else
|
||||
\def\py@thisclass{#1}
|
||||
\memberline{#2}
|
||||
\fi
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% For exceptions: --------------------------------------------------------
|
||||
% \begin{excdesc}{name}
|
||||
% -- for constructor information, use excclassdesc instead
|
||||
\newenvironment{excdesc}[1]{
|
||||
\begin{fulllineitems}
|
||||
\item[\strong{exception }\bfcode{#1}]
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% Module data or constants: ----------------------------------------------
|
||||
% \begin{datadesc}{name}
|
||||
\newcommand{\dataline}[1]{%
|
||||
\item[\bfcode{#1}]\nopagebreak}
|
||||
\newenvironment{datadesc}[1]{
|
||||
\begin{fulllineitems}
|
||||
\dataline{#1}
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% bytecode instruction ---------------------------------------------------
|
||||
% \begin{opcodedesc}{name}{var}
|
||||
% -- {var} may be {}
|
||||
\newenvironment{opcodedesc}[2]{
|
||||
\begin{fulllineitems}
|
||||
\item[\bfcode{#1}\quad\emph{#2}]
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% generic description ----------------------------------------------------
|
||||
\newcommand{\descline}[1]{%
|
||||
\item[\bfcode{#1}]\nopagebreak%
|
||||
}
|
||||
\newenvironment{describe}[1]{
|
||||
\begin{fulllineitems}
|
||||
\descline{#1}
|
||||
}{\end{fulllineitems}}
|
||||
|
||||
% This version is being checked in for the historical record; it shows
|
||||
% how I've managed to get some aspects of this to work. It will not
|
||||
% be used in practice, so a subsequent revision will change things
|
||||
% again. This version has problems, but shows how to do something
|
||||
% that proved more tedious than I'd expected, so I don't want to lose
|
||||
% the example completely.
|
||||
%
|
||||
\newcommand{\grammartoken}[1]{\texttt{#1}}
|
||||
\newenvironment{productionlist}[1][\py@badkey]{
|
||||
\def\optional##1{{\Large[}##1{\Large]}}
|
||||
\def\production##1##2{\code{##1}&::=&\code{##2}\\}
|
||||
\def\productioncont##1{& &\code{##1}\\}
|
||||
\def\token##1{##1}
|
||||
\let\grammartoken=\token
|
||||
\parindent=2em
|
||||
\indent
|
||||
\begin{tabular}{lcl}
|
||||
}{%
|
||||
\end{tabular}
|
||||
}
|
||||
|
||||
% Notices / Admonitions
|
||||
%
|
||||
\newlength{\py@noticelength}
|
||||
|
||||
\newcommand{\py@heavybox}{
|
||||
\setlength{\fboxrule}{1pt}
|
||||
\setlength{\fboxsep}{7pt}
|
||||
\setlength{\py@noticelength}{\linewidth}
|
||||
\addtolength{\py@noticelength}{-2\fboxsep}
|
||||
\addtolength{\py@noticelength}{-2\fboxrule}
|
||||
\setlength{\shadowsize}{3pt}
|
||||
\Sbox
|
||||
\minipage{\py@noticelength}
|
||||
}
|
||||
\newcommand{\py@endheavybox}{
|
||||
\endminipage
|
||||
\endSbox
|
||||
\fbox{\TheSbox}
|
||||
}
|
||||
|
||||
% Some are quite plain:
|
||||
\newcommand{\py@noticestart@note}{}
|
||||
\newcommand{\py@noticeend@note}{}
|
||||
\newcommand{\py@noticestart@hint}{}
|
||||
\newcommand{\py@noticeend@hint}{}
|
||||
\newcommand{\py@noticestart@important}{}
|
||||
\newcommand{\py@noticeend@important}{}
|
||||
\newcommand{\py@noticestart@tip}{}
|
||||
\newcommand{\py@noticeend@tip}{}
|
||||
|
||||
% Others gets more visible distinction:
|
||||
\newcommand{\py@noticestart@warning}{\py@heavybox}
|
||||
\newcommand{\py@noticeend@warning}{\py@endheavybox}
|
||||
\newcommand{\py@noticestart@caution}{\py@heavybox}
|
||||
\newcommand{\py@noticeend@caution}{\py@endheavybox}
|
||||
\newcommand{\py@noticestart@attention}{\py@heavybox}
|
||||
\newcommand{\py@noticeend@attention}{\py@endheavybox}
|
||||
\newcommand{\py@noticestart@danger}{\py@heavybox}
|
||||
\newcommand{\py@noticeend@danger}{\py@endheavybox}
|
||||
\newcommand{\py@noticestart@error}{\py@heavybox}
|
||||
\newcommand{\py@noticeend@error}{\py@endheavybox}
|
||||
|
||||
\newenvironment{notice}[2]{
|
||||
\def\py@noticetype{#1}
|
||||
\csname py@noticestart@#1\endcsname
|
||||
\par\strong{#2}
|
||||
}{\csname py@noticeend@\py@noticetype\endcsname}
|
||||
|
||||
% Allow the release number to be specified independently of the
|
||||
% \date{}. This allows the date to reflect the document's date and
|
||||
% release to specify the release that is documented.
|
||||
%
|
||||
\newcommand{\py@release}{}
|
||||
\newcommand{\version}{}
|
||||
\newcommand{\shortversion}{}
|
||||
\newcommand{\releaseinfo}{}
|
||||
\newcommand{\releasename}{Release}
|
||||
\newcommand{\release}[1]{%
|
||||
\renewcommand{\py@release}{\releasename\space\version}%
|
||||
\renewcommand{\version}{#1}}
|
||||
\newcommand{\setshortversion}[1]{%
|
||||
\renewcommand{\shortversion}{#1}}
|
||||
\newcommand{\setreleaseinfo}[1]{%
|
||||
\renewcommand{\releaseinfo}{#1}}
|
||||
|
||||
% Allow specification of the author's address separately from the
|
||||
% author's name. This can be used to format them differently, which
|
||||
% is a good thing.
|
||||
%
|
||||
\newcommand{\py@authoraddress}{}
|
||||
\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}}
|
||||
|
||||
% This sets up the fancy chapter headings that make the documents look
|
||||
% at least a little better than the usual LaTeX output.
|
||||
%
|
||||
\@ifundefined{ChTitleVar}{}{
|
||||
\ChNameVar{\raggedleft\normalsize\py@HeaderFamily}
|
||||
\ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily}
|
||||
\ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily}
|
||||
% This creates chapter heads without the leading \vspace*{}:
|
||||
\def\@makechapterhead#1{%
|
||||
{\parindent \z@ \raggedright \normalfont
|
||||
\ifnum \c@secnumdepth >\m@ne
|
||||
\DOCH
|
||||
\fi
|
||||
\interlinepenalty\@M
|
||||
\DOTI{#1}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
% Redefine description environment so that it is usable inside fulllineitems.
|
||||
%
|
||||
\renewcommand{\description}{%
|
||||
\list{}{\labelwidth\z@%
|
||||
\itemindent-\leftmargin%
|
||||
\labelsep5pt%
|
||||
\let\makelabel=\descriptionlabel}}
|
||||
|
||||
% Definition lists; requested by AMK for HOWTO documents. Probably useful
|
||||
% elsewhere as well, so keep in in the general style support.
|
||||
%
|
||||
\newenvironment{definitions}{%
|
||||
\begin{description}%
|
||||
\def\term##1{\item[##1]\mbox{}\\*[0mm]}
|
||||
}{%
|
||||
\end{description}%
|
||||
}
|
||||
|
||||
% Tell TeX about pathological hyphenation cases:
|
||||
\hyphenation{Base-HTTP-Re-quest-Hand-ler}
|
||||
|
||||
|
||||
% The following is stuff copied from docutils' latex writer.
|
||||
%
|
||||
\newcommand{\optionlistlabel}[1]{\bf #1 \hfill}
|
||||
\newenvironment{optionlist}[1]
|
||||
{\begin{list}{}
|
||||
{\setlength{\labelwidth}{#1}
|
||||
\setlength{\rightmargin}{1cm}
|
||||
\setlength{\leftmargin}{\rightmargin}
|
||||
\addtolength{\leftmargin}{\labelwidth}
|
||||
\addtolength{\leftmargin}{\labelsep}
|
||||
\renewcommand{\makelabel}{\optionlistlabel}}
|
||||
}{\end{list}}
|
||||
|
||||
\newlength{\lineblockindentation}
|
||||
\setlength{\lineblockindentation}{2.5em}
|
||||
\newenvironment{lineblock}[1]
|
||||
{\begin{list}{}
|
||||
{\setlength{\partopsep}{\parskip}
|
||||
\addtolength{\partopsep}{\baselineskip}
|
||||
\topsep0pt\itemsep0.15\baselineskip\parsep0pt
|
||||
\leftmargin#1}
|
||||
\raggedright}
|
||||
{\end{list}}
|
||||
|
||||
% Redefine includgraphics for avoiding images larger than the screen size
|
||||
% If the size is not specified.
|
||||
\let\py@Oldincludegraphics\includegraphics
|
||||
|
||||
\newbox\image@box%
|
||||
\newdimen\image@width%
|
||||
\renewcommand\includegraphics[2][\@empty]{%
|
||||
\ifx#1\@empty%
|
||||
\setbox\image@box=\hbox{\py@Oldincludegraphics{#2}}%
|
||||
\image@width\wd\image@box%
|
||||
\ifdim \image@width>\linewidth%
|
||||
\setbox\image@box=\hbox{\py@Oldincludegraphics[width=\linewidth]{#2}}%
|
||||
\box\image@box%
|
||||
\else%
|
||||
\py@Oldincludegraphics{#2}%
|
||||
\fi%
|
||||
\else%
|
||||
\py@Oldincludegraphics[#1]{#2}%
|
||||
\fi%
|
||||
}
|
||||
|
||||
|
||||
% Fix the index and bibliography environments to add an entry to the Table of
|
||||
% Contents; this is much nicer than just having to jump to the end of the book
|
||||
% and flip around, especially with multiple indexes.
|
||||
%
|
||||
\let\py@OldTheindex=\theindex
|
||||
\renewcommand{\theindex}{
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
\py@OldTheindex
|
||||
\addcontentsline{toc}{chapter}{\indexname}
|
||||
}
|
||||
|
||||
\let\py@OldThebibliography=\thebibliography
|
||||
\renewcommand{\thebibliography}[1]{
|
||||
\cleardoublepage
|
||||
\phantomsection
|
||||
\py@OldThebibliography{1}
|
||||
\addcontentsline{toc}{chapter}{\bibname}
|
||||
}
|
||||
|
||||
% Include hyperref last.
|
||||
\RequirePackage[colorlinks,breaklinks,
|
||||
linkcolor=InnerLinkColor,filecolor=OuterLinkColor,
|
||||
menucolor=OuterLinkColor,pagecolor=OuterLinkColor,
|
||||
urlcolor=OuterLinkColor,citecolor=InnerLinkColor]{hyperref}
|
||||
|
||||
% From docutils.writers.latex2e
|
||||
\providecommand{\DUspan}[2]{%
|
||||
{% group ("span") to limit the scope of styling commands
|
||||
\@for\node@class@name:=#1\do{%
|
||||
\ifcsname docutilsrole\node@class@name\endcsname%
|
||||
\csname docutilsrole\node@class@name\endcsname%
|
||||
\fi%
|
||||
}%
|
||||
{#2}% node content
|
||||
}% close "span"
|
||||
}
|
||||
452
docs/fr/_build/latex/tabulary.sty
Normal file
452
docs/fr/_build/latex/tabulary.sty
Normal file
|
|
@ -0,0 +1,452 @@
|
|||
%%
|
||||
%% This is file `tabulary.sty',
|
||||
%% generated with the docstrip utility.
|
||||
%%
|
||||
%% The original source files were:
|
||||
%%
|
||||
%% tabulary.dtx (with options: `package')
|
||||
%% DRAFT VERSION
|
||||
%%
|
||||
%% File `tabulary.dtx'.
|
||||
%% Copyright (C) 1995 1996 2003 David Carlisle
|
||||
%% This file may be distributed under the terms of the LPPL.
|
||||
%% See 00readme.txt for details.
|
||||
%%
|
||||
\NeedsTeXFormat{LaTeX2e}
|
||||
\ProvidesPackage{tabulary}
|
||||
[2007/10/02 v0.9 tabulary package (DPC)]
|
||||
\RequirePackage{array}
|
||||
\catcode`\Z=14
|
||||
\DeclareOption{debugshow}{\catcode`\Z=9\relax}
|
||||
\ProcessOptions
|
||||
\def\arraybackslash{\let\\=\@arraycr}
|
||||
\def\@finalstrut#1{%
|
||||
\unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1}
|
||||
\newcount\TY@count
|
||||
\def\tabulary{%
|
||||
\let\TY@final\tabular
|
||||
\let\endTY@final\endtabular
|
||||
\TY@tabular}
|
||||
\def\TY@tabular#1{%
|
||||
\edef\TY@{\@currenvir}%
|
||||
{\ifnum0=`}\fi
|
||||
\@ovxx\TY@linewidth
|
||||
\@ovyy\TY@tablewidth
|
||||
\count@\z@
|
||||
\@tempswatrue
|
||||
\@whilesw\if@tempswa\fi{%
|
||||
\advance\count@\@ne
|
||||
\expandafter\ifx\csname TY@F\the\count@\endcsname\relax
|
||||
\@tempswafalse
|
||||
\else
|
||||
\expandafter\let\csname TY@SF\the\count@\expandafter\endcsname
|
||||
\csname TY@F\the\count@\endcsname
|
||||
\global\expandafter\let\csname TY@F\the\count@\endcsname\relax
|
||||
\expandafter\let\csname TY@S\the\count@\expandafter\endcsname
|
||||
\csname TY@\the\count@\endcsname
|
||||
\fi}%
|
||||
\global\TY@count\@ne
|
||||
\TY@width\xdef{0pt}%
|
||||
\global\TY@tablewidth\z@
|
||||
\global\TY@linewidth#1\relax
|
||||
Z\message{^^J^^JTable^^J%
|
||||
Z Target Width: \the\TY@linewidth^^J%
|
||||
Z \string\tabcolsep: \the\tabcolsep\space
|
||||
Z \string\arrayrulewidth: \the\arrayrulewidth\space
|
||||
Z \string\doublerulesep: \the\doublerulesep^^J%
|
||||
Z \string\tymin: \the\tymin\space
|
||||
Z \string\tymax: \the\tymax^^J}%
|
||||
\let\@classz\TY@classz
|
||||
\let\verb\TX@verb
|
||||
\toks@{}\TY@get@body}
|
||||
\let\TY@@mkpream\@mkpream
|
||||
\def\TY@mkpream{%
|
||||
\def\@addamp{%
|
||||
\if@firstamp \@firstampfalse \else
|
||||
\global\advance\TY@count\@ne
|
||||
\edef\@preamble{\@preamble &}\fi
|
||||
\TY@width\xdef{0pt}}%
|
||||
\def\@acol{%
|
||||
\TY@subwidth\col@sep
|
||||
\@addtopreamble{\hskip\col@sep}}%
|
||||
\let\@arrayrule\TY@arrayrule
|
||||
\let\@classvi\TY@classvi
|
||||
\def\@classv{\save@decl
|
||||
\expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@
|
||||
\sbox\z@{\d@llarbegin\@nextchar\d@llarend}%
|
||||
\TY@subwidth{\wd\z@}%
|
||||
\@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
|
||||
\prepnext@tok}%
|
||||
\global\let\@mkpream\TY@@mkpream
|
||||
\TY@@mkpream}
|
||||
\def\TY@arrayrule{%
|
||||
\TY@subwidth\arrayrulewidth
|
||||
\@addtopreamble \vline}
|
||||
\def\TY@classvi{\ifcase \@lastchclass
|
||||
\@acol \or
|
||||
\TY@subwidth\doublerulesep
|
||||
\@addtopreamble{\hskip \doublerulesep}\or
|
||||
\@acol \or
|
||||
\@classvii
|
||||
\fi}
|
||||
\def\TY@tab{%
|
||||
\setbox\z@\hbox\bgroup
|
||||
\let\[$\let\]$%
|
||||
\let\equation$\let\endequation$%
|
||||
\col@sep\tabcolsep
|
||||
\let\d@llarbegin\begingroup\let\d@llarend\endgroup
|
||||
\let\@mkpream\TY@mkpream
|
||||
\def\multicolumn##1##2##3{\multispan##1\relax}%
|
||||
\CT@start\TY@tabarray}
|
||||
\def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}}
|
||||
\def\TY@array[#1]{\@array[t]}
|
||||
\def\TY@width#1{%
|
||||
\expandafter#1\csname TY@\the\TY@count\endcsname}
|
||||
\def\TY@subwidth#1{%
|
||||
\TY@width\dimen@
|
||||
\advance\dimen@-#1\relax
|
||||
\TY@width\xdef{\the\dimen@}%
|
||||
\global\advance\TY@linewidth-#1\relax}
|
||||
\def\endtabulary{%
|
||||
\gdef\@halignto{}%
|
||||
\let\TY@footnote\footnote%
|
||||
\def\footnote{}% prevent footnotes from doing anything
|
||||
\expandafter\TY@tab\the\toks@
|
||||
\crcr\omit
|
||||
{\xdef\TY@save@row{}%
|
||||
\loop
|
||||
\advance\TY@count\m@ne
|
||||
\ifnum\TY@count>\z@
|
||||
\xdef\TY@save@row{\TY@save@row&\omit}%
|
||||
\repeat}\TY@save@row
|
||||
\endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1
|
||||
\unskip\global\setbox1=\lastbox}\egroup
|
||||
\dimen@\TY@linewidth
|
||||
\divide\dimen@\TY@count
|
||||
\ifdim\dimen@<\tymin
|
||||
\TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}%
|
||||
\tymin\dimen@
|
||||
\fi
|
||||
\setbox\tw@=\hbox{\unhbox\@ne
|
||||
\loop
|
||||
\@tempdima=\lastskip
|
||||
\ifdim\@tempdima>\z@
|
||||
Z \message{ecs=\the\@tempdima^^J}%
|
||||
\global\advance\TY@linewidth-\@tempdima
|
||||
\fi
|
||||
\unskip
|
||||
\setbox\tw@=\lastbox
|
||||
\ifhbox\tw@
|
||||
Z \message{Col \the\TY@count: Initial=\the\wd\tw@\space}%
|
||||
\ifdim\wd\tw@>\tymax
|
||||
\wd\tw@\tymax
|
||||
Z \message{> max\space}%
|
||||
Z \else
|
||||
Z \message{ \@spaces\space}%
|
||||
\fi
|
||||
\TY@width\dimen@
|
||||
Z \message{\the\dimen@\space}%
|
||||
\advance\dimen@\wd\tw@
|
||||
Z \message{Final=\the\dimen@\space}%
|
||||
\TY@width\xdef{\the\dimen@}%
|
||||
\ifdim\dimen@<\tymin
|
||||
Z \message{< tymin}%
|
||||
\global\advance\TY@linewidth-\dimen@
|
||||
\expandafter\xdef\csname TY@F\the\TY@count\endcsname
|
||||
{\the\dimen@}%
|
||||
\else
|
||||
\expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@
|
||||
Z \message{***}%
|
||||
\global\advance\TY@linewidth-\dimen@
|
||||
\expandafter\xdef\csname TY@F\the\TY@count\endcsname
|
||||
{\the\dimen@}%
|
||||
\else
|
||||
Z \message{> tymin}%
|
||||
\global\advance\TY@tablewidth\dimen@
|
||||
\global\expandafter\let\csname TY@F\the\TY@count\endcsname
|
||||
\maxdimen
|
||||
\fi\fi
|
||||
\advance\TY@count\m@ne
|
||||
\repeat}%
|
||||
\TY@checkmin
|
||||
\TY@checkmin
|
||||
\TY@checkmin
|
||||
\TY@checkmin
|
||||
\TY@count\z@
|
||||
\let\TY@box\TY@box@v
|
||||
\let\footnote\TY@footnote % restore footnotes
|
||||
{\expandafter\TY@final\the\toks@\endTY@final}%
|
||||
\count@\z@
|
||||
\@tempswatrue
|
||||
\@whilesw\if@tempswa\fi{%
|
||||
\advance\count@\@ne
|
||||
\expandafter\ifx\csname TY@SF\the\count@\endcsname\relax
|
||||
\@tempswafalse
|
||||
\else
|
||||
\global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname
|
||||
\csname TY@SF\the\count@\endcsname
|
||||
\global\expandafter\let\csname TY@\the\count@\expandafter\endcsname
|
||||
\csname TY@S\the\count@\endcsname
|
||||
\fi}%
|
||||
\TY@linewidth\@ovxx
|
||||
\TY@tablewidth\@ovyy
|
||||
\ifnum0=`{\fi}}
|
||||
\def\TY@checkmin{%
|
||||
\let\TY@checkmin\relax
|
||||
\ifdim\TY@tablewidth>\z@
|
||||
\Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth
|
||||
\ifdim\TY@tablewidth <\linewidth
|
||||
\def\TY@ratio{1}%
|
||||
\fi
|
||||
\else
|
||||
\TY@warn{No suitable columns!}%
|
||||
\def\TY@ratio{1}%
|
||||
\fi
|
||||
\count@\z@
|
||||
Z \message{^^JLine Width: \the\TY@linewidth,
|
||||
Z Natural Width: \the\TY@tablewidth,
|
||||
Z Ratio: \TY@ratio^^J}%
|
||||
\@tempdima\z@
|
||||
\loop
|
||||
\ifnum\count@<\TY@count
|
||||
\advance\count@\@ne
|
||||
\ifdim\csname TY@F\the\count@\endcsname>\tymin
|
||||
\dimen@\csname TY@\the\count@\endcsname
|
||||
\dimen@\TY@ratio\dimen@
|
||||
\ifdim\dimen@<\tymin
|
||||
Z \message{Column \the\count@\space ->}%
|
||||
\global\expandafter\let\csname TY@F\the\count@\endcsname\tymin
|
||||
\global\advance\TY@linewidth-\tymin
|
||||
\global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname
|
||||
\let\TY@checkmin\TY@@checkmin
|
||||
\else
|
||||
\expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}%
|
||||
\advance\@tempdima\csname TY@F\the\count@\endcsname
|
||||
\fi
|
||||
\fi
|
||||
Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }%
|
||||
\repeat
|
||||
Z \message{^^JTotal:\the\@tempdima^^J}%
|
||||
}
|
||||
\let\TY@@checkmin\TY@checkmin
|
||||
\newdimen\TY@linewidth
|
||||
\def\tyformat{\everypar{{\nobreak\hskip\z@skip}}}
|
||||
\newdimen\tymin
|
||||
\tymin=10pt
|
||||
\newdimen\tymax
|
||||
\tymax=2\textwidth
|
||||
\def\@testpach{\@chclass
|
||||
\ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
|
||||
\ifnum \@lastchclass=7 5 \else
|
||||
\ifnum \@lastchclass=8 \tw@ \else
|
||||
\ifnum \@lastchclass=9 \thr@@
|
||||
\else \z@
|
||||
\ifnum \@lastchclass = 10 \else
|
||||
\edef\@nextchar{\expandafter\string\@nextchar}%
|
||||
\@chnum
|
||||
\if \@nextchar c\z@ \else
|
||||
\if \@nextchar l\@ne \else
|
||||
\if \@nextchar r\tw@ \else
|
||||
\if \@nextchar C7 \else
|
||||
\if \@nextchar L8 \else
|
||||
\if \@nextchar R9 \else
|
||||
\if \@nextchar J10 \else
|
||||
\z@ \@chclass
|
||||
\if\@nextchar |\@ne \else
|
||||
\if \@nextchar !6 \else
|
||||
\if \@nextchar @7 \else
|
||||
\if \@nextchar <8 \else
|
||||
\if \@nextchar >9 \else
|
||||
10
|
||||
\@chnum
|
||||
\if \@nextchar m\thr@@\else
|
||||
\if \@nextchar p4 \else
|
||||
\if \@nextchar b5 \else
|
||||
\z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi
|
||||
\fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi}
|
||||
\def\TY@classz{%
|
||||
\@classx
|
||||
\@tempcnta\count@
|
||||
\ifx\TY@box\TY@box@v
|
||||
\global\advance\TY@count\@ne
|
||||
\fi
|
||||
\let\centering c%
|
||||
\let\raggedright\noindent
|
||||
\let\raggedleft\indent
|
||||
\let\arraybackslash\relax
|
||||
\prepnext@tok
|
||||
\ifnum\@chnum<4
|
||||
\global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
|
||||
\fi
|
||||
\ifnum\@chnum=6
|
||||
\global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
|
||||
\fi
|
||||
\@addtopreamble{%
|
||||
\ifcase\@chnum
|
||||
\hfil \d@llarbegin\insert@column\d@llarend \hfil \or
|
||||
\kern\z@
|
||||
\d@llarbegin \insert@column \d@llarend \hfil \or
|
||||
\hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or
|
||||
$\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
|
||||
\vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
|
||||
\vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
|
||||
\d@llarbegin \insert@column \d@llarend \or% dubious "s" case
|
||||
\TY@box\centering\or
|
||||
\TY@box\raggedright\or
|
||||
\TY@box\raggedleft\or
|
||||
\TY@box\relax
|
||||
\fi}\prepnext@tok}
|
||||
\def\TY@box#1{%
|
||||
\ifx\centering#1%
|
||||
\hfil \d@llarbegin\insert@column\d@llarend \hfil \else
|
||||
\ifx\raggedright#1%
|
||||
\kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
\d@llarbegin \insert@column \d@llarend \hfil \else
|
||||
\ifx\raggedleft#1%
|
||||
\hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else
|
||||
\ifx\relax#1%
|
||||
\d@llarbegin \insert@column \d@llarend
|
||||
\fi \fi \fi \fi}
|
||||
\def\TY@box@v#1{%
|
||||
\vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}%
|
||||
#1\arraybackslash\tyformat
|
||||
\insert@column\@endpbox}
|
||||
\newdimen\TY@tablewidth
|
||||
\def\Gscale@div#1#2#3{%
|
||||
\setlength\dimen@{#3}%
|
||||
\ifdim\dimen@=\z@
|
||||
\PackageError{graphics}{Division by 0}\@eha
|
||||
\dimen@#2%
|
||||
\fi
|
||||
\edef\@tempd{\the\dimen@}%
|
||||
\setlength\dimen@{#2}%
|
||||
\count@65536\relax
|
||||
\ifdim\dimen@<\z@
|
||||
\dimen@-\dimen@
|
||||
\count@-\count@
|
||||
\fi
|
||||
\loop
|
||||
\ifdim\dimen@<8192\p@
|
||||
\dimen@\tw@\dimen@
|
||||
\divide\count@\tw@
|
||||
\repeat
|
||||
\dimen@ii=\@tempd\relax
|
||||
\divide\dimen@ii\count@
|
||||
\divide\dimen@\dimen@ii
|
||||
\edef#1{\strip@pt\dimen@}}
|
||||
\long\def\TY@get@body#1\end
|
||||
{\toks@\expandafter{\the\toks@#1}\TY@find@end}
|
||||
\def\TY@find@end#1{%
|
||||
\def\@tempa{#1}%
|
||||
\ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa
|
||||
\else\toks@\expandafter
|
||||
{\the\toks@\end{#1}}\expandafter\TY@get@body\fi}
|
||||
\def\TY@warn{%
|
||||
\PackageWarning{tabulary}}
|
||||
\catcode`\Z=11
|
||||
\AtBeginDocument{
|
||||
\@ifpackageloaded{colortbl}{%
|
||||
\expandafter\def\expandafter\@mkpream\expandafter#\expandafter1%
|
||||
\expandafter{%
|
||||
\expandafter\let\expandafter\CT@setup\expandafter\relax
|
||||
\expandafter\let\expandafter\CT@color\expandafter\relax
|
||||
\expandafter\let\expandafter\CT@do@color\expandafter\relax
|
||||
\expandafter\let\expandafter\color\expandafter\relax
|
||||
\expandafter\let\expandafter\CT@column@color\expandafter\relax
|
||||
\expandafter\let\expandafter\CT@row@color\expandafter\relax
|
||||
\@mkpream{#1}}
|
||||
\let\TY@@mkpream\@mkpream
|
||||
\def\TY@classz{%
|
||||
\@classx
|
||||
\@tempcnta\count@
|
||||
\ifx\TY@box\TY@box@v
|
||||
\global\advance\TY@count\@ne
|
||||
\fi
|
||||
\let\centering c%
|
||||
\let\raggedright\noindent
|
||||
\let\raggedleft\indent
|
||||
\let\arraybackslash\relax
|
||||
\prepnext@tok
|
||||
\expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil
|
||||
\ifnum\@chnum<4
|
||||
\global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
|
||||
\fi
|
||||
\ifnum\@chnum=6
|
||||
\global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@
|
||||
\fi
|
||||
\@addtopreamble{%
|
||||
\setbox\z@\hbox\bgroup\bgroup
|
||||
\ifcase\@chnum
|
||||
\hskip\stretch{.5}\kern\z@
|
||||
\d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or
|
||||
\kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
\d@llarbegin \insert@column \d@llarend \hfill \or
|
||||
\hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or
|
||||
$\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or
|
||||
\vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
|
||||
\vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or
|
||||
\d@llarbegin \insert@column \d@llarend \or% dubious s case
|
||||
\TY@box\centering\or
|
||||
\TY@box\raggedright\or
|
||||
\TY@box\raggedleft\or
|
||||
\TY@box\relax
|
||||
\fi
|
||||
\egroup\egroup
|
||||
\begingroup
|
||||
\CT@setup
|
||||
\CT@column@color
|
||||
\CT@row@color
|
||||
\CT@do@color
|
||||
\endgroup
|
||||
\@tempdima\ht\z@
|
||||
\advance\@tempdima\minrowclearance
|
||||
\vrule\@height\@tempdima\@width\z@
|
||||
\unhbox\z@
|
||||
}\prepnext@tok}%
|
||||
\def\TY@arrayrule{%
|
||||
\TY@subwidth\arrayrulewidth
|
||||
\@addtopreamble{{\CT@arc@\vline}}}%
|
||||
\def\TY@classvi{\ifcase \@lastchclass
|
||||
\@acol \or
|
||||
\TY@subwidth\doublerulesep
|
||||
\ifx\CT@drsc@\relax
|
||||
\@addtopreamble{\hskip\doublerulesep}%
|
||||
\else
|
||||
\@addtopreamble{{\CT@drsc@\vrule\@width\doublerulesep}}%
|
||||
\fi\or
|
||||
\@acol \or
|
||||
\@classvii
|
||||
\fi}%
|
||||
}{%
|
||||
\let\CT@start\relax
|
||||
}
|
||||
}
|
||||
{\uccode`\*=`\ %
|
||||
\uppercase{\gdef\TX@verb{%
|
||||
\leavevmode\null\TX@vwarn
|
||||
{\ifnum0=`}\fi\ttfamily\let\\\ignorespaces
|
||||
\@ifstar{\let~*\TX@vb}{\TX@vb}}}}
|
||||
\def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
|
||||
\expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!}
|
||||
\def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= }
|
||||
\begingroup
|
||||
\catcode`\*=\catcode`\#
|
||||
\catcode`\#=12
|
||||
\gdef\TX@vfirst{%
|
||||
\if\@tempa#%
|
||||
\def\@tempb{\TX@v@#}%
|
||||
\else
|
||||
\let\@tempb\TX@v@
|
||||
\if\@tempa\space~\else\@tempa\fi
|
||||
\fi
|
||||
\@tempb}
|
||||
\gdef\TX@v@*1 *2{%
|
||||
\TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2}
|
||||
\gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2}
|
||||
\endgroup
|
||||
\def\TX@vwarn{%
|
||||
\@warning{\noexpand\verb may be unreliable inside tabularx/y}%
|
||||
\global\let\TX@vwarn\@empty}
|
||||
\endinput
|
||||
%%
|
||||
%% End of file `tabulary.sty'.
|
||||
58
docs/fr/basis.rst
Normal file
58
docs/fr/basis.rst
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
Les bases de Pelican
|
||||
####################
|
||||
|
||||
Créer son premier article
|
||||
=========================
|
||||
|
||||
Pour créer notre premier article, nous allons éditer un fichier, par exemple premier_article.rst ::
|
||||
|
||||
Premier article pour Pelican
|
||||
############################
|
||||
:author: Guillaume
|
||||
:date: 2011-01-08 10:20
|
||||
:category: GNU-Linux
|
||||
:tags: tutoriel, git
|
||||
Ceci est un tutoriel pour configurer git.
|
||||
Bla, bla, bla ....
|
||||
|
||||
Maintenant que ce fichier est créé, on va lancer la création du blog ::
|
||||
|
||||
pelican .
|
||||
|
||||
Vous aller obtenir une sortie comme celle ci — $PATH représente le dossier où vous
|
||||
avez créé votre article ::
|
||||
|
||||
[ok] writing $PATH/output/feeds/all.atom.xml
|
||||
[ok] writing $PATH/output/feeds/GNU/Linux.atom.xml
|
||||
[ok] writing $PATH/output/feeds/all-en.atom.xml
|
||||
[ok] writing $PATH/output/premier-article-pour-pelican.html
|
||||
[ok] writing $PATH/output/index.html
|
||||
[ok] writing $PATH/output/tags.html
|
||||
[ok] writing $PATH/output/categories.html
|
||||
[ok] writing $PATH/output/archives.html
|
||||
[ok] writing $PATH/output/tag/tutoriel.html
|
||||
[ok] writing $PATH/output/tag/git.html
|
||||
[ok] writing $PATH/output/category/GNU-Linux.html
|
||||
|
||||
|
||||
Première analyse
|
||||
================
|
||||
|
||||
Nous allons décortiquer un peu tout ça ensemble.
|
||||
|
||||
* Un dossier output/ a été créé pour y mettre le fichiers xml et html du blog.
|
||||
* Dans le dossier feeds/, nous retrouvons les différents flux de syndication.
|
||||
* Le fichier de l’article et la page principale du blog a été généré.
|
||||
* Le répertoire tag/ propose une page par tag.
|
||||
* La page correspondant à la catégorie est générée dans le répertoire category/
|
||||
|
||||
Si vous ouvrez le fichier index.html — ou un autre — avec votre navigateur, vous
|
||||
remarquerez que :
|
||||
|
||||
* Le thème utilisé par défaut est notmyidea
|
||||
* Le nom du blog est A Pelican Blog.
|
||||
|
||||
Bien évidemment, il y a des paramètres de base que l’on peut modifier pour mettre
|
||||
un peu tout ça à sa sauce. C’est ce que nous allons voir au travers du fichier de configuration.
|
||||
|
||||
|
||||
152
docs/fr/conf.py
Normal file
152
docs/fr/conf.py
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import sys, os
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
# sys.path.insert(0, os.path.abspath('..'))
|
||||
|
||||
# -- General configuration -----------------------------------------------------
|
||||
templates_path = ['../_templates']
|
||||
extensions = ['sphinx.ext.autodoc',]
|
||||
source_suffix = '.rst'
|
||||
master_doc = 'index'
|
||||
project = u'Pelican'
|
||||
copyright = u'2010, Alexis Metaireau and contributors'
|
||||
exclude_patterns = ['_build']
|
||||
pygments_style = 'sphinx'
|
||||
version = "2"
|
||||
release = version
|
||||
|
||||
# -- Options for HTML output ---------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
sys.path.append(os.path.abspath('../_themes'))
|
||||
html_theme_path = ['../_themes']
|
||||
html_theme = 'flask_small'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
html_theme_options = {
|
||||
'index_logo': 'pelican.png',
|
||||
'github_fork': 'ametaireau/pelican',
|
||||
}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = []
|
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = None
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['../_static']
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
#html_show_sourcelink = True
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = None
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'Raclettedoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output --------------------------------------------------
|
||||
|
||||
# The paper size ('letter' or 'a4').
|
||||
#latex_paper_size = 'letter'
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#latex_font_size = '10pt'
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'Raclette.tex', u'Raclette Documentation',
|
||||
u'Alexis Métaireau', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#latex_preamble = ''
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output --------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'raclette', u'Raclette Documentation',
|
||||
[u'Alexis Métaireau'], 1)
|
||||
]
|
||||
38
docs/fr/faq.rst
Normal file
38
docs/fr/faq.rst
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
Frequently Asked Questions (FAQ)
|
||||
################################
|
||||
|
||||
Here is a summary of the frequently asked questions for pelican.
|
||||
|
||||
Is it mandatory to have a configuration file ?
|
||||
==============================================
|
||||
|
||||
No, it's not. Configurations files are just an easy way to configure pelican.
|
||||
For the basic operations, it's possible to specify options while invoking
|
||||
pelican with the command line (see `pelican --help` for more informations about
|
||||
that)
|
||||
|
||||
I'm creating my own theme, how to use pygments ?
|
||||
================================================
|
||||
|
||||
Pygment add some classes to the generated content, so the theming of your theme
|
||||
will be done thanks to a css file. You can have a look to the one proposed by
|
||||
default `on the project website <http://pygments.org/demo/15101/>`_
|
||||
|
||||
How do I create my own theme ?
|
||||
==============================
|
||||
|
||||
Please refer yourself to :ref:`theming-pelican`.
|
||||
|
||||
How can I help ?
|
||||
================
|
||||
|
||||
You have different options to help. First, you can use pelican, and report any
|
||||
idea or problem you have on `the bugtracker
|
||||
<http://github.com/ametaireau/pelican/issues>`_.
|
||||
|
||||
If you want to contribute, please have a look to `the git repository
|
||||
<https://github.com/ametaireau/pelican/>`_, fork it, add your changes and do
|
||||
a pull request, I'll review them as soon as possible.
|
||||
|
||||
You can also contribute by creating themes, and making the documentation
|
||||
better.
|
||||
54
docs/fr/index.rst
Normal file
54
docs/fr/index.rst
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
Pelican
|
||||
#######
|
||||
|
||||
Pelican est un generateur de blog simple codé en python
|
||||
|
||||
* Écrivez vos articles directement dans votre éditeur favori (vim !) et
|
||||
directement en syntaxe reStructuredText ou Markdown ;
|
||||
* Un outil simple en ligne de conmmande pour (re)générer le blog ;
|
||||
* Sortie complètement statique, facile pour l'héberger n'importe où ;
|
||||
|
||||
Fonctionnalités
|
||||
===============
|
||||
|
||||
Pelican supporte actuellement :
|
||||
|
||||
* des articles de blog ;
|
||||
* des pages statiques ;
|
||||
* les commentaires via un service externe (`disqus <http://disqus.com>`_)
|
||||
Notez qu'étant bien un service externe assez pratique, vous ne gérez pas
|
||||
vous même les commentaires. Ce qui pourrait occasionner une perte de vos données;
|
||||
* support de template (les templates sont crées avec `jinja2 <http://jinjna.pocoo.org>`_) ;
|
||||
* génération optionnelle de vos pages et articles en pdf.
|
||||
|
||||
Pourquoi le nom "Pelican" ?
|
||||
============================
|
||||
|
||||
Vous n'avez pas remarqué ? "Pelican" est un anagramme pour "Calepin" ;)
|
||||
|
||||
Code source
|
||||
===========
|
||||
|
||||
Vous pouvez accéder au code source via mercurial sur http://hg.notmyidea.org/pelican/
|
||||
ou via git à l'adresse http://github.com/ametaireau/pelican/
|
||||
|
||||
Feedback !
|
||||
==========
|
||||
|
||||
Si vous voulez de nouvelles fonctionnalitées pour Pelican, n'hésitez pas à nous le dire,
|
||||
à cloner le dépôt, etc … C'est open source !!!
|
||||
|
||||
Contactez Alexis à "alexis at notmyidea dot org" pour quelques requêtes ou retour d'expérience que ce soi !
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
install
|
||||
basis
|
||||
settings
|
||||
themes
|
||||
internals
|
||||
faq
|
||||
53
docs/fr/index.rst.save
Normal file
53
docs/fr/index.rst.save
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
Pelican
|
||||
#######
|
||||
|
||||
Pelican est un generateur de blog simple codé en python
|
||||
|
||||
* Écrivez vos articles directement dans votre éditeur favori (vim !) et
|
||||
directement en syntaxe reStructuredText ou Markdown ;
|
||||
* Un outil simple en ligne de conmmande pour (re)générer le blog ;
|
||||
* Sortie complètement statique, facile pour l'héberger n'importe où ;
|
||||
|
||||
Fonctionnalités
|
||||
===============
|
||||
|
||||
Pelican supporte actuellement :
|
||||
|
||||
* des articles de blog ;
|
||||
* des pages statiques ;
|
||||
* les commentaires via un service externe (`disqus <http://disqus.com>`_)
|
||||
Notez qu'étant bien un service externe assez pratique, vous ne gérez pas
|
||||
vous même les commentaires. Ce qui pourrait occasionner une perte de vos données;
|
||||
* support de template (les templates sont crées avec Jinja 2 `jinja2 <http://jinjna.pocoo.org>`_) ;
|
||||
* génération optionnelle de vos pages et articles en pdf.
|
||||
|
||||
Pourquoi le nom "Pelican" ?
|
||||
============================
|
||||
|
||||
Vous n'avez pas remarqué ? "Pelican" est un anagramme pour "Calepin" ;)
|
||||
|
||||
Code source
|
||||
===========
|
||||
|
||||
Vous pouvez accéder au code source via mercurial sur http://hg.notmyidea.org/pelican/
|
||||
ou via git à l'adresse http://github.com/ametaireau/pelican/
|
||||
|
||||
Feedback !
|
||||
==========
|
||||
|
||||
Si vous voulez de nouvelles fonctionnalitées pour Pelican, n'hésitez pas à me le dire,
|
||||
à cloner le dépôt, etc … C'est open source !!!
|
||||
|
||||
Contactez Ale "alexis at notmyidea dot org" pour quelques requêtes ou retour d'expérience que ce soi !
|
||||
|
||||
Documentation
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
getting_started
|
||||
settings
|
||||
themes
|
||||
internals
|
||||
faq
|
||||
67
docs/fr/install.rst
Normal file
67
docs/fr/install.rst
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
Installation et mise à jour de Pelican
|
||||
######################################
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
Il y a deux façons d’installer Pelican sur son système. La première est via l’utilitaire
|
||||
pip, l’autre façon est de télécharger Pelican via Github. Ici nous allons voir les deux
|
||||
façons de procéder.
|
||||
|
||||
Via pip
|
||||
-------
|
||||
|
||||
Pour installer Pelican via pip, vous aurez besoin du paquet python-pip. puis installez Pelican ::
|
||||
|
||||
# apt-get install python-pip
|
||||
# pip install pelican
|
||||
|
||||
|
||||
Via Github
|
||||
----------
|
||||
|
||||
Pour installer Pelican en reprenant le code via Github, nous aurons besoin du paquet
|
||||
git-core pour récupérez les sources de Pelican. Puis nous procédons à l’installation ::
|
||||
|
||||
# apt-get install git-core
|
||||
$ git clone https://github.com/ametaireau/pelican.git
|
||||
$ cd pelican
|
||||
# python setup.py install
|
||||
|
||||
Mises à jour
|
||||
============
|
||||
|
||||
Via pip
|
||||
-------
|
||||
|
||||
Rien de bien compliqué pour mettre à jour via pip ::
|
||||
|
||||
$ cd votreRepertoireSource
|
||||
$ pip install --upgrade pelican
|
||||
|
||||
|
||||
Via Github
|
||||
----------
|
||||
|
||||
C'est un peu plus long avec Github par contre ::
|
||||
|
||||
$ cd votreRepertoireSource
|
||||
$ git pull origin master
|
||||
$ cd pelican
|
||||
# python setup.py install
|
||||
|
||||
Vous aurez un message d’erreur si le module setuptools de python n’est pas installé.
|
||||
La manipulation est la suivante ::
|
||||
|
||||
# apt-get install python-setuptools
|
||||
|
||||
Alors, quelle méthode choisir ?
|
||||
===============================
|
||||
|
||||
Vous avez le choix entre deux méthodes, mais aussi entre deux concepts. La méthode
|
||||
de Github est la version de développement, où les modifications arrivent assez
|
||||
fréquemment sans être testées à fond. La version de pip est une version arrêtée avec un
|
||||
numéro de version dans laquelle vous aurez moins de bug. N’oubliez cependant pas
|
||||
que le projet est très jeune et manque donc de maturité. Si vous aimez avoir les toutes
|
||||
dernières versions utilisez Github, sinon penchez vous sur pip.
|
||||
|
||||
81
docs/fr/internals.rst
Normal file
81
docs/fr/internals.rst
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
Pelican internals
|
||||
#################
|
||||
|
||||
This section describe how pelican is working internally. As you'll see, it's
|
||||
quite simple, but a bit of documentation doesn't hurt :)
|
||||
|
||||
Overall structure
|
||||
=================
|
||||
|
||||
What `pelican` does, is taking a list of files, and processing them, to some
|
||||
sort of output. Usually, the files are restructured text and markdown files,
|
||||
and the output is a blog, but it can be anything you want.
|
||||
|
||||
I've separated the logic in different classes and concepts:
|
||||
|
||||
* `writers` are responsible of all the writing process of the
|
||||
files. It's writing .html files, RSS feeds and so on. Since those operations
|
||||
are commonly used, the object is created once, and then passed to the
|
||||
generators.
|
||||
|
||||
* `readers` are used to read from various formats (Markdown, and Restructured
|
||||
Text for now, but the system is extensible). Given a file, they return
|
||||
metadata (author, tags, category etc) and content (HTML formated)
|
||||
|
||||
* `generators` generate the different outputs. For instance, pelican comes with
|
||||
`ArticlesGenerator` and `PageGenerator`, into others. Given
|
||||
a configurations, they can do whatever they want. Most of the time it's
|
||||
generating files from inputs.
|
||||
|
||||
* `pelican` also uses `templates`, so it's easy to write you own theme. The
|
||||
syntax is `jinja2`, and, trust me, really easy to learn, so don't hesitate
|
||||
a second.
|
||||
|
||||
How to implement a new reader ?
|
||||
===============================
|
||||
|
||||
There is an awesome markup language you want to add to pelican ?
|
||||
Well, the only thing you have to do is to create a class that have a `read`
|
||||
method, that is returning an HTML content and some metadata.
|
||||
|
||||
Take a look to the Markdown reader::
|
||||
|
||||
class MarkdownReader(object):
|
||||
|
||||
def read(self, filename):
|
||||
"""Parse content and metadata of markdown files"""
|
||||
text = open(filename)
|
||||
md = Markdown(extensions = ['meta', 'codehilite'])
|
||||
content = md.convert(text)
|
||||
|
||||
metadatas = {}
|
||||
for name, value in md.Meta.items():
|
||||
if name in _METADATAS_FIELDS:
|
||||
meta = _METADATAS_FIELDS[name](value[0])
|
||||
else:
|
||||
meta = value[0]
|
||||
metadatas[name.lower()] = meta
|
||||
return content, metadatas
|
||||
|
||||
Simple isn't it ?
|
||||
|
||||
How to implement a new generator ?
|
||||
==================================
|
||||
|
||||
Generators have basically two important methods. You're not forced to create
|
||||
both, only the existing ones will be called.
|
||||
|
||||
* `generate_context`, that is called in a first place, for all the generators.
|
||||
Do whatever you have to do, and update the global context if needed. This
|
||||
context is shared between all generators, and will be passed to the
|
||||
templates. For instance, the `PageGenerator` `generate_context` method find
|
||||
all the pages, transform them into objects, and populate the context with
|
||||
them. Be careful to *not* output anything using this context at this stage,
|
||||
as it is likely to change by the effect of others generators.
|
||||
|
||||
* `generate_output` is then called. And guess what is it made for ? Oh,
|
||||
generating the output :) That's here that you may want to look at the context
|
||||
and call the methods of the `writer` object, that is passed at the first
|
||||
argument of this function. In the `PageGenerator` example, this method will
|
||||
look at all the pages recorded in the global context, and output a file on
|
||||
the disk (using the writer method `write_file`) for each page encountered.
|
||||
111
docs/fr/settings.rst
Normal file
111
docs/fr/settings.rst
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
Settings
|
||||
########
|
||||
|
||||
Specifying the settings
|
||||
=======================
|
||||
|
||||
Pelican is configurable thanks to a configuration file, that you can pass to
|
||||
the command line::
|
||||
|
||||
$ pelican -s path/to/your/settingsfile.py path
|
||||
|
||||
Settings are given as the form of a python module (a file). You can have an
|
||||
example by looking at `/samples/pelican.conf.py
|
||||
<https://github.com/ametaireau/pelican/raw/master/samples/pelican.conf.py>`_
|
||||
|
||||
All the settings identifiers must be set in caps, otherwise they will not be
|
||||
processed.
|
||||
|
||||
Here are the available settings. Please note that all the settings you put in
|
||||
this file will be passed to the templates as well.
|
||||
|
||||
======================= =======================================================
|
||||
Setting name what it does ?
|
||||
======================= =======================================================
|
||||
`AUTHOR` Default author (put your name)
|
||||
`CATEGORY_FEED` Where to put the atom categories feeds. default is
|
||||
`feeds/%s.atom.xml`, where %s is the name of the
|
||||
category.
|
||||
`CATEGORY_FEED_RSS` Where to put the categories rss feeds. default is None
|
||||
(no rss)
|
||||
`CSS_FILE` To specify the CSS file you want to load, if it's not
|
||||
the default one ('main.css')
|
||||
`DEFAULT_CATEGORY` The default category to fallback on. `misc` by default.
|
||||
`DEFAULT_LANG` The default language to use. Default is 'en'.
|
||||
`DISPLAY_PAGES_ON_MENU` Display or not the pages on the menu of the template.
|
||||
Templates can follow or not this settings.
|
||||
`FALLBACK_ON_FS_DATE` If True, pelican will use the file system dates infos
|
||||
(mtime) if it can't get informations from the
|
||||
metadata?
|
||||
`FEED` relative url to output the atom feed. Default is
|
||||
`feeds/all.atom.xml`
|
||||
`FEED_RSS` relative url to output the rss feed. Default is
|
||||
None (no rss)
|
||||
`JINJA_EXTENSIONS` A list of any Jinja2 extensions you want to use.
|
||||
Default is no extensions (the empty list).
|
||||
`KEEP_OUTPUT_DIRECTORY` Keep the output directory and just update all the generated files.
|
||||
Default is to delete the output directory.
|
||||
`MARKUP` A list of available markup languages you want to use.
|
||||
For the moment, only available values are `rst` and `md`.
|
||||
`OUTPUT_PATH` Where to output the generated files. Default to
|
||||
"output"
|
||||
`PATH` path to look at for input files.
|
||||
`PDF_PROCESSOR` Put True if you want to have PDF versions of your
|
||||
documents. You will need to install `rst2pdf`.
|
||||
`REVERSE_ARCHIVE_ORDER` Reverse the archives order. (True makes it in
|
||||
descending order: the newer first)
|
||||
`SITEURL` base URL of your website.
|
||||
`SITENAME` Your site name,
|
||||
`STATIC_PATHS` The static paths you want to have accessible on the
|
||||
output path "static". By default, pelican will copy
|
||||
the 'images' folder to the output folder.
|
||||
`STATIC_THEME_PATHS` Static theme paths you want to copy. Default values
|
||||
is `static`, but if your theme have others static paths,
|
||||
you can put them here.
|
||||
`THEME` theme to use to product the output. can be the
|
||||
complete static path to a theme folder, or chosen
|
||||
between the list of default themes (see below)
|
||||
`TRANSLATION_FEED` Where to put the RSS feed for translations. Default
|
||||
is feeds/all-%s.atom.xml where %s is the name of the
|
||||
lang.
|
||||
======================= =======================================================
|
||||
|
||||
Themes
|
||||
======
|
||||
|
||||
3 themes are available. You can specify them using the `-t` option:
|
||||
|
||||
* notmyidea
|
||||
* simple (a synonym for "full text" :)
|
||||
* martyalchin
|
||||
|
||||
You can define your own theme too, and specify it's emplacement in the same
|
||||
way (be sure to specify the full absolute path to it).
|
||||
|
||||
Here is `a guide on how to create your theme
|
||||
<http://alexis.notmyidea.org/pelican/themes.html>`_
|
||||
|
||||
The `notmyidea` theme can make good use of the following settings. I recommend
|
||||
to use them too in your themes.
|
||||
|
||||
======================= =======================================================
|
||||
Setting name what it does ?
|
||||
======================= =======================================================
|
||||
`DISQUS_SITENAME` Pelican can handle disqus comments, specify the
|
||||
sitename you've filled in on disqus
|
||||
`GITHUB_URL` Your github URL (if you have one), it will then
|
||||
use it to create a github ribbon.
|
||||
`GOOGLE_ANALYTICS` 'UA-XXXX-YYYY' to activate google analytics.
|
||||
`LINKS` A list of tuples (Title, Url) for links to appear on
|
||||
the header.
|
||||
`SOCIAL` A list of tuples (Title, Url) to appear in the "social"
|
||||
section.
|
||||
`TWITTER_USERNAME` Allows to add a button on the articles to tweet about
|
||||
them. Add you twitter username if you want this
|
||||
button to appear.
|
||||
======================= =======================================================
|
||||
|
||||
In addition, you can use the "wide" version of the `notmyidea` theme, by
|
||||
adding that in your configuration::
|
||||
|
||||
CSS_FILE = "wide.css"
|
||||
106
docs/fr/themes.rst
Normal file
106
docs/fr/themes.rst
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
.. _theming-pelican:
|
||||
|
||||
How to create themes for pelican
|
||||
################################
|
||||
|
||||
Pelican uses the great `jinja2 <http://jinjna.pocoo.org>`_ templating engine to
|
||||
generate it's HTML output. The jinja2 syntax is really simple. If you want to
|
||||
create your own theme, feel free to take inspiration from the "simple" theme,
|
||||
which is available `here
|
||||
<https://github.com/ametaireau/pelican/tree/master/pelican/themes/simple/templates>`_
|
||||
|
||||
Structure
|
||||
=========
|
||||
|
||||
To make your own theme, you must follow the following structure::
|
||||
|
||||
├── static
|
||||
│ ├── css
|
||||
│ └── images
|
||||
└── templates
|
||||
├── archives.html // to display archives
|
||||
├── article.html // processed for each article
|
||||
├── categories.html // must list all the categories
|
||||
├── category.html // processed for each category
|
||||
├── index.html // the index. List all the articles
|
||||
├── page.html // processed for each page
|
||||
├── tag.html // processed for each tag
|
||||
└── tags.html // must list all the tags. Can be a tag cloud.
|
||||
|
||||
* `static` contains all the static content. It will be copied on the output
|
||||
`theme/static` folder then. I've put the css and image folders, but they are
|
||||
just examples. Put what you need here.
|
||||
|
||||
* `templates` contains all the templates that will be used to generate the content.
|
||||
I've just put the mandatory templates here, you can define your own if it helps
|
||||
you to organize yourself while doing the theme.
|
||||
|
||||
Templates and variables
|
||||
=======================
|
||||
|
||||
It's using a simple syntax, that you can embbed into your html pages.
|
||||
This document describes which templates should exists on a theme, and which
|
||||
variables will be passed to each template, while generating it.
|
||||
|
||||
All templates will receive the variables defined in your settings file, if they
|
||||
are in caps. You can access them directly.
|
||||
|
||||
Common variables
|
||||
----------------
|
||||
|
||||
All of those settings will be given to all templates.
|
||||
|
||||
============= ===================================================
|
||||
Variable Description
|
||||
============= ===================================================
|
||||
articles That's the list of articles, ordsered desc. by date
|
||||
all the elements are `Article` objects, so you can
|
||||
access their properties (e.g. title, summary, author
|
||||
etc.
|
||||
dates The same list of article, but ordered by date,
|
||||
ascending
|
||||
tags A dict containing each tags (keys), and the list of
|
||||
relative articles.
|
||||
categories A dict containing each category (keys), and the
|
||||
list of relative articles.
|
||||
pages The list of pages
|
||||
============= ===================================================
|
||||
|
||||
category.html
|
||||
-------------
|
||||
|
||||
This template will be processed for each of the existing categories, and will
|
||||
finally remain at output/category/`category_name`.html.
|
||||
|
||||
============= ===================================================
|
||||
Variable Description
|
||||
============= ===================================================
|
||||
articles The articles of this category
|
||||
category The name of the category being processed
|
||||
============= ===================================================
|
||||
|
||||
article.html
|
||||
-------------
|
||||
|
||||
This template will be processed for each article. .html files will be outputed
|
||||
in output/`article_name`.html. Here are the specific variables it gets.
|
||||
|
||||
============= ===================================================
|
||||
Variable Description
|
||||
============= ===================================================
|
||||
article The article object to be displayed
|
||||
category The name of the category of the current article
|
||||
============= ===================================================
|
||||
|
||||
tag.html
|
||||
--------
|
||||
|
||||
For each tag, this template will be processed. It will create .html files in
|
||||
/output/tag/`tag_name`.html
|
||||
|
||||
============= ===================================================
|
||||
Variable Description
|
||||
============= ===================================================
|
||||
tag The name of the tag being processed
|
||||
articles Articles related to this tag
|
||||
============= ===================================================
|
||||
Loading…
Add table
Add a link
Reference in a new issue