Il s'agit de la commande par qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS
PROGRAMME:
Nom
par - filtre pour reformater les paragraphes
SYNOPSIS
par [ vous aider ] [ version ] [ Bopset ] [ Popset ] [ Qopset ] [ h[accrocher] ] [ p[préfixe] ]
[ r[répéter] ] [ s[suffixe] ] [ T[Languette] ] [ w[largeur] ] [ b[corps] ] [ c[casquette] ] [ d[div] ]
[ E[Err] ] [ e[expulser] ] [ f[s'adapter] ] [ g[deviner] ] [ j[juste] ] [ l[dernier] ] [ q[Devis] ]
[ R[Rapport] ] [ t[-nous] ]
DESCRIPTION
par est un filtre qui copie son entrée dans sa sortie, en changeant tous les caractères blancs
(sauf les sauts de ligne) aux espaces, et reformater chaque paragraphe. Les paragraphes sont séparés par
lignes protégées, vierges et sans corps (voir la section TERMINOLOGIE pour les définitions), et
éventuellement délimité par un retrait (voir le d option dans la section OPTIONS).
Chaque paragraphe de sortie est généré à partir du paragraphe d'entrée correspondant comme suit :
1) Un préfixe et/ou un suffixe facultatifs sont supprimés de chaque ligne d'entrée.
2) Le reste est divisé en mots (séparés par des espaces).
3) Les mots sont réunis en lignes pour former un paragraphe agréable à regarder.
4) Les préfixes et suffixes sont rattachés.
S'il y a des suffixes, des espaces sont insérés avant eux afin qu'ils se terminent tous par le même
colonne.
RAPIDE La START
par est forcément complexe. Pour ceux qui souhaitent l'utiliser immédiatement et le comprendre
plus tard, attribuez le PARINITE variable d'environnement la valeur suivante :
rTbgqR B=.,?_A_a Q=_s>|
Les espaces, le point d'interrogation, le signe supérieur à et la barre verticale devront probablement être
échappés ou entre guillemets pour empêcher votre shell de les interpréter.
La documentation, bien que précise, n'est malheureusement pas bien écrite pour l'utilisateur final.
Votre meilleur pari est probablement de lire rapidement la DESCRIPTION, la TERMINOLOGIE, les OPTIONS et
sections ENVIRONNEMENT, puis lisez attentivement la section EXEMPLES en vous reportant aux
sections OPTIONS et TERMINOLOGIE selon les besoins.
Pour l'« utilisateur avec pouvoir », une compréhension complète de par nécessitera plusieurs lectures du
sections TERMINOLOGIE, OPTIONS, DÉTAILS et EXEMPLES.
TERMINOLOGIE
Termes divers:
syntaxe du jeu de caractères
Manière de représenter un ensemble de caractères sous forme de chaîne. L'ensemble comprend
exactement les caractères qui apparaissent dans la chaîne, sauf que le
le trait de soulignement (_) est un caractère d'échappement. Chaque fois qu'il apparaît, il doit commencer
l'une des séquences d'échappement suivantes :
__ = un trait de soulignement
_s = un espace
_b = une barre oblique inverse (\)
_q = un guillemet simple (')
_Q = un guillemet double ("")
_A = toutes les lettres majuscules
_a = toutes les lettres minuscules
_0 = tous les chiffres décimaux
_xhh = le caractère représenté par les deux chiffres hexadécimaux hh (lequel
peut être en majuscule ou en minuscule)
Le caractère NUL ne doit pas apparaître dans la chaîne, mais il peut être inclus dans
l'ensemble avec la séquence _x00.
erreur Une condition qui provoque par avorter. Voir la section DIAGNOSTIC.
Paragraphe d'entrée IP.
OP Paragraphe de sortie.
paramètre
Un symbole qui peut prendre des valeurs entières non signées. Il y a plusieurs
paramètres dont les valeurs affectent le comportement de par. Les paramètres peuvent être
valeurs attribuées à l'aide des options de la ligne de commande.
Types de caractères :
Caractère alphanumérique
Une lettre majuscule, une lettre minuscule ou un chiffre décimal.
caractère corporel
Un membre de l'ensemble de caractères défini par le PARCORPS sûr, heureux et sain
variable (voir la section ENVIRONNEMENT) et/ou la B option (voir les OPTIONS
section).
caractère protecteur
Un membre de l'ensemble de caractères défini par le PARPROTÉGER sûr, heureux et sain
variable et/ou le P option.
caractère de citation
Un membre de l'ensemble de caractères défini par le PARCOTATION sûr, heureux et sain
variable et/ou le Q option.
caractère terminal
Un point, un point d'interrogation, un point d'exclamation ou deux points.
caractère blanc
Un espace, un saut de page, une nouvelle ligne, un retour chariot, une tabulation ou une tabulation verticale.
Les fonctions:
comprendre
Étant donné une séquence non vide S de lignes, laissez c être leur plus long préfixe commun.
Si le paramètre corps est 0, placez un séparateur juste après le premier non-corps
caractères dans c (au début s'il n'y en a pas). Si corps est 1, lieu
le diviseur juste après le dernier caractère non-espace non-corps dans c (au
en commençant s'il n'y en a pas), puis avancez immédiatement le diviseur sur n'importe quel
espaces suivants. La compréhension de S est le nombre de caractères précédant
le diviseur.
comsuflen
Étant donné une séquence non vide S de lignes, laissez p être la compréhension de S. Laisse moi T
être l'ensemble des lignes qui résultent du dépouillement du premier p caractères de
chaque ligne dans S. Laisse moi c être le plus long suffixe commun des lignes dans T. Si
corps est 0, placez un séparateur juste avant les caractères non-corps de fin dans c
(à la fin s'il n'y en a pas), puis avancez le diviseur sur tout sauf le
le dernier des espaces qui suivent immédiatement. Si corps est 1, placez le diviseur
juste avant le premier caractère non-espace non-corps, puis sauvegardez le diviseur
sur un espace immédiatement précédent s'il y en a un. Le comsuflen de S is
le nombre de caractères suivant le séparateur.
prelen de secours (suflen)
Le prelen (suflen) de repli d'une IP est : le comprelen (comsuflen) du
IP, si l'IP contient au moins deux lignes ; sinon, le comprelen
(comsuflen) du bloc contenant l'IP, si le bloc contient au moins
deux lignes; sinon, la longueur du plus long des préfixes (suffixes) de
les lignes sans corps juste au-dessus et au-dessous du bloc, si le segment contenant
le bloc a des lignes sans corps ; sinon, 0. (Voir ci-dessous pour le
définitions de bloc, segment et ligne sans corps.)
prelen de secours augmenté
Laisser nous fp être le prelen de repli d'une IP. Si l'IP contient plus d'un
ligne, ou si Devis est 0, alors la valeur de repli augmentée de l'IP est
simplement fp. Sinon, c'est fp plus le nombre de guillemets
immédiatement après le premier fp caractères de la ligne.
préfixe de citation
Le préfixe d'une ligne est la plus longue chaîne de caractères de citation
apparaissant au début de la ligne, après que cette chaîne a été supprimée
de tous les espaces de fin.
Types de lignes :
ligne blanche
Une ligne vide, ou une ligne dont le premier caractère n'est pas protecteur et qui
ne contient que des espaces.
ligne protégée
Une ligne d'entrée dont le premier caractère est protecteur.
ligne sans corps
Une ligne qui est commande k sans corps pour certains k.
de commander k ligne sans corps
Il n'existe pas de ligne sans corps d'ordre 0. Supposer S est un
sous-séquence contiguë d'un segment (voir ci-dessous) contenant au moins deux
lignes, ne contenant aucun ordre k-1 lignes sans corps, délimitées en haut et en bas par
de commander k-1 lignes sans corps et/ou début/fin de segment. Laisser p et
s être le comprelen et le comsuflen de S. Tout membre de S qui, s'il est dépouillé
de son premier p et dernier s caractères, serait vide (ou, si le paramètre
répéter est différent de zéro, serait composé du même caractère répété au moins
répéter fois), est l'ordre k immatériel. La première p personnages des sans-corps
la ligne comprend son préfixe ; le dernier s caractères composent son suffixe. Les
caractère qui se répète au milieu est appelé son caractère de répétition. Si
le milieu est vide, l'espace est pris pour son caractère répétitif.
ligne vacante
Une ligne sans corps dont le caractère de répétition est l'espace.
ligne superflue
Seules les lignes vierges et vacantes peuvent être superflues. Si lignes vacantes contiguës
se trouvent au début ou à la fin d'un segment, ils sont tous superflus. Mais si
ils se situent entre deux lignes non vacantes à l'intérieur d'un segment, alors tous sont
superflu sauf un, celui qui contient le moins de non-espaces. Dans
en cas d'égalité, la première des lignes à égalité est choisie. De même, si
les lignes blanches contiguës se trouvent à l'extérieur de tout segment au début ou à la fin
de l'entrée, ils sont tous superflus. Mais s'ils se trouvent entre deux
segments et/ou lignes protégées, alors tous sont superflus sauf le premier.
Groupes de lignes :
clignotant
Une séquence contiguë de lignes d'entrée ne contenant aucune ligne protégée ou vierge,
délimité en haut et en bas par des lignes protégées, des lignes vierges et/ou le
début/fin de la saisie.
bloc Une sous-séquence contiguë d'un segment ne contenant aucune ligne sans corps, délimitée
dessus et dessous par des lignes sans corps et/ou le début/la fin du segment.
Types de mots :
mot en majuscule
Si le paramètre casquette est 0, un mot en majuscule est un mot qui contient au moins
un caractère alphanumérique, dont le premier caractère alphanumérique n'est pas un
lettre minuscule. Si casquette est 1, chaque mot est considéré comme une majuscule
mot. (Voir le c option dans la section OPTIONS.)
mot curieux
Un mot qui contient un caractère terminal c tel qu'il n'y a pas
caractères alphanumériques dans le mot après c, mais il y a au moins un
caractère alphanumérique dans le mot avant c.
OPTIONS
Tout argument de ligne de commande peut commencer par un signe moins (-) qui est ignoré. Généralement,
plus d'une option peut apparaître dans un seul argument de ligne de commande, mais il y a
exceptions : le vous aider, version, B, P et Q les options doivent avoir des arguments entiers pour
se.
vous aider Ignore tous les arguments restants. Aucune entrée n'est lue. Une utilisation
message est imprimé sur la sortie décrivant brièvement les options utilisées par par.
version Ignore tous les arguments restants. Aucune entrée n'est lue. "par 1.52" est
imprimé sur la sortie. Bien sûr, cela changera dans les futures versions de Par.
Bopset op est un caractère unique, soit un signe égal (=), un signe plus (+) ou un signe moins
signe (-), et set est une chaîne utilisant la syntaxe du jeu de caractères. Si op est un signe égal, le
le jeu de caractères du corps est défini sur le jeu de caractères défini par set. Si op est une
signe plus/moins, les caractères de l'ensemble défini par set sont ajoutés/supprimés
vers/depuis l'ensemble existant de caractères du corps défini par le PARCORPS sûr, heureux et sain
variable et toutes les options B précédentes. Vous pouvez ajouter des caractères qui sont
déjà dans l'ensemble ou pour supprimer des caractères qui ne sont pas dans l'ensemble.
Popset Comme le B option, sauf qu'elle s'applique à l'ensemble de protections
caractères.
Qopset Comme le B option, sauf qu'elle s'applique à l'ensemble des guillemets.
Toutes les options restantes sont utilisées pour définir les valeurs des paramètres. Valeurs définies par ligne de commande
les options sont valables pour tous les paragraphes. Les paramètres non définis reçoivent des valeurs par défaut. Tout
paramètres dont les valeurs par défaut dépendent de l'IP (à savoir préfixe et suffixe), si laissé
non définis, sont recalculés séparément pour chaque paragraphe.
Le rôle approximatif de chaque variable est décrit ici. Voir la section DÉTAILS pour le
reste de l'histoire.
Les six premiers paramètres, accrocher, préfixe, répéter, suffixe, Languette et largeur, peut être défini sur n'importe quel
entier décimal non signé inférieur à 10000.
h[accrocher] Affecte principalement les valeurs par défaut de préfixe et suffixe. La valeur par défaut est 0. Si le
h option est donnée sans nombre, la valeur 1 est déduite. (Voir aussi le p
et s choix.)
p[préfixe] La première préfixe les caractères de chaque ligne de l'OP sont copiés à partir du premier
préfixe caractères de la ligne correspondante de l'IP. S'il y a plus de
accrocher+1 lignes dans l'IP, la valeur par défaut est la compréhension de toutes les lignes dans
l'IP sauf le premier accrocher d'eux. Sinon, la valeur par défaut est la
prelen de repli augmenté de l'IP. Si la p l'option est donnée sans numéro,
préfixe n'est pas défini, même s'il avait été défini plus tôt. (Voir aussi le h et q
choix.)
r[répéter] Si répéter est différent de zéro, les lignes sans corps ont le nombre d'instances de leur
répéter les caractères augmentés ou diminués jusqu'à ce que la longueur de la ligne soit largeur.
La valeur exacte de répéter affecte la définition de la ligne sans corps. Par défaut à
0. Si le r option est donnée sans nombre, la valeur 3 est déduite. (Voir
également w option.)
s[suffixe] Le dernier suffixe les caractères de chaque ligne de l'OP sont copiés à partir de la dernière
suffixe caractères de la ligne correspondante de l'IP. S'il y a plus de
accrocher+1 lignes dans l'IP, la valeur par défaut est le comsuflen de toutes les lignes de
l'IP sauf le premier accrocher d'eux. Sinon, la valeur par défaut est la
repli suflen de l'IP. Si la s l'option est donnée sans numéro, suffixe is
désactivé, même s'il avait été défini plus tôt. (Voir aussi le h option.)
T[Languette] Les caractères de tabulation dans l'entrée sont étendus aux espaces, en supposant que la tabulation s'arrête chaque Languette
Colonnes. Ne doit pas être 0. La valeur par défaut est 1. Si le T l'option est donnée sans
nombre, la valeur 8 est déduite.
w[largeur] Aucune ligne du PO ne peut contenir plus de largeur caractères, à l'exclusion des
les nouvelles lignes de fin. La valeur par défaut est 72. Si le w l'option est donnée sans numéro,
la valeur 79 est déduite.
Les treize paramètres restants, corps, casquette, div, Err, expulser, s'adapter, deviner, invis, juste,
dernier, Devis, Rapport et -nous, peut être défini sur 0 ou 1. Si le nombre est absent dans
l'option, la valeur 1 est déduite.
b[corps] Si corps est 1, les préfixes ne peuvent contenir aucun caractère de corps de fin, et
les suffixes ne doivent pas contenir de caractères de début de corps. (En fait, la situation
est compliqué par les caractères d'espace. Voir comprelen et comsuflen dans le
section Terminologie.) Si corps est 0, les préfixes et suffixes ne peuvent contenir aucun
personnages du corps du tout. La valeur par défaut est 0.
c[casquette] Si casquette est 1, tous les mots sont considérés comme en majuscule. Cela n'affecte actuellement que
l'application de la g option. La valeur par défaut est 0.
d[div] Si div est 0, chaque bloc devient une IP. Si div est 1, chaque bloc est subdivisé
en IP comme suit : p être le comprelen du bloc. Laisser le statut d'une ligne
être 1 si c'est (p+1 er caractère est un espace, 0 sinon. Chaque ligne du bloc
dont le statut est le même que le statut de la première ligne commencera une nouvelle
paragraphe. La valeur par défaut est 0.
E[Err] Si Err est 1, messages à l'utilisateur (causés par le vous aider et version options, ou par
erreurs) sont envoyés au flux d'erreurs au lieu du flux de sortie. Par défaut à
0.
e[expulser] Si expulser est 1, les lignes superflues sont supprimées de la sortie. La valeur par défaut est 0.
f[s'adapter] Si s'adapter est 1 et juste est 0, par essaie de faire les lignes dans l'OP aussi près que le
la même longueur que possible, quitte à rendre le PO plus étroit. Par défaut à
0. (Voir aussi le j option.)
g[deviner] Si deviner est 1, alors quand par choisit des sauts de ligne, chaque fois qu'il rencontre un
mot curieux suivi d'un mot en majuscule, il faut l'un des deux
Actions. Si les deux mots sont séparés par un seul espace dans l'entrée, ils
sera fusionné en un seul mot avec un espace insécable intégré. Si les deux
les mots sont séparés par plus d'un espace, ou par un saut de ligne, par assurera
qu'ils soient séparés par deux espaces, ou par un saut de ligne, dans la sortie.
La valeur par défaut est 0.
i[invis] Si invis est 1, alors des lignes vides sont insérées car Devis est 1 sont invisibles ; cette
c'est-à-dire qu'ils ne sont pas émis. Si Devis est 0, invis n'a aucun effet. La valeur par défaut est 0.
(Voir aussi le q option.)
j[juste] Si juste est 1, par justifie l'OP, en insérant des espaces entre les mots afin que tous
les lignes de l'OP ont une longueur largeur (sauf le dernier, si dernier est 0). Par défaut à
0. (Voir aussi le w, l et f choix.)
l[dernier] Si dernier est 1, par essaie de faire la dernière ligne de l'OP à peu près la même longueur que
les autres. La valeur par défaut est 0.
q[Devis] Si Devis est 1, puis avant que chaque segment ne soit scanné à la recherche de lignes sans corps, par
fournit les lignes vacantes entre les différents niveaux d'imbrication des devis comme suit :
Pour chaque paire de lignes adjacentes dans le segment, (balayé de haut en bas)
qui ont des préfixes de guillemets différents, l'une des deux actions est effectuée. Si invis est 0,
et l'une ou l'autre des lignes est entièrement constituée de guillemets et d'espaces (ou est vide),
cette ligne est tronquée au plus long préfixe commun des deux lignes (les deux sont
tronqué si les deux remplissent les conditions). Sinon, une ligne constituée du plus long commun
le préfixe des deux lignes est inséré entre elles. Devis affecte également le
valeur par défaut de préfixe. La valeur par défaut est 0. (Voir aussi le p et i choix.)
R[Rapport] Si Rapport est 1, il est considéré comme une erreur pour un mot d'entrée de contenir plus de
L = (largeur - préfixe - suffixe) personnages. Sinon, ces mots sont coupés
après chaque Le caractère en mots plus courts. La valeur par défaut est 0.
t[-nous] N'a aucun effet si suffixe est 0 ou juste est 1. Sinon, si -nous est 0, toutes les lignes
dans l'OP ont une longueur largeur. Si -nous est 1, la longueur des lignes est
diminué jusqu'à ce que les suffixes touchent le corps de l'OP. Par défaut à la logique
OU de s'adapter et dernier. (Voir aussi le s, j, w, f et l choix.)
Si un argument commence par un nombre, ce nombre est supposé appartenir à un p option s'il
est de 8 ou moins, et à un w option sinon.
Si la valeur d'un paramètre est définie plusieurs fois, la dernière valeur est utilisée. Lorsqu'il n'est pas réglé
les paramètres se voient attribuer des valeurs par défaut, accrocher et Devis sont attribués avant préfixe et s'adapter
et dernier sont attribués avant -nous (à cause des dépendances).
C'est une erreur si largeur <= préfixe + suffixe.
ENVIRONNEMENT
PARCORPS Détermine l'ensemble initial de caractères du corps (qui sont utilisés pour déterminer
comprelens et comsuflens), en utilisant la syntaxe charset. Si PARCORPS n'est pas défini, le
l'ensemble des caractères du corps est initialement vide.
PARINITE Si défini, par lira les options de ligne de commande de PARINITE avant de les lire
à partir de la ligne de commande. Dans la valeur de PARINIT, les arguments sont séparés par
caractères blancs.
PARPROTÉGER
Détermine le jeu de caractères protecteurs à l'aide de la syntaxe du jeu de caractères. Si
PARPROTÉGER n'est pas défini, le jeu de caractères de protection est initialement vide.
PARCOTATION Détermine l'ensemble des guillemets à l'aide de la syntaxe du jeu de caractères. Si PARCOTATION is
pas défini, l'ensemble des guillemets ne contient initialement que le supérieur à
signe (>) et l'espace.
Si un caractère NUL apparaît dans la valeur d'une variable d'environnement, celui-ci et le reste du
la chaîne ne sera pas vue par par.
Notez que le PARINITE variable, avec le B, P et Q options, rend l'autre
variables d'environnement inutiles. Ils sont inclus pour la compatibilité descendante.
DÉTAILS
Les lignes se terminent par des caractères de nouvelle ligne, mais les nouvelles lignes ne sont pas considérées comme
inclus dans les lignes. Si le dernier caractère de l'entrée n'est pas un saut de ligne, un saut de ligne
sera déduit immédiatement après (mais si l'entrée est vide, aucune nouvelle ligne ne sera
inféré ; le nombre de lignes d'entrée sera 0). Ainsi, l'entrée peut toujours être considérée comme un
séquence de lignes.
Les lignes protégées sont copiées telles quelles de l'entrée à la sortie. Toutes les autres lignes d'entrée,
au fur et à mesure qu'ils sont lus, supprimez tous les caractères NUL et tous les caractères blancs (sauf
newlines) s'est transformé en un espace. En fait, chaque caractère de tabulation est transformé en Languette - (n %
Languette) espaces, où n est le nombre de caractères précédant le caractère de tabulation sur la ligne
(évalué après que les caractères de tabulation précédents ont été développés).
Les lignes vides en entrée sont transformées en lignes vides en sortie.
If répéter est 0, toutes les lignes sans corps sont vides, et elles sont toutes simplement dépouillées de
espaces de fin avant d'être sorti. Si répéter n'est pas 0, seulement les lignes vacantes dont les suffixes
ont une longueur 0 sont traités de cette façon ; d'autres lignes sans corps ont le nombre d'instances de
leurs caractères répétés ont augmenté ou diminué jusqu'à ce que la longueur de la ligne soit largeur.
If expulser est 1, les lignes superflues ne sont pas sorties. Si Devis et invis sont tous les deux 1, il peut
être des lignes invisibles ; ils ne sont pas émis.
L'entrée est divisée en segments, qui sont divisés en blocs, qui sont divisés en
IP. Le processus exact dépend des valeurs de Devis et div (voir q et d dans les OPTIONS
section). Le reste de cette section décrit le processus qui est appliqué
indépendamment à chaque IP pour construire l'OP correspondant.
Après avoir déterminé les valeurs des paramètres (voir la section OPTIONS), le premier
préfixe personnages et le dernier suffixe les caractères de chaque ligne d'entrée sont supprimés et
souvenu. C'est une erreur si une ligne contient moins de préfixe + suffixe caractères.
Le texte restant est traité comme une séquence de caractères et non comme des lignes. Le texte est cassé
en mots séparés par des espaces. Autrement dit, un mot est une sous-séquence maximale de
non-espaces. Si deviner est 1, certains mots peuvent être fusionnés (voir g dans la rubrique OPTIONS).
Le premier mot inclut tous les espaces qui le précèdent sur la même ligne.
Laisser nous L = largeur - préfixe - suffixe.
If Rapport est 0, certains mots peuvent être coupés à ce stade (voir R dans les OPTIONS
section).
Les mots sont rassemblés, en préservant leur ordre, en lignes. Si juste est 0, adjacent
les mots à l'intérieur d'une ligne sont séparés par un seul espace (ou parfois deux si deviner est 1), et
les sauts de ligne sont choisis de manière à ce que le paragraphe satisfasse aux propriétés suivantes :
1) Aucune ligne ne contient plus de L caractères.
2) Si s'adapter est 1, la différence entre les longueurs du plus court et du plus long
lignes est aussi petite que possible.
3) La ligne la plus courte est la plus longue possible, sous réserve des propriétés 1 et 2.
4) Laisser l'objectif be L if s'adapter est 0, ou la longueur de la ligne la plus longue si s'adapter est 1. Le
somme des carrés des différences entre l'objectif et les longueurs de
lignes est aussi petite que possible, sous réserve des propriétés 1, 2 et 3.
If dernier est 0, la dernière ligne ne compte pas comme une ligne pour les propriétés
2, 3 et 4 ci-dessus.
Si tous les mots tiennent sur une seule ligne, les propriétés telles qu'énoncées ci-dessus ne font pas grand-chose
sens. Dans ce cas, aucun saut de ligne n'est inséré.
If juste est 1, les mots adjacents dans une ligne sont séparés par un espace (ou parfois deux si
deviner est 1) plus zéro ou plusieurs espaces supplémentaires. La valeur de s'adapter est ignoré, et la ligne
les ruptures sont choisies de manière à ce que le paragraphe satisfasse aux propriétés suivantes :
1) Chaque ligne contient exactement L caractères.
2) Le plus grand écart entre les mots est aussi petit que possible, sous réserve de la propriété 1. (Un
l'espace entre les mots ne comprend que les espaces supplémentaires, pas les espaces réguliers.)
3) La somme des carrés des longueurs des espaces entre les mots est aussi petite que
possible, sous réserve des propriétés 1 et 2.
If dernier est 0, la dernière ligne ne compte pas comme une ligne aux fins du bien 1,
et il ne nécessite ni ne contient d'espaces supplémentaires.
Les espaces supplémentaires sont répartis aussi uniformément que possible parmi les espaces entre les mots dans
chaque ligne.
Dans un paragraphe justifié, chaque ligne doit contenir au moins deux mots, mais ce n'est pas
toujours possible d'accomplir. Si le paragraphe ne peut pas être justifié, il est
considéré comme une erreur.
Si le nombre de lignes dans le paragraphe résultant est inférieur à accrocher, des lignes vides sont ajoutées
à la fin pour porter le nombre de lignes à accrocher.
If juste est 0 et -nous est 1, L est changé pour être la longueur de la ligne la plus longue.
If suffixe n'est pas 0, chaque ligne est complétée à la fin par des espaces pour amener sa longueur à
L.
A chaque ligne est préfixé préfixe personnages. Laisser n être le nombre de lignes dans l'IP, soit
afp être le prelen de repli augmenté de l'IP, et laissez fs être le repli suflen de la
IP. Les caractères qui précèdent le ième ligne sont choisis comme suit :
1) Si i <= n, les caractères sont copiés de ceux qui ont été supprimés du
début de la nème ligne d'entrée.
2) Si i > n > accrocher, les caractères sont copiés de ceux qui ont été supprimés du
début de la dernière ligne d'entrée.
3) Si i > n et n <= accrocher, la première minute(afp,préfixe) des caractères sont copiés de
ceux qui ont été supprimés du début de la dernière ligne d'entrée, et le reste
sont tous des espaces.
Puis à chaque ligne est ajouté suffixe personnages. Les caractères qui sont ajoutés à la
ième ligne sont choisis comme suit :
1) Si i <= n, les caractères sont copiés de ceux qui ont été supprimés à la fin
du système nème ligne d'entrée.
2) Si i > n > accrocher, les caractères sont copiés de ceux qui ont été supprimés du
fin de la dernière ligne d'entrée.
3) Si i > n et n <= accrocher, la première minute(fs,suffixe) des caractères sont copiés de
ceux qui ont été supprimés du début de la dernière ligne d'entrée, et le reste
sont tous des espaces.
Enfin, les lignes sont imprimées sur la sortie en tant qu'OP.
DIAGNOSTIC
S'il n'y a pas d'erreurs, par Retours EXIT_SUCCESS (voir ).
S'il y a une erreur, un message d'erreur sera imprimé sur la sortie, et par reviendra
EXIT_FAILURE. Si l'erreur est locale à un seul paragraphe, les paragraphes précédents seront
ont été émis avant que l'erreur ne soit détectée. Les numéros de ligne dans les messages d'erreur sont locaux
à l'adresse IP dans laquelle l'erreur s'est produite. Tous les messages d'erreur commencent par "par error:" sur un
ligne par elle-même. Les messages d'erreur concernant la ligne de commande ou la syntaxe des variables d'environnement sont
accompagné du même message d'utilisation que l'option d'aide produit.
A moins que l'option E est défini, essayer d'imprimer un message d'erreur serait vain si une erreur
résulte d'une fonction de sortie, donc par ne prend pas la peine de faire une vérification d'erreur sur la sortie
fonctionne si E est 0.
EXEMPLES
La supériorité de parl'algorithme de programmation dynamique de sur un algorithme glouton (tel que
celui utilisé par fmt) peut être vu dans l'exemple suivant :
Paragraphe original (notez que chaque ligne commence par 8 espaces) :
Nous, peuple des États-Unis,
afin de former une union plus parfaite,
établir la justice,
assurer la tranquillité domestique,
assurer la défense commune,
promouvoir le bien-être général,
et obtenir la bénédiction de la liberté
à nous-mêmes et à notre postérité,
ordonner et établir la Constitution
des États-Unis d'Amérique.
Après un algorithme glouton avec width = 39 :
Nous le peuple des États-Unis
États, afin de former une plus
union parfaite, établir
justice, assurer domestique
tranquillité, prévoir la
défense commune, promouvoir la
bien-être général et assurer la
bénédiction de la liberté à
nous-mêmes et notre postérité, faisons
ordonner et établir le
Constitution des États-Unis
États d'Amérique.
Après "par 39":
Nous le peuple des États-Unis
États, afin de former un
union plus parfaite, établir
justice, assurer domestique
tranquillité, prévoir la
défense commune, promouvoir la
bien-être général et sûr
la bénédiction de la liberté de
nous-mêmes et notre postérité,
ordonner et établir le
Constitution des États-Unis
États d'Amérique.
Les sauts de ligne choisis par par sont clairement plus agréables à regarder.
par est le plus utile en conjonction avec les fonctionnalités de filtrage de texte d'un éditeur, telles que
les ! commandes de vi. Vous pouvez ajouter les lignes suivantes à votre .exrc fichier:
" utiliser Bourne shell pour la vitesse :
définir le shell=/ Bin / sh
"
" reformater le paragraphe sans arguments :
carte ** {!}par^M}
"
" reformater le paragraphe avec des arguments :
carte *^V {!}par
Notez que les espaces de début doivent être supprimés, et que ce qui est affiché comme ^M et ^V vraiment
besoin d'être ctrl-M et ctrl-V. Notez également que la dernière commande de carte contient deux espaces
suivant le ctrl-V, plus un à la fin de la ligne.
Pour reformater un paragraphe simple délimité par des lignes vides dans vi, vous pouvez mettre le curseur
n'importe où dedans et tapez "**" (étoile étoile). Si vous devez fournir des arguments au pair, vous pouvez
taper "* " (espace étoile) à la place, puis tapez les arguments.
Le reste de cette section est une série de photos avant et après montrant des
utilisations de par. Dans tous les cas, aucune variable d'environnement n'est définie.
Avant:
/* Nous le peuple des États-Unis, */
/* afin de former une union plus parfaite, */
/* établir la justice, */
/* assurer la tranquillité domestique, */
/* assurer la défense commune, */
/* promouvoir le bien-être général, */
/* et obtenir la bénédiction de la liberté */
/* à nous-mêmes et à notre postérité, */
/* ordonner et établir la Constitution */
/* des États-Unis d'Amérique. */
Après "par 59":
/* Nous, le peuple des États-Unis, dans */
/* afin de former une union plus parfaite, établir */
/* justice, assurer la tranquillité domestique, assurer */
/* pour la défense commune, promouvoir le général */
/* le bien-être et la bénédiction de la liberté */
/* à nous-mêmes et à notre postérité, ordonnez */
/* et établir la Constitution des États-Unis */
/* États d'Amérique. */
Ou après "par 59f":
/* Nous le peuple des États-Unis, */
/* afin de former une union plus parfaite, */
/* établir la justice, assurer domestique */
/* tranquillité, prévoir le commun */
/* défense, promotion du bien-être général, */
/* et obtenir la bénédiction de la liberté à */
/* nous-mêmes et notre postérité, ordonnons */
/* et établir la Constitution de la */
/* Les états-unis d'Amérique. */
Ou après "par 59l":
/* Nous, le peuple des États-Unis, dans */
/* afin de former une union plus parfaite, établir */
/* justice, assurer la tranquillité domestique, */
/* assurer la défense commune, promouvoir */
/* le bien-être général, et sécuriser le */
/* bénédiction de la liberté à nous-mêmes et à nos */
/* la postérité, ordonnez et établissez la */
/* Constitution des États-Unis d'Amérique. */
Ou après "par 59lf":
/* Nous le peuple des États-Unis, */
/* afin de former une union plus parfaite, */
/* établir la justice, assurer domestique */
/* tranquillité, prévoir le commun */
/* défense, promotion du bien-être général, */
/* et obtenir la bénédiction de la liberté */
/* à nous-mêmes et à notre postérité, fais */
/* ordonner et établir la Constitution */
/* des États-Unis d'Amérique. */
Ou après "par 59lft0":
/* Nous le peuple des États-Unis, */
/* afin de former une union plus parfaite, */
/* établir la justice, assurer domestique */
/* tranquillité, prévoir le commun */
/* défense, promotion du bien-être général, */
/* et obtenir la bénédiction de la liberté */
/* à nous-mêmes et à notre postérité, fais */
/* ordonner et établir la Constitution */
/* des États-Unis d'Amérique. */
Ou après "par 59j":
/* Nous, le peuple des États-Unis, dans */
/* afin de former une union plus parfaite, établir */
/* justice, assurer la tranquillité domestique, assurer */
/* pour la défense commune, promouvoir le général */
/* le bien-être et la bénédiction de la liberté */
/* à nous-mêmes et à notre postérité, ordonnez et */
/* établir la Constitution des États-Unis */
/* États d'Amérique. */
Ou après "par 59jl":
/* Nous le peuple des États-Unis, */
/* afin de former un plus parfait */
/* union, établir la justice, assurer domestique */
/* tranquillité, assurer la défense commune, */
/* promouvoir le bien-être général, et sécuriser */
/* la bénédiction de la liberté pour nous-mêmes et */
/* notre postérité, ordonnez et établissez le */
/* Constitution des États-Unis d'Amérique. */
Avant:
Préambule Nous, peuple des États-Unis,
aux États-Unis afin de former
Constitution une union plus parfaite,
établir la justice,
assurer la tranquillité domestique,
assurer la défense commune,
promouvoir le bien-être général,
et obtenir la bénédiction de la liberté
à nous-mêmes et à notre postérité,
ordonner et établir
la Constitution
des États-Unis d'Amérique.
Après "par 52h3":
Préambule Nous, peuple des États-Unis
aux États-Unis, afin de former un
Constitution union plus parfaite, établir
justice, assurer domestique
tranquillité, prévoir la
défense commune, promouvoir la
bien-être général et sûr
la bénédiction de la liberté de
nous-mêmes et notre postérité,
ordonner et établir le
Constitution des États-Unis
États d'Amérique.
Avant:
1 Nous, peuple des États-Unis,
2 afin de former une union plus parfaite,
3 établir la justice,
4 assurer la tranquillité domestique,
5 prévoir la défense commune,
6 promouvoir le bien-être général,
7 et obtenir la bénédiction de la liberté
8 à nous-mêmes et à notre postérité,
9 ordonner et établir la Constitution
10 des États-Unis d'Amérique.
Après "par 59p12l":
1 Nous, peuple des États-Unis, afin de
2 former une union plus parfaite, établir la justice,
3 assurer la tranquillité domestique, prévoir la
4 défense commune, promouvoir le bien-être général,
5 et assurez-vous la bénédiction de la liberté pour nous-mêmes
6 et notre postérité, ordonnez et établissez les
7 Constitution des États-Unis d'Amérique.
Avant:
> > Nous les gens
> > des États-Unis,
> > afin de former une union plus parfaite,
> > établir la justice,
> > assurer la tranquillité domestique,
> > assurer la défense commune,
>
> Favoriser le bien-être général,
> et obtenir la bénédiction de la liberté
> à nous-mêmes et à notre postérité,
> ordonner et établir
> la Constitution des États-Unis d'Amérique.
Après "par 52":
> > Nous, le peuple des États-Unis, en
> > afin de former une union plus parfaite,
> > établir la justice, assurer
> > tranquillité, prévoir les communs
> > défense,
>
> Favoriser le bien-être général, et sécuriser
> la bénédiction de la liberté pour nous-mêmes et
> notre postérité, ordonnez et établissez
> la Constitution des États-Unis de
> Amérique.
Avant:
> Nous les gens
> des États-Unis,
> afin de former une union plus parfaite,
> établir la justice,
> assurer la tranquillité domestique,
> assurer la défense commune,
> Favoriser le bien-être général,
> et obtenir la bénédiction de la liberté
> à nous-mêmes et à notre postérité,
> ordonner et établir
> la Constitution des États-Unis d'Amérique.
Après "par 52d":
> Nous, peuple des États-Unis,
> afin de former une union plus parfaite,
> établir la justice, assurer
> tranquillité, prévoir le commun
> défense,
> Favoriser le bien-être général, et sécuriser
> la bénédiction de la liberté pour nous-mêmes et
> notre postérité, ordonnez et établissez
> la Constitution des États-Unis de
> Amérique.
Avant:
# 1. Nous, le peuple des États-Unis.
# 2. Afin de former une union plus parfaite.
# 3. Établir la justice, assurer
# tranquillité.
#4. Prévoir la défense commune
# 5. Promouvoir le bien-être général.
# 6. Et obtenir la bénédiction de la liberté
# à nous-mêmes et à notre postérité.
# 7. Ordonnez et établissez la Constitution.
# 8. Des États-Unis d'Amérique.
Après "par 37p13dh":
# 1. Nous, les gens du
# États Unis.
# 2. Afin de former un plus
# union parfaite.
# 3. Etablir la justice,
# assurer domestique
# tranquillité.
#4. Prévoir le commun
# la défense
#5. Promouvoir le général
# bien-être.
# 6. Et obtenez la bénédiction
# de liberté à nous-mêmes
# et notre postérité.
# 7. Ordonnez et établissez
# la Constitution.
# 8. Des États-Unis de
# Amérique.
Avant:
/************************************************/
/* Nous le peuple des États-Unis, */
/* afin de former une union plus parfaite, */
/* établir la justice, assurer domestique */
/* tranquillité, */
/ * * /
/ * * /
/* [ assurer la défense commune, ] */
/* [ promouvoir le bien-être général, ] */
/* [ et obtenir la bénédiction de la liberté ] */
/* [ à nous-mêmes et à notre postérité, ] */
/* [ ] */
/ * * /
/* ordonner et établir la Constitution */
/* des États-Unis d'Amérique. */
/************************************************/
Après "par 42r":
/ ********************************** /
/* Nous les gens du */
/* États-Unis, afin de */
/* forme une union plus parfaite, */
/* établir la justice, assurer */
/* tranquillité domestique, */
/ * * /
/ * * /
/* [ prévoir le commun ] */
/* [ défendre, promouvoir le ] */
/* [ bien-être général, et ] */
/* [ obtenir la bénédiction de ] */
/* [ liberté à nous-mêmes ] */
/* [ et notre postérité, ] */
/* [ ] */
/ * * /
/* ordonner et établir le */
/* Constitution des États-Unis */
/* États d'Amérique. */
/ ********************************** /
Ou après "par 42re":
/ ********************************** /
/* Nous les gens du */
/* États-Unis, afin de */
/* forme une union plus parfaite, */
/* établir la justice, assurer */
/* tranquillité domestique, */
/ * * /
/* [ prévoir le commun ] */
/* [ défendre, promouvoir le ] */
/* [ bien-être général, et ] */
/* [ obtenir la bénédiction de ] */
/* [ liberté à nous-mêmes ] */
/* [ et notre postérité, ] */
/ * * /
/* ordonner et établir le */
/* Constitution des États-Unis */
/* États d'Amérique. */
/ ********************************** /
Avant:
Joe Public écrit :
> Jane Doe écrit :
>>
>>
> > Je ne trouve pas la source pour décompresser.
> Oh non, pas encore !!!
>
>
> N'y a-t-il pas une FAQ pour cela ?
>
>
Ce n'était pas très utile, Joe. Jeanne,
il suffit de faire un lien de décompresser à compresser.
Après "par 40q":
Joe Public écrit :
> Jane Doe écrit :
>
>
> > Je ne trouve pas la source de
> > décompresser.
>
> Oh non, pas encore !!!
>
>
> N'y a-t-il pas une FAQ pour cela ?
>
Ce n'était pas très utile, Joe.
Jane, fais juste un lien depuis
décompresser pour compresser.
Ou après "par 40qe":
Joe Public écrit :
> Jane Doe écrit :
>
> > Je ne trouve pas la source de
> > décompresser.
>
> Oh non, pas encore !!!
>
> N'y a-t-il pas une FAQ pour cela ?
Ce n'était pas très utile, Joe.
Jane, fais juste un lien depuis
décompresser pour compresser.
Ou après "par 40qi":
Joe Public écrit :
> Jane Doe écrit :
>>
>>
> > Je ne trouve pas la source de
> > décompresser.
> Oh non, pas encore !!!
>
>
> N'y a-t-il pas une FAQ pour cela ?
>
>
Ce n'était pas très utile, Joe.
Jane, fais juste un lien depuis
décompresser pour compresser.
Ou après "par 40qi":
Joe Public écrit :
> Jane Doe écrit :
> > Je ne trouve pas la source de
> > décompresser.
> Oh non, pas encore !!!
>
> N'y a-t-il pas une FAQ pour cela ?
Ce n'était pas très utile, Joe.
Jane, fais juste un lien depuis
décompresser pour compresser.
Avant:
J'espère bien qu'il y a encore de la place
dans la section d'archéologie du Dr Jones.
J'ai entendu dire qu'il était le meilleur. [sic]
Après "par 50g":
J'espère bien qu'il y a encore de la place dans
Section d'archéologie du Dr Jones. j'ai
entendu qu'il est le meilleur. [sic]
Ou après "par 50g":
J'espère bien qu'il y a encore de la place dans
Section d'archéologie du Dr Jones. j'ai
entendu qu'il est le meilleur. [sic]
Avant:
Jean écrit :
: Marie écrit :
: + Anastasia écrit :
: + > Salut à tous !
: + Salut Ana !
: Salut Ana et Marie !
Veuillez me désinscrire de alt.hello.
Après "par Q+ :+ q":
Jean écrit :
: Marie écrit :
:
: + Anastasia écrit :
+
: + > Salut à tous !
+
: + Salut Ana !
:
: Salut Ana et Marie !
Veuillez me désinscrire de alt.hello.
Avant:
amc> L'option b a été ajoutée principalement pour traiter
amc> ce nouveau style de citation
amc> qui est devenu populaire après la sortie du Par 1.41.
amc>
amc> Par fait toujours attention aux caractères du corps.
amc> Par ne doit pas confondre "Par" avec une partie du préfixe.
amc> Par ne doit pas confondre "." pour un suffixe.
Après "par B=._A_a 50bg":
amc> L'option b a été ajoutée principalement à
amc> face à ce nouveau style de citation
amc> qui est devenu populaire après le Par 1.41
amc> a été publié.
amc>
amc> Par fait toujours attention au corps
amc> caractères. Par ne doit pas se tromper
amc> "Par" pour une partie du préfixe. Par
amc> ne doit pas confondre "." pour un suffixe.
Utilisez par en ligne en utilisant les services onworks.net