OVH Cloud OVH Cloud

Centrer texte

6 réponses
Avatar
Ozzii
Bonjour,

je suis sous Solaris et AIX:
Y a t'il un moyen + simple de centrer un texte que de faire de multiple
calculs (nombre de caracteres-80/2 puis rajout d'autant de blanc en
debut de ligne) ?

Merci par avance

6 réponses

Avatar
Nicolas George
Ozzii wrote in message :
Y a t'il un moyen + simple de centrer un texte que de faire de multiple
calculs (nombre de caracteres-80/2 puis rajout d'autant de blanc en
debut de ligne) ?


Selon la situation :

begin{center}

Ton texte.

end{center}

ou bien :

<div style="text-align:center">

Ton texte.

</div>

Dans le dernier cas, il vaudrait mieux définir une classe particulière, et
utiliser un style global.

Il y a évidemment d'autres solutions.

Avatar
Damien Wyart
* Ozzii in fr.comp.os.unix:
je suis sous Solaris et AIX: Y a t'il un moyen + simple de centrer un
texte que de faire de multiple calculs (nombre de caracteres-80/2 puis
rajout d'autant de blanc en debut de ligne) ?


Le plus direct est sans doute la commande :center de vim, mais
évidemment, cela nécessite qu'il soit installé.

Sinon, quelques solutions perl ou awk sont données dans ce fil de
discussion :
http://groups.google.fr/group/comp.editors/browse_thread/thread/7d4b1f52b5c293ab/

Ainsi que : http://www.linuxjournal.com/articles/lj/0065/2479/2479l1.html

Certains systèmes ont également une commande center qui réalise le
centrage directement...

--
DW

Avatar
Stephane Chazelas
2007-01-16, 11:09(+01), Ozzii:
[...]
je suis sous Solaris et AIX:
Y a t'il un moyen + simple de centrer un texte que de faire de multiple
calculs (nombre de caracteres-80/2 puis rajout d'autant de blanc en
debut de ligne) ?
[...]


command -p awk '{printf "%*sn", 36+length/2, $0}'

n'est pas si compliqué.

Sinon:

sed -e :1 -e '/.{72}/b2' -e 's/.*/ & /;b1 -e :2 -e 's/ *$//'

--
Stéphane

Avatar
ozzii
Ceci fonctionne très bien pour un fichier en entrée.
Cependant, j'aimerais faire cela dans une fonction directement dans le
script où je veux centrer le ligne. Donc je fais ceci :

function CENTRE
{
printf '%sn' "$1"|nawk '{
printf "%*sn", 36+length/2, $0
}'
}
LIGNE="ENTETE"
CENTRE $LIGNE

Est-ce que c'est correct ou j'ai un moyen plus simple (ou mieux car le
awk c'est pas mon fort)?
En fait j'utilise le nawk car le awk sous Solaris me fait des erreurs.

On Jan 16, 1:37 pm, Stephane Chazelas
wrote:
2007-01-16, 11:09(+01), Ozzii:
command -p awk '{printf "%*sn", 36+length/2, $0}'


Avatar
Stephane Chazelas
2007-01-16, 08:58(-08), ozzii:
Ceci fonctionne très bien pour un fichier en entrée.
Cependant, j'aimerais faire cela dans une fonction directement dans le
script où je veux centrer le ligne. Donc je fais ceci :

function CENTRE
{
printf '%sn' "$1"|nawk '{
printf "%*sn", 36+length/2, $0
}'
}
LIGNE="ENTETE"
CENTRE $LIGNE

Est-ce que c'est correct ou j'ai un moyen plus simple (ou mieux car le
awk c'est pas mon fort)?
En fait j'utilise le nawk car le awk sous Solaris me fait des erreurs.
[...]


Pourquoi utiliser la syntaxe ksh des fonctions?

centre() {
for i do
printf '%*sn' "$(( ($#i + ${COLUMNS:-80} - 8) / 2))" "$i"
done
}

centre a aa aaa aaaa

--
Stéphane

Avatar
ozzii
car comme j'ai 2 système (Solaris et AIX), c'est + simple. De + j'ai
appris tout seul le script (pas parfaitement) en regardant des choses
existantes.

Merci pour la commande.

On Jan 16, 9:02 pm, Stephane Chazelas
wrote:
2007-01-16, 08:58(-08), ozzii:

Ceci fonctionne très bien pour un fichier en entrée.
Cependant, j'aimerais faire cela dans une fonction directement dans le
script où je veux centrer le ligne. Donc je fais ceci :

function CENTRE
{
printf '%sn' "$1"|nawk '{
printf "%*sn", 36+length/2, $0
}'
}
LIGNE="ENTETE"
CENTRE $LIGNE

Est-ce que c'est correct ou j'ai un moyen plus simple (ou mieux car le
awk c'est pas mon fort)?
En fait j'utilise le nawk car le awk sous Solaris me fait des erreurs.[ ...]


Pourquoi utiliser la syntaxe ksh des fonctions?

centre() {
for i do
printf '%*sn' "$(( ($#i + ${COLUMNS:-80} - 8) / 2))" "$i"
done

}centre a aa aaa aaaa

--
Stéphane