Je voudrais utiliser la super syntaxe "{0.blabla}".format(blibli)
pour générer un peu de code LaTeX automatiquement.
Mon problème est que LaTeX est très friand de "{" et de "}", donc je
dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine
dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
Le code suivant
-------------------------------
x=10
print "\MyCommand{{0}}".format(x)
-------------------------------
Je comprends pourquoi, mais je ne sais pas comment parvenir à mes fins.
Chose marrante (que je ne comprends pas): si j'enlève les espaces, j'ai
pas d'erreur, mais pas non plus le résultat attendu :
-------------------------------
x=10
print "\MyCommand{{0}}".format(x)
-------------------------------
produit
\MyCommand{0}
J'ai essayé d'ajouter des \ devant les crochets, mais sans succès.
Typiquement, il me met
ValueError: Single '}' encountered in format string
Bref, ma question est : comment produire la chaine "\MyCommand{10}"
lorsque le 10 est la valeur d'une variable, en utilisant la syntaxe avec
.format ?
(si j'utilise %s et %str(x), je peux le faire)
Mon problème est que LaTeX est très friand de "{" et de "}", donc je dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
"If you need to include a brace character in the literal text, it can be escaped by doubling: {{ and }}."
for i in range(1,100): print "Je lirai la doc avant de poser une question"
merci pour le lien Laurent
Le 06/07/2011 11:11, Alain Ketterlin a écrit :
Laurent Claessens<moky.math@gmail.com> writes:
Mon problème est que LaTeX est très friand de "{" et de "}", donc je
dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine
dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
Mon problème est que LaTeX est très friand de "{" et de "}", donc je dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
"If you need to include a brace character in the literal text, it can be escaped by doubling: {{ and }}."
for i in range(1,100): print "Je lirai la doc avant de poser une question"
merci pour le lien Laurent
Pierre Maurette
Laurent Claessens :
Le 06/07/2011 11:11, Alain Ketterlin a écrit :
Laurent Claessens writes:
Mon problème est que LaTeX est très friand de "{" et de "}", donc je dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
"If you need to include a brace character in the literal text, it can be escaped by doubling: {{ and }}."
for i in range(1,100): print "Je lirai la doc avant de poser une question"
Hum, si la sanction était /Vous me copierez cent fois.../, c'est pas bon ;-)
-- Pierre Maurette
Laurent Claessens :
Le 06/07/2011 11:11, Alain Ketterlin a écrit :
Laurent Claessens<moky.math@gmail.com> writes:
Mon problème est que LaTeX est très friand de "{" et de "}", donc je
dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine
dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
Mon problème est que LaTeX est très friand de "{" et de "}", donc je dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
print "Je lirai la doc avant de poser une question"
Hum, si la sanction était /Vous me copierez cent fois.../, c'est pas bon ;-)
99 fois dans la boucle et une fois dans le code. Le compte est bon.
Bonne aprème Laurent
Laurent Pointal
Alain Ketterlin wrote:
Laurent Claessens writes:
Mon problème est que LaTeX est très friand de "{" et de "}", donc je dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
"If you need to include a brace character in the literal text, it can be escaped by doubling: {{ and }}."
------------------------------- x print "MyCommand{{0}}".format(x) -------------------------------
print "MyCommand{{{0}}}".format(x)
(Note le double , ça ne change rien dans ton exemple mais tu verras la différence, par exemple, avec "texttt...".)
-- Alain.
Tu peux aussi te créer une fonction
def crochete(x): return "{"+x+"}"
Et ensuite utiliser:
r"MyCommand{0}".format(crochete(x))
Le r permet d'éviter le double
Alain Ketterlin wrote:
Laurent Claessens <moky.math@gmail.com> writes:
Mon problème est que LaTeX est très friand de "{" et de "}", donc je
dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine
dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
Mon problème est que LaTeX est très friand de "{" et de "}", donc je dois pouvoir mettre des crochets explicites à l'intérieur d'une chaine dont certains crochets sont pour la syntaxe python(2.6, Ubuntu Lucid)
-> TypeError: cannot concatenate 'str' and 'int' objects
(dans l'exemple de Laurent)
r"MyCommand{0}".format(crochete(x))
L'avantage de format, c'est qu'il s'occupe lui-même d'appeler __format__() (ou str() ou repr() selon les cas).
-- Alain.
Laurent Pointal
Alain Ketterlin wrote:
Laurent Pointal writes:
x print "MyCommand{{0}}".format(x)
print "MyCommand{{{0}}}".format(x)
def crochete(x): return "{"+x+"}"
-> TypeError: cannot concatenate 'str' and 'int' objects
(dans l'exemple de Laurent)
r"MyCommand{0}".format(crochete(x))
L'avantage de format, c'est qu'il s'occupe lui-même d'appeler __format__() (ou str() ou repr() selon les cas).
-- Alain.
Ajouter un str(x) ferait l'affaire, trivial, par contre en effet on perd les capacités de formatage (et de la richesse du paramétrage de format). A voir selon l'usage et la lourdeur potentielle des {{{ }}} dans les écritures.
Alain Ketterlin wrote:
Laurent Pointal <laurent.pointal@free.fr> writes:
x
print "MyCommand{{0}}".format(x)
print "\MyCommand{{{0}}}".format(x)
def crochete(x):
return "{"+x+"}"
-> TypeError: cannot concatenate 'str' and 'int' objects
(dans l'exemple de Laurent)
r"MyCommand{0}".format(crochete(x))
L'avantage de format, c'est qu'il s'occupe lui-même d'appeler
__format__() (ou str() ou repr() selon les cas).
-- Alain.
Ajouter un str(x) ferait l'affaire, trivial, par contre en effet on perd les
capacités de formatage (et de la richesse du paramétrage de format). A voir
selon l'usage et la lourdeur potentielle des {{{ }}} dans les écritures.
-> TypeError: cannot concatenate 'str' and 'int' objects
(dans l'exemple de Laurent)
r"MyCommand{0}".format(crochete(x))
L'avantage de format, c'est qu'il s'occupe lui-même d'appeler __format__() (ou str() ou repr() selon les cas).
-- Alain.
Ajouter un str(x) ferait l'affaire, trivial, par contre en effet on perd les capacités de formatage (et de la richesse du paramétrage de format). A voir selon l'usage et la lourdeur potentielle des {{{ }}} dans les écritures.
Laurent Claessens
Ajouter un str(x) ferait l'affaire, trivial, par contre en effet on perd les capacités de formatage (et de la richesse du paramétrage de format). A voir selon l'usage et la lourdeur potentielle des {{{ }}} dans les écritures.
Effectivement. Dans le problème réel, c'est plutôt r"MyCommand{0.jambon}{0.oeuf}".format(x)
où x est un objet de type perso et x.jambon est un string et x.oeuf est un nombre.
Je vais plutôt mettre les doubles crochets.
Merci Laurent
Ajouter un str(x) ferait l'affaire, trivial, par contre en effet on perd les
capacités de formatage (et de la richesse du paramétrage de format). A voir
selon l'usage et la lourdeur potentielle des {{{ }}} dans les écritures.
Effectivement. Dans le problème réel, c'est plutôt
r"MyCommand{0.jambon}{0.oeuf}".format(x)
où x est un objet de type perso et x.jambon est un string et x.oeuf est
un nombre.
Ajouter un str(x) ferait l'affaire, trivial, par contre en effet on perd les capacités de formatage (et de la richesse du paramétrage de format). A voir selon l'usage et la lourdeur potentielle des {{{ }}} dans les écritures.
Effectivement. Dans le problème réel, c'est plutôt r"MyCommand{0.jambon}{0.oeuf}".format(x)
où x est un objet de type perso et x.jambon est un string et x.oeuf est un nombre.