Skip to content

Conversion des caractères d'espace en jetons d'espace

Je vous souhaite la bienvenue au projet en ligne, sur ce site vous trouverez la solution à ce que vous cherchiez.

Solution :

Habituellement, TeX traite l'entrée ligne par ligne :

La ligne entière est lue et la ligne entière est prétraitée.

  • Une étape de prétraitement de la ligne entière. est :
    Tous les caractères de la séquence de caractères qui forme cette ligne sont . convertir ed à partir du schéma de représentation des caractères de la plate-forme informatique. au schéma interne de représentation des caractères du moteur TeX..
    Le schéma de représentation des caractères de la plate-forme informatique. peut être n'importe quel codage de caractères. Avec les ordinateurs modernes, c'est souvent Unicode (et souvent le format de transformation est UTF-8). Avec des machines plus anciennes, par exemple, fonctionnant sous MS-DOS, il peut s'agir d'un codage 8 bits ou d'un codage d'octets où l'ASCII (A merican S tandard C ode pour I nformation I nterchange) est un sous-ensemble ; par exemple, lorsqu'il fonctionne sous Win95/Win98/NT, cela peut être, par exemple, Windows-1252 ou iso-8859-1/iso-8859-15 ou autre.
    Avec les moteurs TeX traditionnels, le schéma interne de représentation des caractères du moteur TeX. est ASCII. Avec les moteurs XeTeX et LuaTeX, le schéma interne de représentation des caractères du moteur TeX est Unicode (dont l'ASCII est un sous-ensemble).
  • Une autre étape de pré-traitement de la ligne entière. est :
    Tous les espaces, c'est-à-dire tous les caractères dont le point de code a le numéro 32 dans le schéma interne de représentation des caractères du moteur TeX/dans l'ASCII/dans l'Unicode, qui se produisent... à l'extrémité droite de la ligne, sont supprimés.
  • Encore une autre étape de prétraitement de la ligne entière. est :
    A l'extrémité droite de la ligne un caractère est ajouté dont le numéro de point de code dans le schème interne de représentation des caractères du moteur TeX est égal à la valeur du paramètre entier endlinechar.
  • L'appareil de lecture passe à l'état N(nouvelle ligne).

Après le prétraitement de TeX commence à tokeniser la ligne prétraitée.

Cela signifie que TeX "regarde" la ligne prétraitée caractère par caractère et prend ainsi la séquence de caractères comme un ensemble de directives pour ajouter des jetons au flux de jetons. Les codes de catégorie de caractères jouent ici un rôle.

["Looking" at the pre-processed line character by character and appending tokens to the token-stream takes place "on demand", i.e., only when TeX needs tokens while the token-stream is empty. E.g., when the token-stream is empty while gathering macro-arguments or a ⟨balenaced text⟩,
or when "looking" whether there is more work to do as no command for ending the job—something like (plain TeX) bye or end or (LaTeX) stop or end{document}—has been encountered yet.
On the one hand assigning another value to the integer-parameter endlinechar does affect the pre-processing of lines of input. Thus an assignment to endlinechar does not affect the line of input wherein it occurs (but only subsequent lines) because obviously that line is already pre-processed at the time when the assignment is carried out.
On the other hand changing category-codes may affect tokenization of things while tokenization takes place on demand after pre-processing. Therefore changing category-codes might affect the tokenizing of things that (even in the current line) appear right after the assignment for changing the category-codes.
Changing the category-code of the "endline-character" may affect how the (during the pre-processing of the current line already appended) "endline-character" of the current line gets tokenized.

You can, e.g., type "I must not talk in class!" ten times by assigning endlinechar a nice value and making the corresponding character active and defining that active character to deliver a horizontal box holding the phrase "I must not talk in class!" and then adding ten empty lines to the .tex-input (by hitting return ten times while typeing the sourecode), yielding the insertion of ten endline-characters during compilation as each of these ten empty lines gets pre-processed—notice that the endlinechar-assignment does not affect the line wherein it occurs (but only subsequent lines) because that line is already pre-processed at the time when that endlinechar-assignment is carried out. Each of the ten inserted endline-characters in turn gets tokenized as the mentioned active character delivering the horizontal box with the phrase "I must not talk in class!" :

begingroup
%  Let's make 'A' active:
catcode`A=13 %
% Let's have a scratch-counter for counting how many times
% the phrase "I must not talk in class!" is written:
newcountscratchcount
% Let's define the active-'A' to do some counting and to
% deliver the line "I must not talk in class!":
def A{%
   % Ensure vertical mode:
   ifvmodeelseparfi
   % Increment the scratch-counter and place the line/
   % the horizontal box:
   advancescratchcount by 1 %
   hbox{numberscratchcount.null I must not talk in class!}%
}%
% Make the character 'A' the endline-character:
endlinechar=`Arelax
% (The endlinechar-assignment in the line above does not affect
% that line. It does affect subsequent lines only. It does not
% lead to appending the character 'A' to that line as at the time 
% of carrying out that assignment in TeX's stomach, that line is 
% already pre-processed with the old value of endlinechar (which
% is 13, denoting the return-character) ). 
% 
% Now let's have ten empty lines, yielding ten endline-characters
% 'A' whereof each gets tokenized as active-'A' expanding to the
% directives for doing some counting and delivering the line with
% the phrase "I must not talk in class!".

endgroup%
% The comment-char at the end of the line above must be as the line
% above obviously gets pre-processed _before_ carrying out endgroup
% and thus it also will have an endlinechar-'A' appended. 
% Without the comment-char that 'A' would--as at the time of gathering
% the characters that form the name of the control-word-token 'endgr...'
% the  character 'A' is not of category-code 11(letter)--not be taken for 
% something that belongs to the name of that "endgr..."-control-word-token
% and therefore would trigger termination of gathering the name of the
% 'endgr...'-control-word-token and would be put back into the input
% stream.
% After processing/carrying out the control-word-token 'endgroup', 'A'
% is of category-code 11(letter).
% Therefore processing/tokenizing the 'A' that was put back into the
% input-steam would yield an 'A'-character-token of category-code
% 11(letter), at some later stage of processing yielding a glyph 'A'
% within the output-file/within the .dvi- or .pdf-file.
%
% Now let's get the token 'bye' in a funny way:
endlinechar=`e
by

enter image description here

]

Examinons votre code :

Line 1:  deffoo#1{(#1)baz}%
Line 2:  defbaz{baz}%
Line 3:  foo{bla} Bar
Line 4:  bye

Les lignes 1 et 2 sont des lignes de code sans espace, donc ici aucun token d'espace n'est utilisé. Nous ne rentrons pas dans les détails ici. Chacune de ces lignes se termine par un caractère pourcent alors que ce caractère pourcent a le code-catégorie 14(commentaire). Avec chacune de ces lignes en raison du paramètre entier endlinechar ayant la valeur 13 (13 désigne le caractère de retour dans le schéma interne de représentation des caractères du moteur TeX / ASCII / Unicode), un caractère de retour sera ajouté derrière ce caractère de pourcentage au stade du prétraitement. Mais au stade de la tokenisation, les caractères de catégorie-code 14(commentaire) (lorsqu'ils ne sont pas pris pour le nom d'un symbole de contrôle-token) font que TeX cesse de tokeniser la ligne d'entrée en cours et commence à traiter la ligne d'entrée suivante si elle est présente. Ainsi, un caractère pour cent dans une ligne d'entrée n'ajoute pas du tout un jeton au flux de jetons, mais amène TeX à le "laisser tomber" silencieusement, ainsi que les caractères restants de cette ligne d'entrée. Comme le caractère de retour ajouté à cause de endlinechar appartient aussi aux caractères restants de cette ligne d'entrée, il est aussi silencieusement abandonné.

La ligne 3 est prétraitée (par les yeux de TeX) comme suit :

La ligne est lue et ses caractères uniques sont convertis au schéma interne de représentation des caractères du moteur TeX.

Il n'y a pas d'espace à l'extrémité droite de la ligne. Il n'y a donc aucun espace à l'extrémité droite de la ligne à supprimer.

En raison de endlinechar a (généralement) la valeur 13 alors que 13 est le numéro du point de code du caractère de retour en ASCII/in Unicode/in le schéma interne de représentation des caractères du moteur TeX, (généralement) un caractère de retour est inséré derrière le dernier caractère de la ligne, soit r. Habituellement, le caractère de retour a le code-catégorie 5(fin de ligne).

Lorsque TeX (dans sa bouche) commence à tokeniser la ligne prétraitée, l'appareil de lecture passe à l'état N(nouvelle ligne).
(Lorsque l'appareil de lecture se trouve dans l'état N(nouvelle ligne), alors.

  • les caractères d'espacement ne donnent pas du tout lieu à l'ajout de jetons au flux de jetons mais sont simplement abandonnés, et
  • un caractère de catégorie-code 5(fin de ligne) permet d'ajouter le mot-clé de contrôle. par au flux de jetons et provoque également l'arrêt de la tokenisation par TeX des caractères restants de la ligne courante/et provoque également l'abandon par TeX des caractères restants de la ligne courante et le début du traitement de la ligne d'entrée suivante si elle est présente.

)

Par conséquent, la bouche de TeX, c'est-à-dire chaque fois que des jetons sont nécessaires, met en jetons la ligne prétraitée/la séquence de caractères d'entrée prétraitée (maintenant convertie en schéma de représentation de caractères interne au moteur TeX).

foo{bla}⟨space-character⟩Bar⟨return-character⟩

comme suit :

  • Mot-clé de contrôle foo. (Après avoir ajouté un mot-clé de contrôle au flux de jetons, l'appareil de lecture passe à l'état S (saut des blancs)).

    Comme foo est une macro qui traite un argument, l'argument doit être obtenu en tokenisant un peu plus d'entrée :

  • Caractère-token explicite { (accolade ouvrante) de catégorie-code 1(début de groupe). (Après avoir ajouté un caractère-token explicite qui n'est pas de la catégorie-code 10(espace) ou après avoir ajouté un contrôle-symbole-token différent du contrôle-espace ( ), l'appareil de lecture passe à l'état M(milieu de ligne)).

  • Caractère-token explicite b de la catégorie-code 11(lettre). (Après l'ajout d'un caractère-token explicite qui n'est pas de la catégorie-code 10(espace) ou après l'ajout d'un symbole-token de contrôle différent du contrôle-espace ( ), l'appareil de lecture passe à l'état M(milieu de ligne)).
  • Caractère-token explicite l de la catégorie-code 11(lettre). (Après l'ajout d'un caractère-token explicite qui n'est pas de la catégorie-code 10(espace) ou après l'ajout d'un symbole-token de contrôle différent du contrôle-espace ( ), l'appareil de lecture passe à l'état M(milieu de ligne)).
  • Caractère-token explicite a de la catégorie-code 11(lettre). (Après l'ajout d'un caractère-token explicite qui n'est pas de la catégorie-code 10(espace) ou après l'ajout d'un symbole-token de contrôle différent du contrôle-espace ( ), l'appareil de lecture passe à l'état M(milieu de ligne)).
  • Caractère-token explicite } (accolade fermante) de la catégorie-code 2(groupe de fin). (Après avoir ajouté un caractère-token explicite qui n'est pas du code-catégorie 10(espace) ou après avoir ajouté un symbole-token de contrôle différent de l'espace de contrôle ( ), l'appareil de lecture passe à l'état M(milieu de ligne)).

  • Ainsi, les tokens suivants sont maintenant envoyés vers le bas de la bouche de TeX à l'estomac de TeX - sur leur chemin vers l'estomac, les tokens passent par l'œsophage de TeX, où l'expansion a lieu :
    foo(control-word-token){1(begin-group)b11(letter)l11(letter)a11(letter)}2(end group)
    tandis que la bouche de TeX contient toujours la séquence de caractères d'entrée prétraitée restante.
    ⟨space-character⟩Bar⟨return-character⟩.

  • L'expansion de ces jetons en passant par l'œsophage de TeX donne :

    foo nécessite un argument non délimité. Jetons d'espace explicites précédant a non délimité macro argument sont rejetés lors de la collecte des tokens qui forment l'argument. (Un argument non délimité est soit un seul token (qui n'est ni un espace-token explicite, ni un caractère-token explicite de category-code 1(begin group), ni un caractère-token explicite de category-code 2(end group), ni un outer-) ou est constitué d'une paire d'accolades correspondantes (accolade d'ouverture et accolade de fermeture) dans laquelle un ensemble équilibré d'accolades non outer-est imbriqué. Cet ensemble équilibré d'accolades de tokens peut être "vide"). Si elle est présente, une paire d'accolades correspondantes qui entoure un argument de macro entier (qu'il s'agisse d'un argument de macro délimité ou non délimité) est écartée lors de la livraison du texte de remplacement de la macro.
    Expansion de foo produit le remplacement suivant :

    (12(other)b11(letter)l11(letter)a11(letter))12(other)baz(control-word-token)

    La bouche contient toujours la séquence de caractères d'entrée prétraités restante.
    ⟨space-character⟩Bar⟨return-character⟩.

  • Pendant que ces jetons glissent dans l'œsophage, le jeton-mot de contrôle extensible baz se développe également - les tokens suivants atteignent l'estomac de TeX :

    (12(other)b11(letter)l11(letter)a11(letter))12(other)b11(letter)a11(letter)z11(letter)

    Le traitement de ces tokens dans l'estomac (où les affectations ont lieu et les boîtes sont développées et les paragraphes sont divisés sur les lignes et les lignes sont placées sur les pages, etc.) permet de passer en mode horizontal et d'ajouter la séquence de glyphes
    (bla)baz
    à la liste horizontale à partir de laquelle la ligne de texte suivante pour le fichier de sortie/le fichier .pdf doit être construite.

    La bouche de TeX contient encore la séquence de caractères d'entrée pré-traitée restante.
    ⟨space-character⟩Bar⟨return-character⟩.

  • Il n'y a aucune indication que le travail doit être terminé, donc TeX continue ses processus digestifs :

    L'appareil de lecture n'est ni dans l'état N(nouvelle ligne) ni dans l'état S(saut des blancs) mais est dans l'état M(milieu de la ligne) et TeX ne recueille pas le nom d'un symbole de contrôle-token. Donc, à partir de la séquence de caractères d'entrée pré-traitée restante dans sa bouche
    ⟨space-character⟩Bar⟨return-character⟩
    il tokenise le ⟨space-character⟩ en tant que token-espace explicite (code-caractère 32, code-catégorie 10(espace)) et l'ajoute au flux de tokens/l'envoie dans son gosier vers l'estomac.
    (Après avoir ajouté un caractère-token explicite de catégorie-code 10(espace) ou après avoir ajouté un espace de contrôle ( ), l'appareil de lecture passe à l'état S(saut des blancs)).
    Comme TeX est en mode horizontal, l'espace-token dans l'estomac amène TeX à
    ajouter de la colle horizontale à la liste horizontale qui, à son tour (si elle n'est pas rejetée pour une raison quelconque), produit un espace vide horizontal visible dans le fichier de sortie .pdf.

    La bouche de TeX contient la séquence de caractères d'entrée pré-traitée restante.
    Bar⟨return-character⟩.

  • Il n'y a aucune indication que le travail doit être terminé, donc TeX continue ses processus digestifs :

    A partir de la séquence de caractères d'entrée prétraitée restante dans sa bouche, il tokenise le caractère-token explicite. B de catégorie-code 11(lettre) et l'envoie dans son gosier vers l'estomac. (Après avoir ajouté un caractère-token explicite qui n'est pas de catégorie-code 10(espace) ou après avoir ajouté un contrôle-symbole-token différent du contrôle-espace ( ), l'appareil de lecture passe à l'état M(milieu de la ligne)).

    La bouche de TeX contient la séquence de caractères d'entrée prétraitée restante.
    ar⟨return-character⟩.

  • Il n'y a aucune indication que le travail doit être terminé, donc TeX continue ses processus digestifs :

    A partir de la séquence de caractères d'entrée prétraitée restante dans sa bouche, il tokenise le caractère-token explicite. a de catégorie-code 11(lettre) et l'envoie dans son gosier vers l'estomac. (Après avoir ajouté un caractère-token explicite qui n'est pas de catégorie-code 10(espace) ou après avoir ajouté un contrôle-symbole-token différent du contrôle-espace ( ), l'appareil de lecture passe à l'état M(milieu de la ligne)).

    La bouche de TeX contient la séquence de caractères d'entrée prétraitée restante.
    r⟨return-character⟩.

  • Il n'y a aucune indication que le travail doit être terminé, donc TeX continue ses processus digestifs :

    A partir de la séquence de caractères d'entrée prétraitée restante dans sa bouche, il tokenise le caractère-token explicite. r de catégorie-code 11(lettre) et l'envoie dans son gosier vers l'estomac. (Après avoir ajouté un caractère-token explicite qui n'est pas de catégorie-code 10(espace) ou après avoir ajouté un contrôle-symbole-token différent du contrôle-espace ( ), l'appareil de lecture passe à l'état M(milieu de la ligne)).

    La bouche de TeX contient la séquence de caractères d'entrée prétraitée restante.
    ⟨return-character⟩.

  • Il n'y a aucune indication que le travail doit être terminé, donc TeX continue ses processus digestifs :

    Comme TeX ne recueille pas le nom d'un token-symbole de contrôle et que l'appareil de lecture est dans l'état M(milieu de ligne) alors que le caractère de retour a le code-catégorie 5(fin de ligne), TeX va ajouter au flux de tokens et envoyer dans son gosier un token-espace explicite (code-caractère 32, code-catégorie 10(espace)).

    (Si TeX rencontrait un caractère de category-code 5(end of line) alors que l'appareil de lecture était dans l'état N(new line) et que TeX ne recueillait pas le nom d'un control-symbol-token, alors TeX ajouterait le control-word-token. par au flux de jetons.
    C'est pourquoi, dans des circonstances normales

    • des lignes vides dans le code source et
    • lignes dans le code source ne contenant rien d'autre que des caractères d'espacement, et
    • lignes du code source ne contenant rien d'autre qu'un mélange de caractères de catégorie-code 9(ignore) et 10(espace), ce mélange étant probablement suivi de caractères d'espacement.


    donne le mot-clé de contrôle par. (Dans chacun de ces cas, aucun des caractères (s'ils sont présents) de cette ligne ne conduit à l'insertion d'un jeton dans le flux de jetons, ainsi l'appareil de lecture est toujours dans l'état N lorsqu'il rencontre le caractère de retour du code de catégorie 5(fin de ligne) qui a été inséré en raison de la valeur de endlinechar à l'extrémité droite de la ligne au stade du prétraitement de la ligne).

    Si TeX rencontrait un caractère de catégorie-code 5(fin de ligne) alors que l'appareil de lecture était dans l'état S(saut des blancs) et que TeX ne recueillait pas le nom d'un token-symbole de contrôle, alors TeX n'ajouterait pas de token du tout au flux de tokens).

    Lorsqu'il rencontre un caractère de catégorie-code 5(fin de ligne) alors qu'il ne recueille pas le nom d'un symbole-token de contrôle, TeX cesse dans tous les cas de tokeniser la ligne en cours, c'est-à-dire qu'il laisse tomber tout caractère restant sur la ligne en cours, et commence à traiter la ligne suivante si elle est présente.

  • Rien n'indique que le travail doit être terminé, TeX continue donc ses processus digestifs :
    Il n'y a plus de caractères dans la bouche, donc les yeux de TeX commencent à pré-traiter la prochaine ligne d'entrée. L'appareil de lecture passe à l'état N(nouvelle ligne). Les caractères uniques de la ligne prétraitée vont à la demande dans la bouche de TeX où les jetons sont formés à la demande. Les jetons sont envoyés de la bouche de TeX vers l'estomac de TeX à la demande. Ils passent ainsi dans l'œsophage de TeX où les jetons expansibles sont expansés ou remplacés par leur texte de remplacement. Dans l'estomac, les affectations ont lieu et les boîtes sont gonflées et les paragraphes sont divisés sur les lignes et les lignes sont placées sur les pages etc....

les caractères sont normalement tokenisés dans un token de caractère, en utilisant les paramètres actuels de catcode, mais après qu'un caractère de catcode 0 soit vu, il n'est pas tokenisé et les caractères suivants sont utilisés pour faire un token csname.

Dans ce cas, le caractère suivant est b de catcode 11 donc tex lira tous les caractères suivants de catcode 11 jusqu'au premier caractère non catcode 11 inclus, ou fin de ligne.

Donc ici, la séquence de caractères du code 11 est la suivante baz et fera un jeton csname avec le nom baz le caractère non-catcode11 qui a été utilisé pour terminer le scan csname est retourné au flux d'entrée (comme un caractère, toujours non-tokénisé). sauf s'il s'agit du caractère d'espace catcode 10 auquel cas il est écarté, et tex passe dans son état de saut des blancs, de sorte que tous les espaces suivants sont également écartés. Si le balayage s'est terminé par une fin de ligne, alors tex passe directement à son état de début de ligne sans ajouter le jeton qui produit habituellement un espace en fin de ligne, et tous les espaces au début de la ligne suivante seront écartés comme d'habitude.

donc dans votre cas, les caractères après baz sont } dans la première définition, { dans la deuxième définition, de sorte qu'il n'y a pas de traitement spécial de l'espace, juste dans l'utilisation que vous avez suggérée plus tard de l'espace explicite. (bla)baz Bar le caractère non-catcode 11 est un espace et est écarté.

Lorsque les macros sont développées, les textes de remplacement sont des listes de tokens, donc aucune de ces recherches de caractère à token ou de catcode n'est impliquée.

Laissez-moi modifier votre code

deffoo#1{(#1)baz}
defbaz{baz}

foo{bla} Barbaz Gnu

bye

Les définitions ne sont en fait pas pertinentes. Lorsque TeX lit l'entrée, il la tokenise ; comptons donc les tokens dans la ligne concernée :

foo - {1 - b11 - l11 - a11 - }2 - 10 - B11 - a11 - r11 - baz - G11 - n11 - u11 - 10

J'ai également ajouté les codes de catégorie, lorsque cela est possible.e; les jetons de séquence de contrôle n'ont pas de code de catégorie. Le dernier jeton d'espace est généré par la ligne de fin.

Il n'y a pas de jeton d'espace après baz, car les espaces sont ignorés après les mots de contrôle pendant le processus de tokenisation.

Maintenant, TeX commence à développer les macros, en commençant par la gauche. Puisque foo est une macro à un argument et qu'elle est suivie de {1 l'argument est tout jusqu'à la correspondance }2. Ainsi, TeX supprime tous ces tokens et les remplace par le texte de remplacement enregistré au moment de la définition :

(12 - b11 - l11 - a11 - )12 - baz - 10 - B11 - a11 - r11 - baz - G11 - n11 - u11 - 10

Les jetons jusqu'à baz sont passés à l'étape suivante, laissant

baz - 10 - B11 - a11 - r11 - baz - G11 - n11 - u11 - 10

Maintenant baz est une macro sans argument, donc aucune recherche d'arguments non délimités n'est faite, ce qui ignorerait les espaces ; le remplacement laisse

b11 - a11 - z11 - 10 - B11 - a11 - r11 - baz - G11 - n11 - u11 - 10

Notez que TeX ne fait pas de tokenization à ce stade, donc les espaces après les séquences de contrôle sont pas ignorés.

Lorsque le remplacement des macros est effectué, TeX utilise des tokens déjà formés ; donc baz au début de la troisième liste de tokens montrée est en fait la représentation "interne" du token. Un espace suivant est pas ignoré.

C'est nécessaire. Supposons que vous ayez

deffoo#1{#1 is good}
defegreg{EG}

Alors vous voulez que foo{EG} ou fooegreg s'impriment de la même manière, indépendamment de l'argument passé à foo. Le paramètre dans la définition est suivi d'un espace, donc aussi après le remplacement de la macro là. sera un espace.


Note, La description ci-dessus est une simplification de ce qui se passe réellement. La ligne n'est pas tokenisée immédiatement : seule la partie de la ligne qui est nécessaire est scannée. Donc TeX commence réellement à tokeniser foo et après avoir trouvé une macro à un argument, il cherche ce qui se présente, c'est-à-dire une accolade ouverte, et TeX procède à la tokénisation jusqu'à trouver l'accolade fermée correspondante. Et ainsi de suite. Cependant, puisqu'il n'y a pas de changement de code de catégorie impliqué, prétendre que TeX tokenise en une fois toute la ligne n'est pas la vérité, mais une bonne approximation de celle-ci pour la tâche à accomplir.

Quel serait le problème de tokeniser immédiatement une ligne ? Considérons

catcode`?=active ?

Si la ligne était tokénisée immédiatement, les ? se verrait attribuer le code de catégorie 12 et non 13. Au lieu de cela, la tokenisation lorsque le besoin se fait sentir résout le problème. Le deuxième ? est tokenisé après l'attribution du code de catégorie a été effectuée.

Notes et avis

Vous avez la possibilité de confirmer notre tâche en plaçant un commentaire et en le notant.



Utilisez notre moteur de recherche

Ricerca
Generic filters

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.