2020-09-29 19:41:53 +11:00
|
|
|
|
\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.
|
|
|
|
|
|
2024-09-29 05:25:02 +11:00
|
|
|
|
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.
|
|
|
|
|
|
2020-09-29 19:41:53 +11:00
|
|
|
|
\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}
|
|
|
|
|
|
|
|
|
|
%-------------------------------------------------------------
|
|
|
|
|
|
2024-10-24 19:46:01 +11:00
|
|
|
|
\section{La famille \texttt{roff}}
|
2024-09-29 05:25:02 +11:00
|
|
|
|
\index{roff}\label{roff} \index{groff}\index{troff}
|
2020-09-29 19:41:53 +11:00
|
|
|
|
|
2022-02-16 10:53:49 +11:00
|
|
|
|
%
|
|
|
|
|
% https://linuxfr.org/users/karchnu/journaux/redecouverte-roff
|
|
|
|
|
% https://pjfichet.github.io/utroff/
|
2024-09-29 05:25:02 +11:00
|
|
|
|
% https://allthingsopen.org/articles/linux-and-unix-experiment-part-2
|
2022-02-16 10:53:49 +11:00
|
|
|
|
|
2020-09-29 19:41:53 +11:00
|
|
|
|
\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 ?
|
|
|
|
|
|
2024-09-29 05:25:02 +11:00
|
|
|
|
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 ?}.
|
2020-09-29 19:41:53 +11:00
|
|
|
|
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}
|
|
|
|
|
|
2020-11-28 00:44:53 +11:00
|
|
|
|
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}.
|
|
|
|
|
|
2024-09-29 05:25:02 +11:00
|
|
|
|
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.
|
2023-10-09 06:56:41 +11:00
|
|
|
|
|
|
|
|
|
\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}
|
2020-11-28 00:44:53 +11:00
|
|
|
|
|
2024-09-29 05:25:02 +11:00
|
|
|
|
\subsection{Autres trucs...}
|
|
|
|
|
|
|
|
|
|
\texttt{colcrt} : filter nroff output for CRT previewing
|
|
|
|
|
|
2020-09-29 19:41:53 +11:00
|
|
|
|
%-------------------------------------------------------------
|
|
|
|
|
\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}
|
|
|
|
|
|
2023-10-09 06:56:41 +11:00
|
|
|
|
General-purpose macro/programming language for transforming text
|
|
|
|
|
|
2020-09-29 19:41:53 +11:00
|
|
|
|
\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}
|
|
|
|
|
|