forked from github/pelican
Integrated the french documentation to the already existing one.
This commit is contained in:
parent
eb9cc3923a
commit
fb219afeba
21 changed files with 3 additions and 3089 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -3,6 +3,7 @@
|
|||
.*.swo
|
||||
*.pyc
|
||||
docs/_build
|
||||
docs/fr/_build
|
||||
build
|
||||
dist
|
||||
output
|
||||
|
|
|
|||
130
docs/fr/Makefile
130
docs/fr/Makefile
|
|
@ -1,130 +0,0 @@
|
|||
# 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."
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,4 +0,0 @@
|
|||
# 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
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
# 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
|
||||
|
||||
|
|
@ -1,829 +0,0 @@
|
|||
% 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}
|
||||
|
|
@ -1,683 +0,0 @@
|
|||
%%% 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
|
||||
|
||||
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
%
|
||||
% 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}
|
||||
|
|
@ -1,108 +0,0 @@
|
|||
%
|
||||
% 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}}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
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}"
|
||||
|
|
@ -1,744 +0,0 @@
|
|||
%
|
||||
% 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"
|
||||
}
|
||||
|
|
@ -1,452 +0,0 @@
|
|||
%%
|
||||
%% 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'.
|
||||
|
|
@ -42,6 +42,8 @@ Contact me at "alexis at notmyidea dot org" for any request/feedback !
|
|||
Documentation
|
||||
=============
|
||||
|
||||
A french version of the documentation is available at :doc:`fr/index`.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue