161 lines
5.1 KiB
TeX
161 lines
5.1 KiB
TeX
\chapter{Formater du texte}
|
||
|
||
Manipuler du texte, afin de le modifier, de le mettre en forme,
|
||
de le présenter de façon harmonieuse, tout le monde l'a déja
|
||
fait, avec des outils divers et variés et des résultats parfois
|
||
(ou souvent) hasardeux.
|
||
|
||
Heureusement, Unix\index{Unix} a été conçu quasiment dès
|
||
le départ avec tout ce qu'il faut pour traiter et
|
||
mettre en page du texte.
|
||
|
||
\section{fmt et ses copains}
|
||
\index{fmt}\index{tr}
|
||
|
||
Nous allons voir quelques outils de base, simple et efficace,
|
||
mais qui ont parfois quelques limitations. Le premier est
|
||
\texttt{fmt} qui permet de remettre en forme un texte.
|
||
|
||
\begin{verbatim}
|
||
tth@plop:~/Ecriture/Ordinateur$ cat texte.txt
|
||
Ce morceau de texte n'est pas
|
||
bien
|
||
formaté.
|
||
|
||
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
||
Phasellus nunc sapien, porta id pellentesque at, elementum et felis.
|
||
Curabitur condimentum
|
||
ante in metus
|
||
iaculis quis congue diam commodo.
|
||
tth@plop:~/Ecriture/Ordinateur$ fmt texte.txt
|
||
Ce morceau de texte n'est pas bien formaté.
|
||
|
||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus
|
||
nunc sapien, porta id pellentesque at, elementum et felis. Curabitur
|
||
condimentum ante in metus iaculis quis congue diam commodo.
|
||
\end{verbatim}
|
||
|
||
%-------------------------------------------------------------
|
||
|
||
\section{roff}
|
||
\index{roff}\label{roff} \index{groff}\index{troff}
|
||
|
||
%
|
||
% https://linuxfr.org/users/karchnu/journaux/redecouverte-roff
|
||
% https://pjfichet.github.io/utroff/
|
||
% https://allthingsopen.org/articles/linux-and-unix-experiment-part-2
|
||
|
||
\textbf{Roff} est l'outil qui a permis à quelques hackers légendaire
|
||
de justifier auprès de leur hiérarchie le développement d'une machine
|
||
de jeu, il est donc légitime d'en parler, non ?
|
||
|
||
Après quelques minutes d'expérimentation, un premier souci arrive%
|
||
\footnote{Mais qui est peut-être causé par l'ancienneté de mon système ?}.
|
||
Il semble bien que \texttt{groff} ne sache pas lire les fichiers
|
||
encodés en \textbf{utf8}\index{utf8}. Il faut donc utiliser
|
||
un hack avec \texttt{recode} en prenant bien soin d'utiliser
|
||
une redirection vers \texttt{stdin} comme ceci :
|
||
|
||
\begin{verbatim}
|
||
< $BASENAME.txt recode utf8..latin1 | groff -Tutf8
|
||
\end{verbatim}
|
||
|
||
D'un autre coté, c'est \texttt{roff} qui est utilisé pour formater
|
||
les pages du manuel Unix. La documentation, c'est important.
|
||
C'est pour ça que j'en cause page \pageref{chap:manpages}.
|
||
|
||
Voyons rapidement un exemple minimum compilable\index{EMC},
|
||
le fichier
|
||
\texttt{premier.roff}~:
|
||
|
||
\lstinputlisting{code/roff/premier.roff}
|
||
|
||
Il y a deux choses différentes ici : les instructions de formatage
|
||
et le texte en lui-même.
|
||
Une instruction est placée en début de ligne.
|
||
Elle commence par un point, et est constituée de deux lettres,
|
||
eventuellement suivie de paramètres.
|
||
Nous avons \texttt{.ti} (\textsl{temporary indent})
|
||
qui gère l'indentation de la ligne qui suit,
|
||
et \texttt{.sp} (\textsl{spacing})
|
||
qui va sauter une ou plusieurs lignes.
|
||
|
||
Après compilation par la commande
|
||
"\texttt{nroff -Tutf8 < premier.roff > premier.text}",
|
||
nous obtenons ce résultat~:
|
||
|
||
\begin{verbatim}
|
||
hello world.
|
||
|
||
Ceci est le premier exemple avec nroff.
|
||
|
||
|
||
je vais essayer quelques variations de mise en page en jouant sur
|
||
les diverses marges, puis explorer les "mises en avant" comme le
|
||
gras, l’italique, le soulignement, toussa. Ensuite il me faudra
|
||
solutionner le souci avec UTF8 :(
|
||
\end{verbatim}
|
||
|
||
On peut dire que c'est un bon début, avec juste deux commandes,
|
||
on a déja un résultat visible.
|
||
Voyons maintenant quelques autres possibilités du roff de base.
|
||
|
||
|
||
|
||
|
||
Mais une mise en page un peu
|
||
avancée peut devenir vite fastidieuse avec ces instructions
|
||
de bas niveau.
|
||
|
||
\subsection{eqn}
|
||
|
||
\begin{quote}
|
||
\texttt{eqn} compiles descriptions of equations embedded within troff
|
||
input files into commands that are understood by troff.
|
||
\end{quote}
|
||
|
||
\subsection{tbl}
|
||
|
||
\begin{quote}
|
||
\texttt{tbl} compiles descriptions of tables embedded within troff
|
||
input files into commands that are understood by troff.
|
||
\end{quote}
|
||
|
||
\subsection{pic}
|
||
|
||
\begin{quote}
|
||
\texttt{pic} compiles descriptions of pictures embedded within troff
|
||
input files into commands that are understood by troff.
|
||
\end{quote}
|
||
|
||
\subsection{Autres trucs...}
|
||
|
||
\texttt{colcrt} : filter nroff output for CRT previewing
|
||
|
||
%-------------------------------------------------------------
|
||
\section{yodl}
|
||
\index{yodl}
|
||
|
||
\begin{quote}
|
||
Yodl is a package that implements a pre-document language and tools
|
||
to process it. The idea of Yodl is that you write up a document in a
|
||
pre-language, then use the tools (e.g. yodl2html) to convert it to some
|
||
final document language. Current converters are for HTML, man, LaTeX SGML
|
||
and texinfo, a poor-man's text converter and an experimental xml converter.
|
||
\end{quote}
|
||
|
||
%-------------------------------------------------------------
|
||
\section{zoem}
|
||
\index{zoem}
|
||
|
||
General-purpose macro/programming language for transforming text
|
||
|
||
\begin{quote}
|
||
Zoem is a language for transforming text. It supports the creation of
|
||
light-weight mark-up languages as macro packages built on top of zoem.
|
||
PUD (Portable Unix Documentation) provides two such mini-languages and
|
||
is shipped with zoem. The PUD languages are for generating manpages and
|
||
FAQ documents in both HTML and troff.
|
||
\end{quote}
|
||
|