IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation (La)TeX avancée Discussion :

Macro pour afficher le code source et son résultat


Sujet :

Programmation (La)TeX avancée

  1. #1
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut Macro pour afficher le code source et son résultat
    Bonjour

    Je suis à la recherche d'une macro me permettant d'afficher facilement du code source et le résultat qu'il est sensé donner.

    Je suis tombé sur une macro de unbonpetit, qui marche (presque) parfaitement. La voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    \makeatletter
     
    \newcommand\make@car@active[1]{%
    	\catcode`#1\active
    	\begingroup
    		\lccode`\~`#1\relax
    		\lowercase{%
    	\endgroup\def~}}
     
    \newif\if@shownumline
    \newif\if@compil
    \newcount\code@line
    \newcommand*\shownumline{\@shownumlinetrue}
    \newcommand*\hidenumline{\@shownumlinefalse}
    \hidenumline
     
    \newcommand\showcode{\@ifstar{\@compilfalse\showcode@i}{\@compiltrue\showcode@i}}
     
    \newcommand\showcode@i{%
    	\begingroup
    	\parskip\z@\parindent\z@
    	\code@line\z@
    	\@makeother\;\@makeother\!\@makeother\?\@makeother\:%
    	\showcode@}
     
    \newcommand\showcode@[2][50]{%
    	\medbreak\noindent
    	\begingroup
    		\let\do\@makeother\dospecials
    		\make@car@active\ { {}}%
    		\make@car@active\^^M{\par\leavevmode}%
    		\make@car@active\,{\leavevmode\kern\z@\string,}%
    		\make@car@active\-{\leavevmode\kern\z@\string-}%
    		\showcode@@{#1}{#2}}
     
    \newcommand\showcode@@[3]{%
    	\def\@tempa##1#3{\showcode@@@{#1}{#2}{##1}}%
    	\@tempa}
     
    \newcommand\showcode@@@[3]{%
    	\xdef\the@code{#3}%
    	\endgroup
    		\vskip0.5ex
    		\boxput*(0,1)
    			{\fboxsep\z@
    			\hbox{\colorbox{white}{\leavevmode\kern0.25em{\bfseries\color{black}\footnotesize\strut#2}\kern0.25em}}%
    			}%
    			{\fboxsep5pt
    			\fbox{%
    				$\vcenter{\hsize\dimexpr
    					\if@compil0.#1\linewidth-\fboxsep-\fboxrule
    					\else\linewidth-2\fboxsep-2\fboxrule\fi\relax
    					\kern5pt\parskip0pt \ttfamily\footnotesize
    					\begingroup
    						\if@shownumline\everypar{\num@code}\fi
    						\the@code\par
    					\endgroup}%
    				\if@compil\vcenter{\kern5pt\hsize\dimexpr\linewidth-0.#1\linewidth-\fboxsep-\fboxrule\relax
    					\footnotesize\newlinechar`\^^M\everyeof{\noexpand}\scantokens{#3}}%
    				\fi$%
    				}%
    			}%
    	\medbreak
    	\endgroup}
     
    \newcommand*\num@code{\hb@xt@4pt{\hss\global\advance\code@line\@ne\tiny\number\code@line}\kern3.5pt }
     
    \makeatother
    Mais je souhaiterais y ajouter quelques modifications. Tout d'abord, il semble qu'elle ait de la peine à gérer la séparation entre les deux parties. Sur du code court, aucun souci. Mais si le code est long (par exemple un long paragraphe pour illustrer différents effets possibles sur le texte), alors le code déborde sur le résultat affiché à droite, et c'est assez gênant. Il faudrait donc pouvoir s'assurer un léger espace entre les deux parties.

    La seconde modification que je cherche à faire est davantage esthétique. J'ai parlé de la séparation des deux parties, je trouverais pratique d'avoir une fine ligne de démarcation entre les deux. De plus, j'aurais préféré le texte du titre placé à droite plutôt qu'au centre, et avec un petit logo, du genre du dièse qui sert à afficher du code sur ce même forum.

    Ces modifications sont-elles faisables?
    Un grand merci pour votre aide!

    Cordialement,
    TJ

  2. #2
    Invité
    Invité(e)
    Par défaut
    Cette question n'est pas recevable, même pour moi qui ait écrit la macro. Tu ne postes pas un ECM, tu décris des défauts que personne ne peut constater car le code posté n'est que celui de la macro.

    Je rappelle donc la règle de base : toujours poster un ECM qui montre les problèmes rencontrés.

    Enfin, je te signale que le package "showexpl" gère l'affichage du code et du résultat, bien mieux que ma macro tout en étant très paramétrable. Il me semble judicieux que tu t'orientes vers lui.

  3. #3
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Mhmm oui en effet, c'est pas terrible.

    Bon, je vais m'orienter vers ce package, et voir si j'y trouve mon bonheur. Si ce n'est pas le cas, je reviendrai avec une question plus précise et mieux posée.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Third Joker Voir le message
    En attendant, vous pouvez effacer cette discussion.
    Je ne suis pas modérateur
    Par contre, j'aurais dû te signaler le package "showexpl" avant, mais j'en avais oublié l'existence...

  5. #5
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Je suis en train de regarder, mais je n'y comprends pas grand chose. Ca semble utiliser le package listings, que j'ai déjà essayé sans succès. Impossible d'avoir une "simple" fonction
    \showcode{le code que je veux afficher}
    et qui m'affiche correctement le code source à gauche, et le résultat à droite. Je ne comprends pas comment je dois écrire pour avoir ce que je veux.

    Ta macro est quasi parfaite, j'aurais juste voulu la paramétrer un peu.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Third Joker Voir le message
    Ta macro est quasi parfaite, j'aurais juste voulu la paramétrer un peu.
    Bon, et l'ECM ?

  7. #7
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Le voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    \documentclass[10pt,a4paper]{book}
    \usepackage[utf8]{inputenc}
    \usepackage[francais]{babel}
    \usepackage{boites}
    \usepackage{geometry}
    \usepackage{fancybox}
    \usepackage{xcolor}
     
     
    \makeatletter
     
    \newcommand\make@car@active[1]{%
    	\catcode`#1\active
    	\begingroup
    		\lccode`\~`#1\relax
    		\lowercase{%
    	\endgroup\def~}}
     
    \newif\if@shownumline
    \newif\if@compil
    \newcount\code@line
    \newcommand*\shownumline{\@shownumlinetrue}
    \newcommand*\hidenumline{\@shownumlinefalse}
    \hidenumline
     
    \newcommand\showcode{\@ifstar{\@compilfalse\showcode@i}{\@compiltrue\showcode@i}}
     
    \newcommand\showcode@i{%
    	\begingroup
    	\parskip\z@\parindent\z@
    	\code@line\z@
    	\@makeother\;\@makeother\!\@makeother\?\@makeother\:%
    	\showcode@}
     
    \newcommand\showcode@[2][50]{%
    	\medbreak\noindent
    	\begingroup
    		\let\do\@makeother\dospecials
    		\make@car@active\ { {}}%
    		\make@car@active\^^M{\par\leavevmode}%
    		\make@car@active\,{\leavevmode\kern\z@\string,}%
    		\make@car@active\-{\leavevmode\kern\z@\string-}%
    		\showcode@@{#1}{#2}}
     
    \newcommand\showcode@@[3]{%
    	\def\@tempa##1#3{\showcode@@@{#1}{#2}{##1}}%
    	\@tempa}
     
    \newcommand\showcode@@@[3]{%
    	\xdef\the@code{#3}%
    	\endgroup
    		\vskip0.5ex
    		\boxput*(0,1)
    			{\fboxsep\z@
    			\hbox{\colorbox{white}{\leavevmode\kern0.25em{\bfseries\color{black}\footnotesize\strut#2}\kern0.25em}}%
    			}%
    			{\fboxsep5pt
    			\fbox{%
    				$\vcenter{\hsize\dimexpr
    					\if@compil0.#1\linewidth-\fboxsep-\fboxrule
    					\else\linewidth-2\fboxsep-2\fboxrule\fi\relax
    					\kern5pt\parskip0pt \ttfamily\footnotesize
    					\begingroup
    						\if@shownumline\everypar{\num@code}\fi
    						\the@code\par
    					\endgroup}%
    				\if@compil\vcenter{\kern5pt\hsize\dimexpr\linewidth-0.#1\linewidth-\fboxsep-\fboxrule\relax
    					\footnotesize\newlinechar`\^^M\everyeof{\noexpand}\scantokens{#3}}%
    				\fi$%
    				}%
    			}%
    	\medbreak
    	\endgroup}
     
    \newcommand*\num@code{\hb@xt@4pt{\hss\global\advance\code@line\@ne\tiny\number\code@line}\kern3.5pt }
     
    \makeatother
     
    \begin{document}
    \showcode{L'emphase}|
    Ce texte comporte des mots \textit{en italique} 
    et des mots \emph{emphatisés}. La différence 
    est invisible. \textit{Jusqu'à ce que vous écriviez 
    tout en italique, où vous verrez que maintenant,
     un mot en \textit{italique} reste tel quel alors
      qu'un mot \emph{emphatisé} se redresse.}|
    \end{document}

    Au passage, comme je t'en avais déjà parlé, serait-il possible de rajouter une option (par exemple \showcode*) qui n'affiche que le code source (sans le résultat) avec le même design, et qui ne prend pas toute la longueur de la page, mais seulement la longueur des lignes de code? Ca serait vraiment parfait !

  8. #8
    Invité
    Invité(e)
    Par défaut
    La macro est corrigée sauf sur ta requête consternante l'adaptation des longueurs de ligne où c'est toi (et personne ne peut le faire à ta place) d'écrire des lignes de la bonne longueur, c'est le principe du verbatim. Sinon, ce n'est plus du verbatim ! Tu peux aussi utiliser l'argument optionnel pour changer le partage 50/50 entre le code et le résultat. Enfin, en typographie, on dit « souligner » et non pas « emphatiser » qui est horrible et donc rarement employé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    \documentclass{article}
    \usepackage[utf8]{inputenc}
    \usepackage[frenchb]{babel}
    \usepackage{geometry,fancybox}
    \makeatletter
    \newcommand\make@car@active[2][\def]{%
    	\catcode`#2\active
    	\begingroup
    		\lccode`\~`#2\relax
    		\lowercase{%
    	\endgroup#1~}%
    }
     
    \newif\if@shownumline
    \newif\if@compil
    \newcount\code@line
    \newcommand*\shownumline{\@shownumlinetrue}
    \newcommand*\hidenumline{\@shownumlinefalse}
    \hidenumline
     
    \newcommand\showcode{\@ifstar{\@compilfalse\showcode@i}{\@compiltrue\showcode@i}}
     
    \newcommand\showcode@i{%
    	\begingroup
    	\parskip\z@\parindent\z@
    	\code@line\z@
    	\@makeother\;\@makeother\!\@makeother\?\@makeother\:%
    	\showcode@
    }
     
    \newcommand\showcode@[2][50]{%
    	\medbreak\noindent
    	\begingroup
    		\let\do\@makeother\dospecials
    		\make@car@active[\let]\ \space
    		\make@car@active\^^M{\par\leavevmode}%
    		\make@car@active\,{\leavevmode\kern\z@\string,}%
    		\make@car@active\-{\leavevmode\kern\z@\string-}%
    		\showcode@@{#1}{#2}%
    }
     
    \newcommand\showcode@@[3]{%
    		\def\@tempa##1#3{\showcode@@@{#1}{#2}{##1}}%
    		\@tempa
    }
     
    \newcommand\showcode@@@[3]{%
    		\xdef\the@code{#3}%
    	\endgroup
    		\fboxsep5pt
    		\medbreak
    		\hbox{%
    			\vrule width\fboxrule
    			\vtop{%
    				\vbox{%
    					\hbox to\linewidth{%
    						\leaders\hrule height\fboxrule\hskip2em \kern.25em
    						\setbox\z@\hbox{\small\bfseries\# #2}\ht\z@\z@\lower.5ex \box\z@
    						\kern.25em \leaders\hrule height\fboxrule\hfil
    						}%
    					\kern\fboxsep
    					\hbox{%
    						\kern\fboxsep
    						$\vcenter{%
    							\hsize\dimexpr
    							\if@compil0.#1\linewidth-2\fboxsep-2\fboxrule
    							\else\linewidth-2\fboxsep-2\fboxrule\fi\relax
    							\parskip\z@\ttfamily\footnotesize
    							\begingroup
    								\if@shownumline\everypar{\num@code}\fi
    								\the@code\par
    							\endgroup
    						}%
    						\if@compil
    							\kern\fboxsep\vrule width\fboxrule\kern\fboxsep
    							\vcenter{%
    								\hsize\dimexpr\linewidth-0.#1\linewidth-2\fboxsep-2\fboxrule\relax
    								\footnotesize\newlinechar`\^^M\everyeof{\noexpand}%
    								\tolerance5000 \emergencystretch.1\hsize\hfuzz.5pt\scantokens{#3}%
    							}%
    						\fi$%
    						\kern\fboxsep
    					}%
    				}%
    				\kern\fboxsep
    				\hrule height\fboxrule
    			}%
    			\vrule width\fboxrule
    		}%
    	\medbreak
    	\endgroup
    }
     
    \newcommand*\num@code{\hb@xt@4pt{\hss\global\advance\code@line\@ne\tiny\number\code@line}\kern3.5pt }
    \makeatother
    \begin{document}
    \showcode{L'emphase}|
    Ce texte comporte des mots \textit{en
    italique} et des mots \emph{soulignés}.
    La différence est invisible. \textit{Jusqu'à
    ce que vous écriviez tout en italique, où
    vous verrez que maintenant, un mot en
    \textit{italique} reste tel quel alors qu'un
    mot \emph{souligné} se redresse.}|
     
    \showcode[55]{L'emphase}|
    Ce texte comporte des mots \textit{en italique} 
    et des mots \emph{soulignés}. La différence 
    est invisible. \textit{Jusqu'à ce que vous écriviez 
    tout en italique, où vous verrez que maintenant,
    un mot en \textit{italique} reste tel quel alors
    qu'un mot \emph{soulignés} se redresse.}|
     
    \showcode*{L'emphase}|
    Ce texte comporte des mots \textit{en italique} 
    et des mots \emph{soulignés}. La différence 
    est invisible. \textit{Jusqu'à ce que vous écriviez 
    tout en italique, où vous verrez que maintenant,
    un mot en \textit{italique} reste tel quel alors
    qu'un mot \emph{soulignés} se redresse.}|
    \end{document}

  9. #9
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Génial! Il m'avait semblé avoir essayer de mettre à la ligne les lignes trop longues et ça ne marchait pas. Mais j'ai du me tromper, car en effet ça marche impecc et c'est tout ce dont j'avais besoin.
    Merci pour la remise en forme, c'est nickel!

    Un immense merci!

    Juste deux dernières questions (et après, promis, j'essaie d'arrêter...):

    J'ai écrit ce code-là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    \documentclass{article}
    \usepackage[utf8]{inputenc}
    \usepackage[frenchb]{babel}
    \usepackage{geometry,fancybox}
    \makeatletter
    \newcommand\make@car@active[2][\def]{%
    	\catcode`#2\active
    	\begingroup
    		\lccode`\~`#2\relax
    		\lowercase{%
    	\endgroup#1~}%
    }
     
    \newif\if@shownumline
    \newif\if@compil
    \newcount\code@line
    \newcommand*\shownumline{\@shownumlinetrue}
    \newcommand*\hidenumline{\@shownumlinefalse}
    \hidenumline
     
    \newcommand\showcode{\@ifstar{\@compilfalse\showcode@i}{\@compiltrue\showcode@i}}
     
    \newcommand\showcode@i{%
    	\begingroup
    	\parskip\z@\parindent\z@
    	\code@line\z@
    	\@makeother\;\@makeother\!\@makeother\?\@makeother\:%
    	\showcode@
    }
     
    \newcommand\showcode@[2][50]{%
    	\medbreak\noindent
    	\begingroup
    		\let\do\@makeother\dospecials
    		\make@car@active[\let]\ \space
    		\make@car@active\^^M{\par\leavevmode}%
    		\make@car@active\,{\leavevmode\kern\z@\string,}%
    		\make@car@active\-{\leavevmode\kern\z@\string-}%
    		\showcode@@{#1}{#2}%
    }
     
    \newcommand\showcode@@[3]{%
    		\def\@tempa##1#3{\showcode@@@{#1}{#2}{##1}}%
    		\@tempa
    }
     
    \newcommand\showcode@@@[3]{%
    		\xdef\the@code{#3}%
    	\endgroup
    		\fboxsep5pt
    		\medbreak
    		\hbox{%
    			\vrule width\fboxrule
    			\vtop{%
    				\vbox{%
    					\hbox to\linewidth{%
    						\leaders\hrule height\fboxrule\hskip2em \kern.25em
    						\setbox\z@\hbox{\small\bfseries\# #2}\ht\z@\z@\lower.5ex \box\z@
    						\kern.25em \leaders\hrule height\fboxrule\hfil
    						}%
    					\kern\fboxsep
    					\hbox{%
    						\kern\fboxsep
    						$\vcenter{%
    							\hsize\dimexpr
    							\if@compil0.#1\linewidth-2\fboxsep-2\fboxrule
    							\else\linewidth-2\fboxsep-2\fboxrule\fi\relax
    							\parskip\z@\ttfamily\footnotesize
    							\begingroup
    								\if@shownumline\everypar{\num@code}\fi
    								\the@code\par
    							\endgroup
    						}%
    						\if@compil
    							\kern\fboxsep\vrule width\fboxrule\kern\fboxsep
    							\vcenter{%
    								\hsize\dimexpr\linewidth-0.#1\linewidth-2\fboxsep-2\fboxrule\relax
    								\footnotesize\newlinechar`\^^M\everyeof{\noexpand}%
    								\tolerance5000 \emergencystretch.1\hsize\hfuzz.5pt\scantokens{#3}%
    							}%
    						\fi$%
    						\kern\fboxsep
    					}%
    				}%
    				\kern\fboxsep
    				\hrule height\fboxrule
    			}%
    			\vrule width\fboxrule
    		}%
    	\medbreak
    	\endgroup
    }
     
    \newcommand*\num@code{\hb@xt@4pt{\hss\global\advance\code@line\@ne\tiny\number\code@line}\kern3.5pt }
    \makeatother
    \begin{document}
    \showcode{La taille du texte}|
    \Huge{Maximal}\\
    \huge{Enorme}	\\
    \LARGE{Très grand}\\
    \Large{Plus grand}\\
    \large{Grand}\\
    \normalsize{Normal}\\
    \small{Petit}\\
    \footnotesize{Plus petit (note de bas de page)}\\
    \scriptsize{Très petit}\\
    \tiny{Minuscule}\\
    |
    \end{document}
    Y a-t-il un moyen de rendre les lignes correspondantes alignées horizontalement? Car il est un peu difficile de s'y retrouver, ce n'est pas très esthétique. Et je suis obligé d'écrire les retraits à la ligne (\\), ce qui est un peu dommage. Si une astuce existe, je suis preneur. Sinon tant pis.

    Et question bête, quel est le code pour créer une boite qui a exactement la même forme que celles-ci (donc cadre noir avec un titre sur la gauche), de manière générale? Car parfois, pour des questions de mise en page, je vais devoir "tricher", et j'aimerais bien pouvoir faire une boite similaire, avec n'importe quel contenu dedans. Et je n'arrive pas à trouver...
    Du genre une \fbox avec une minipage dedans, mais avec en plus la possibilité d'insérer le titre dans le cadre... Est-ce compréhensible?

    Merci merci merci!

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Third Joker Voir le message
    Y a-t-il un moyen de rendre les lignes correspondantes alignées horizontalement?
    Tu ne comprends pas que TeX n'a pas la faculté de lire dans tes pensées. Ta demande, si tu y réfléchis, est absurde car rien ne dit qu'une ligne de code produit une ligne de texte (on peut très bien avoir du code qui ne produit rien à l'affichage). Donc, tu dois mettre un \par (et surtout pas un \\) après chaque ligne.

    Enfin, les commandes de changement de taille ne sont pas des commandes à argument, tu les utilises mal. Tu dois écrire :
    Citation Envoyé par Third Joker Voir le message
    Et question bête, quel est le code pour créer une boite qui a exactement la même forme que celles-ci (donc cadre noir avec un titre sur la gauche), de manière générale?
    Il n'y a rien de difficile à créer une telle macro mais si tu mets des contenus prenant de la place verticalement, ces boites pourront laisser de grands espaces vides car elles sont insécables. Le mieux est de programmer des boites sécables, c'est-à-dire pouvant franchir des sauts de pages. Mais c'est une autre paires de manche.

  11. #11
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    Tu ne comprends pas que TeX n'a pas la faculté de lire dans tes pensées. Ta demande, si tu y réfléchis, est absurde car rien ne dit qu'une ligne de code produit une ligne de texte (on peut très bien avoir du code qui ne produit rien à l'affichage). Donc, tu dois mettre un \par (et surtout pas un \\) après chaque ligne.
    Je comprends bien qu'il ne peut pas deviner (je suis quand même pas SI bête hein ). Je sais bien qu'une ligne de code n'équivaut pas à une ligne de texte. Simplement l'effet rendu n'est pas idéal en l'état, et j'aurais voulu le rendre plus lisible. Mais c'est pas bien grave.
    Je n'ai jamais compris cette histoire comme quoi il est déconseillé d'écrire \\ pour mettre à la ligne, mais qu'il faut préférer \par. Certains disent que c'est équivalent, d'autres non. Moi, tout ce que je constate, c'est que le rendu est exactement le même...

    Enfin, les commandes de changement de taille ne sont pas des commandes à argument, tu les utilises mal. Tu dois écrire :
    [code]{\huge Énorme\par}
    Ah oui en effet. J'ai toujours cru que c'était avec argument (ce que j'aurais trouvé plus simple d'ailleurs...). Mais comme je ne les utilise en fait jamais, je ne me suis jamais rendu compte que je les écrivais mal. Merci!

    Il n'y a rien de difficile à créer une telle macro mais si tu mets des contenus prenant de la place verticalement, ces boites pourront laisser de grands espaces vides car elles sont insécables. Le mieux est de programmer des boites sécables, c'est-à-dire pouvant franchir des sauts de pages. Mais c'est une autre paires de manche.
    Mhmm... je vois le souci. Mais bon, le truc c'est que si tu me codes une macro pour ça, ça risque de faire comme tout le reste, je pourrai l'utiliser, mais je ne comprendrai pas comment ça marche, et du coup je ne pourrai pas la modifier en cas de besoin. Et surtout je ne progresserai pas vraiment dans ma compréhension du code. Moi j'aurais aimé pouvoir simplement comprendre comment tu fais pour créer un encadré autour d'un texte, avec une ligne discontinue qui permet d'y insérer un texte. Sans forcément en faire une macro, mais juste un code unique, qui crée une boite une fois.
    J'arrive à créer une minibox entourée d'un cadre noir (ouais j'sais je suis trop fort... ) mais si j'ai envie d'y ajouter un titre comme pour les autres, ben là je sèche.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Third Joker Voir le message
    Je n'ai jamais compris cette histoire comme quoi il est déconseillé d'écrire \\ pour mettre à la ligne, mais qu'il faut préférer \par. Certains disent que c'est équivalent, d'autres non.
    On ne doit jamais utiliser "\\" à part dans les tableaux. Pour former un paragraphe (et donc en commencer un autre), on utilise la primitive \par.

    Ceux qui disent que "\\" et "\par" sont équivalent disent n'importe quoi ou ne comprennent pas ce que fait la macro "\\".

    Citation Envoyé par Third Joker Voir le message
    Moi, tout ce que je constate, c'est que le rendu est exactement le même...
    Et bien, je trouve que tu t'avances beaucoup et que tu parles trop vite. Le rendu n'est pas le même, ne serait-ce qu'au point de vue de l'indentation, de \parskip et de \everypar.

    Et quand bien même le rendu est le même, cela ne signifie pas que deux codes sont équivalents.

    Ainsi, les codes
    \def\foo{\char97\relax}\foo
    et
    a
    produisent tous les deux un "a" et pourtant, ces deux codes ne sont absolument pas équivalents.

    Citation Envoyé par Third Joker Voir le message
    Mhmm... je vois le souci. Mais bon, le truc c'est que si tu me codes une macro pour ça, ça risque de faire comme tout le reste, je pourrai l'utiliser, mais je ne comprendrai pas comment ça marche, et du coup je ne pourrai pas la modifier en cas de besoin. Et surtout je ne progresserai pas vraiment dans ma compréhension du code. Moi j'aurais aimé pouvoir simplement comprendre comment tu fais pour créer un encadré autour d'un texte, avec une ligne discontinue qui permet d'y insérer un texte. Sans forcément en faire une macro, mais juste un code unique, qui crée une boite une fois.
    J'arrive à créer une minibox entourée d'un cadre noir (ouais j'sais je suis trop fort... ) mais si j'ai envie d'y ajouter un titre comme pour les autres, ben là je sèche.
    Bon. Mais que veux-tu vraiment, à part tout comprendre tout de suite et être capable de tout reproduire et modifier (ce qui me semble hors de ta portée) ?

  13. #13
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    On ne doit jamais utiliser "\\" à part dans les tableaux. Pour former un paragraphe (et donc en commencer un autre), on utilise la primitive \par.

    Ceux qui disent que "\\" et "\par" sont équivalent disent n'importe quoi ou ne comprennent pas ce que fait la macro "\\".
    C'est sans doute le cas de beaucoup de monde...

    Et bien, je trouve que tu t'avances beaucoup et que tu parles trop vite.
    Oh ça sans doute. Mais on est pas tous experts, et tu reconnaitrais que latex a un côté assez déroutant quand on va dans le détail. Pour faire des codes parfaitement propres, avec les bonnes commandes aux bons endroits, ça prend du temps. Pour l'instant, je tâtonne tant bien que mal, et j'essaie déjà d'avoir des documents qui ont plus ou moins la gueule que j'attends.

    Le rendu n'est pas le même, ne serait-ce qu'au point de vue de l'indentation, de \parskip et de \everypar.
    Je ne connais pas ces commandes. Mais quoi qu'il en soit, j'en prends note et j'utiliserai la bonne commande à l'avenir.

    Et quand bien même le rendu est le même, cela ne signifie pas que deux codes sont équivalents.

    Ainsi, les codes
    \def\foo{\char97\relax}\foo
    et
    a
    produisent tous les deux un "a" et pourtant, ces deux codes ne sont absolument pas équivalents.
    Ok. Mais les différences profondes, je ne peux pas les deviner.

    Bon. Mais que veux-tu vraiment, à part tout comprendre tout de suite et être capable de tout reproduire et modifier (ce qui me semble hors de ta portée) ?
    Ben j'aimerais bien ne pas me contenter de faire du copier-coller aveugle. Ce n'est pas très constructif dans mon avancée. Tout comprendre tout de suite, certainement pas. Mais si à chaque fois que j'ai besoin d'un truc un tout petit peu original, j'ai besoin qu'on écrive mon code à ma place, sans rien comprendre, c'est nul.

    Alors après je n'ai peut-être pas la bonne façon de penser mes problèmes, la philosophie sous-jacente à latex ne vient pas d'un coup. Mais là, j'essaie juste de comprendre comment on peut créer une boite avec un joli cadre, avec un peu n'importe quel contenu dedans.
    Tu me diras sans doute que justement, le contenu de la boite dépend de ce qu'on y met. Auquel cas ben je ne peux pas préciser, je ne sais pas encore.
    Mais à priori, je me dirigerais vers une minipage, qui semble pouvoir accueillir un peu n'importe quoi dedans, et y rajouter des options pour poser mes traits noirs comme je l'entends. C'est très approximatif, je sais, mais je n'ai pas d'idée précise. J'ai juste envie de comprendre un peu comment ça fonctionne pour ensuite faire moi-même des tests et voir ce que ça donne, jusqu'à trouver une forme qui me convienne.

    Je ne veux donc pas que tu m'écrives un manuel, il suffit peut-être de me renvoyer au bon endroit dans une documentation, mais j'ai déjà cherché et je m'y perds un peu, je ne sais même pas où chercher pour trouver une bonne solution.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Third Joker Voir le message
    Oh ça sans doute. Mais on est pas tous experts, et tu reconnaitrais que latex a un côté assez déroutant quand on va dans le détail
    Pas LaTeX, TeX qui est le langage sous-jacent.

    Citation Envoyé par Third Joker Voir le message
    Je ne connais pas ces commandes. Mais quoi qu'il en soit, j'en prends note et j'utiliserai la bonne commande à l'avenir.
    Allons, allons, ne me dis pas que tu ne connais pas l'indentation en début de paragraphe. Je te laisse constater sur cet ECM que "\par" et "\\" n'ont pas le même rendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    \documentclass{article}
    \begin{document}
    Bla Bla Bla\par
    Bla Bla Bla
    \bigskip
     
    Bla Bla Bla\\
    Bla Bla Bla
    \end{document}

    Citation Envoyé par Third Joker Voir le message
    Ben j'aimerais bien ne pas me contenter de faire du copier-coller aveugle. Ce n'est pas très constructif dans mon avancée. Tout comprendre tout de suite, certainement pas. Mais si à chaque fois que j'ai besoin d'un truc un tout petit peu original, j'ai besoin qu'on écrive mon code à ma place, sans rien comprendre, c'est nul.
    Ce n'est que mon avis, mais vouloir commencer à écrire du code non trivial en TeX alors que tu ne connais même pas les primitives ni leur façon de fonctionner est voué à l'échec.

    Apprendre les primitives puis commencer à écrire du code me parait plus raisonnable ou tout du moins, plus logique comme approche. Autrement dit, comme dans n'importe quel langage, il y a pas mal de boulot avant de prétendre devenir autonome. Désolé si cette vérité intangible ne plait pas.

    Citation Envoyé par Third Joker Voir le message
    comment on peut créer une boite avec un joli cadre, avec un peu n'importe quel contenu dedans.
    Il n'y a rien de plus simple ni de plus logique :
    • tracer une réglure de la largeur totale ;
    • insérer de l'espace vertical (\fboxsep) ;
    • insérer le contenu de la boite et mettant à gauche et à droite de l'espace horizontal (\fboxsep) ;
    • insérer de l'espace vertical (\fboxsep) ;
    • tracer une réglure de la largeur totale.


    Enfin, à gauche et à droite de la boite obtenue, tracer des réglures verticales de la hauteur totale.

    Citation Envoyé par Third Joker Voir le message
    il suffit peut-être de me renvoyer au bon endroit dans une documentation, mais j'ai déjà cherché et je m'y perds un peu, je ne sais même pas où chercher pour trouver une bonne solution.
    Pour en savoir plus sur les primitives de boites, de réglures et d'espacement, je t'ai déjà donné ce qu'il faut lire.

    Pour en revenir à ta boite magique, comment faire si le titre de la boite est plus long que le contenu de la boite comme dans :
    \titlebox{Titre très long}{contenu}

    EDIT : pour que ce fil trouve une solution au plus vite, j'ai compris que tu veux une boite avec un titre qui se met dans la réglure haute.
    Mais il manque des précisions importantes :
    • cette boite doit-elle recevoir du matériel horizontal ou vertical ? Ou bien souhaites-tu choisir selon une syntaxe à inventer ?
    • si c'est pour du matériel vertical, souhaites-tu choisir la largeur totale ou cela doit-il être \linewidth ?
    • cette boite a-t-elle vocation à être insérée dans du texte ou est-elle utilisée pour remplir toute la larguer de la page ?
    • si tu veux qu'elle prenne place dans une ligne de texte et que la boite reçoit du matériel vertical, comment doivent se faire les alignements des lignes de base : sur la plus haute ligne de la boite ou sur la plus basse ?
    Dernière modification par Invité ; 13/07/2013 à 19h05.

  15. #15
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    Pas LaTeX, TeX qui est le langage sous-jacent.
    Je n'ai jamais compris la différence, et pourtant c'est pas faute d'avoir essayé en lisant des trucs. Cette subtilité m'échappe. De mon point de vue, j'ai un programme, je tape du code dedans, je compile et ça me donne un rendu. J'en suis là. La différence entre TeX, LaTeX, pdfTex, pdfLaTeX, LaTeXe2, etc. j'y comprends rien du tout. Pour moi c'est tout la même chose (même si je sais que c'est pas le cas).

    Allons, allons, ne me dis pas que tu ne connais pas l'indentation en début de paragraphe. Je te laisse constater sur cet ECM que "\par" et "\\" n'ont pas le même rendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    \documentclass{article}
    \begin{document}
    Bla Bla Bla\par
    Bla Bla Bla
    \bigskip
     
    Bla Bla Bla\\
    Bla Bla Bla
    \end{document}
    C'est les commandes \parskip et \everypar que je ne connais pas. Mais effectivement, ça ne fait pas la même chose. Je soupçonne d'ailleurs fortement que c'est à cause de ce genre de confusion crasse que je me suis retrouvé avec des "réactions" du rendu que je ne comprenais pas, genre des espace ou retraits non désirés. C'est le problème classique du "Je comprends pas, latex me donne n'importe quoi!" alors qu'en fait il fait très exactement ce qu'on lui dit de faire, c'est l'utilisateur qui fait n'imp...


    Ce n'est que mon avis, mais vouloir commencer à écrire du code non trivial en TeX alors que tu ne connais même pas les primitives ni leur façon de fonctionner est voué à l'échec.
    Je suis on ne peut plus d'accord, mais je ne peux pas savoir que c'est non trivial. Ce que je cherche à faire ici ne me semble pas totalement farfelu. Et au risque de te faire dresser les cheveux sur la tête, je fais partie des nombreux usagers qui viennent de Word, où en bidouillant un peu tu obtiens assez vite ce que tu veux (mais en moche). Autant j'adore latex, autant parfois des choses somme toute assez simples dans l'idée s'avèrent assez compliquées à mettre en place. Et comme je ne connais pas à l'avance le degré de complexité du code que j'essaie de réaliser, ça explique pourquoi j'essaie de le faire moi-même. Et je me casse un peu les dents.
    [/quote]

    Apprendre les primitives puis commencer à écrire du code me parait plus raisonnable ou tout du moins, plus logique comme approche. Autrement dit, comme dans n'importe quel langage, il y a pas mal de boulot avant de prétendre devenir autonome. Désolé si cette vérité intangible ne plait pas.
    Elle me va très bien, et je suis patient. Simplement, c'est parfois un peu rageant de vouloir faire un truc en apparence tout simple sans avoir aucune idée de comment y arriver.
    Mais je ne demande qu'à y aller par étapes.

    Il n'y a rien de plus simple ni de plus logique :
    • tracer une réglure de la largeur totale ;
    • insérer de l'espace vertical (\fboxsep) ;
    • insérer le contenu de la boite et mettant à gauche et à droite de l'espace horizontal (\fboxsep) ;
    • insérer de l'espace vertical (\fboxsep) ;
    • tracer une réglure de la largeur totale.


    Enfin, à gauche et à droite de la boite obtenue, tracer des réglures verticales de la hauteur totale.
    Ben ça tu vois, ça ressemble beaucoup plus à ce que je recherche comme info. Face à ce problème (ou à d'autres), je ne sais même pas par où l'empoigner. Est-ce que je crée une boite et ensuite je mets des lignes? Est-ce que je crée des lignes, que je mets dans des boites, et que je positionne? Quel genre de boite dois-je créer ? Est-ce que... Je suis paumé. Du coup ce genre d'approche par étapes peut sans doute m'aider à y voir plus clair sur la façon dont je devrais m'y prendre, même si très vite je serai quand même dépassé, et que j'aurai besoin d'aide. Mais au moins je comprendrai dans les grandes lignes ce qui se passe.

    Pour en savoir plus sur les primitives de boites, de réglures et d'espacement, je t'ai déjà donné ce qu'il faut lire.
    Oui, il faut que je m'attaque sérieusement à cette dimension technique, sans quoi je ne m'en sortirai pas.

    Pour en revenir à ta boite magique, comment faire si le titre de la boite est plus long que le contenu de la boite comme dans :
    \titlebox{Titre très long}{contenu}
    Ben je dirais qu'à partir d'une certaine longueur (par exemple la moitié ou les 2/3 de la page), il met le titre sur deux lignes, la seconde entrant un peu dans la boite. Ca me semble être une bonne idée. Toute autre suggestion esthétique est bienvenue.

    EDIT : pour que ce fil trouve une solution au plus vite, j'ai compris que tu veux une boite avec un titre qui se met dans la réglure haute.
    Mais il manque des précisions importantes :
    • cette boite doit-elle recevoir du matériel horizontal ou vertical ? Ou bien souhaites-tu choisir selon une syntaxe à inventer ?
    • si c'est pour du matériel vertical, souhaites-tu choisir la largeur totale ou cela doit-il être \linewidth ?
    • cette boite a-t-elle vocation à être insérée dans du texte ou est-elle utilisée pour remplir toute la larguer de la page ?
    • si tu veux qu'elle prenne place dans une ligne de texte et que la boite reçoit du matériel vertical, comment doivent se faire les alignements des lignes de base : sur la plus haute ligne de la boite ou sur la plus basse ?
    Bon. Alors.
    1) Je ne sais pas trop, je ne suis pas certain de voir ce que tu entends par du contenu horizontal ou vertical. À vrai dire, j'imaginais un peu une boite qui me permette de mettre n'importe quoi, autant une simple ligne de texte que du texte sur plusieurs paragraphes, des listes, des tableaux, des images, du verbatim (bon ça je sais que c'est la m... donc c'est en option), etc. Raison pour laquelle j'ai pensé à la minipage, qui si j'ai bien compris permet de mettre à peu près tout dedans, même des notes de bas de page. Cette solution me semblait donc bonne car justement très souple dans les possibilités de contenu qu'elle offre.
    2) J'apprécierais de pouvoir choisir la largeur. Pour un contenu de petite taille, je n'ai pas envie que mon cadre prenne toute la largeur de la page.
    3) Euh... j'ai un peu l'impression que c'est la même question Mais non, je dirais que c'est hors du reste du texte. Imaginons par exemple quelque chose de très simple, comme un texte explicatif de quelque chose, et ensuite j'ai envie d'ajouter une remarque. J'utilise donc cette boite, avec "Remarque" comme titre, et le contenu de ma remarque dedans. Cette boite serait donc comme un nouveau paragraphe, séparé de ce qu'il y a avant et après, mais encadré (tu vois, ce c'est pas de très haute ambition ).
    4) Je ne suis pas certain de me retrouver dans ce cas de figure. Ce qui pourrait arriver, c'est que je souhaite la placer à gauche ou à droite d'un texte, avec le texte qui "glisse" à côté. Comme on peut le voir souvent avec des images qui sont à l'intérieur du texte, celui-ci "encadrant l'image.
    Mais bon, j'imagine que ça demande un paramétrage spécial, et ce n'est pas le cas standard.

    Voilà, j'espère que c'est plus clair et que tu as suffisamment d'informations. Dis-moi si tel n'est pas le cas.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Third Joker Voir le message
    Je n'ai jamais compris la différence
    J'ai déjà répondu à cette question ici. LaTeX est un format, c'est-à-dire un ensemble de macros (écrites en TeX) et précompilées.

    Citation Envoyé par Third Joker Voir le message
    Est-ce que je crée une boite et ensuite je mets des lignes? Est-ce que je crée des lignes, que je mets dans des boites, et que je positionne? Quel genre de boite dois-je créer ?
    TeX ne sait tracer que des réglures, c'est-à-dire des rectangles remplis de noir. Pour encadrer une boite, il est donc évident qu'il faut tracer les 4 réglures une à une, exactement comme toi sur une feuille avec ta règle ! Word fait exactement la même chose sauf qu'on ne peut ni le voir ni le contrôler et donc, on ne comprend rien sauf qu'il y a un bouton magique qui encadre un contenu. La philosophie de word quoi : cliquez et ne cherchez pas à comprendre.

    Citation Envoyé par Third Joker Voir le message
    1) Je ne sais pas trop, je ne suis pas certain de voir ce que tu entends par du contenu horizontal ou vertical. À vrai dire, j'imaginais un peu une boite qui me permette de mettre n'importe quoi, autant une simple ligne de texte que du texte sur plusieurs paragraphes, des listes, des tableaux, des images, du verbatim (bon ça je sais que c'est la m... donc c'est en option), etc. Raison pour laquelle j'ai pensé à la minipage, qui si j'ai bien compris permet de mettre à peu près tout dedans, même des notes de bas de page. Cette solution me semblait donc bonne car justement très souple dans les possibilités de contenu qu'elle offre.
    2) J'apprécierais de pouvoir choisir la largeur. Pour un contenu de petite taille, je n'ai pas envie que mon cadre prenne toute la largeur de la page.
    Ton 1 et ton 2 sont parfaitement contradictoire, et tu demande encore à TeX de deviner tes pensées : « n'importe quoi » oui, mais en quel mode, horizontal ou vertical ??? Si tu choisis toujours la taille, comment vas-tu choisir la taille pour encadrer un mot tel que « Bonjour » ? La taille que tu vas choisir sera forcément trop petite ou trop grande.

    Tu peux tourner le problème dans n'importe quel sens, le choix est binaire : soit tu choisis toujours la taille (et donc il s'agit d'une boite verticale, ou d'une minipage que tu affectionnes), soit tu laisse TeX adapter la taille au contenu (et c'est une boite horizontale). Tu ne peux pas échapper à ce choix.

    Citation Envoyé par Third Joker Voir le message
    Voilà, j'espère que c'est plus clair et que tu as suffisamment d'informations. Dis-moi si tel n'est pas le cas.
    Je n'ai pas assez d'information parce que tu n'as pas encore choisi entre matériel vertical et matériel horizontal.

    Je te donne ici une méthode pour tracer les 4 réglures (et les 4 espaces) autour d'une boite horizontale. Le code est assorti de commentaires et tu peux mettre un "%" en face d'une ligne pour voir quel est l'effet de sa suppression.

    Pour ton problème, j'attends ta réponse : toujours choisir la largeur ou jamais choisir la largeur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    \documentclass{article}
    \usepackage[utf8]{inputenc}
    \usepackage{lipsum}
    \def\encadre#1{%
        \hbox{% enferme dans une boite horizontale les éléments suivants :
            \vrule width\fboxrule%  1) réglure de gauche sur toute la hauteur
            \vtop{%                 2) dans un empilement vertical, mettre
                \vbox{%[*] au dessus de la ligne de base:
                    \hrule height\fboxrule% a) la réglure supérieure
                    \kern\fboxsep%          b) l'espace du haut
                    \hbox{%                 c) une boite horizontale contenant :
                        \kern\fboxsep%         i) l'espace de gauche
                        \advance\linewidth\dimexpr-2\fboxrule-2\fboxsep% enlever à \linewidth la quantité : "2*(épaisseur d'un trait) + 2*(espace inséré à gauche et à droite)"
                        #1%                    ii) le contenu
                        \kern\fboxsep%        iii) l'espace de droite
                        }%
                }%[*] au dessous de la ligne de base :
                \kern\fboxsep%             d) l'espace du bas
                \hrule height\fboxrule%    e) la réglure inférieure
            }%
            \vrule width\fboxrule% 3) la réglure droite sur toute la hauteur
        }%
    }
     
    \begin{document}
    \parindent=0pt
    Voici \encadre{des trucs encadrés} et la suite
     
    \fboxsep=0.5pt % espace entre les traits et le contenu
    \fboxrule=1.5pt % épaisseur des traits
    Voici \encadre{des trucs encadrés} et la suite
     
    Voici une minipage encadrée :
    \fboxsep=10pt % espace entre les traits et le contenu
    \fboxrule=0.5pt % épaisseur des traits
     
    \encadre{\begin{minipage}{\linewidth}\lipsum[1]\end{minipage}}
    \end{document}

  17. #17
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Ok, merci pour l'ECM! Je serais bien en peine de le refaire, mais je crois que j'ai compris tout ce qui s'y passe. C'est déjà ça...

    Pour cette question de choix, je dirais en mode horizontal, étant donné que la boite dans ton ECM semble faire tout à fait l'affaire. À ceci près que je ne saurais pas comment définir sa position sur la page. Imaginons que je fasse une minipage de .5\linewidth, comment puis-je faire pour l'avoir par exemple centrée au milieu de la page, ou à droite? Ou encadrée par du texte? Si ce genre de choses est faisable avec ce type de construction, alors c'est le modèle qu'il me faut!

    Mais je reste prudent dans ma réponse car je ne comprends pas bien les implications du choix que tu demandes.

    Si tu choisis toujours la taille, comment vas-tu choisir la taille pour encadrer un mot tel que « Bonjour » ? La taille que tu vas choisir sera forcément trop petite ou trop grande.
    Je ne comprends pas cette remarque.

    Et du coup je ne comprends pas vraiment la différence entre ces deux modes, ni les conséquences que cela implique.

    J'ai l'impression qu'avec ce que tu m'as fait, je peux déjà choisir la taille (en créant une minipage de .5\linewidth par exemple). Ca me suffit tout à fait, je n'entendais pas autre chose. Par contre, j'apprécierais de pouvoir, une fois la boite créée, la placer à des endroits particuliers (comme mentionné ci-dessus). Si c'est faisable, alors la vie est magnifique!

  18. #18
    Invité
    Invité(e)
    Par défaut
    Je ne comprends pas les problèmes que tu évoques.

    Si tu veux la centrer, la mettre à droite ou à gauche, tu as les environnements de latex (center, flushright, etc). Une boite se comporte comme un caractère.

    Par contre, TeX ne sait pas faire couler du texte autour d'une boite, c'est d'ailleurs un besoin récurrent de ce qui viennent de word et consorts et qui sont tout étonnés que cela ne soit pas possible en TeX. Aucune solution automatique n'est envisageable. Mais je te rassure, à moins de composer des pages de magazines avec plein de photos (auquel cas LaTeX est le mauvais choix), il n'y a aucun besoin de ce genre de trucs.

    Pour le mode horizontal/vertical, je ne compte pas m'avancer vers une leçon de TeX (qui serait forcément interminable, vu qu'une réponse de ma part suscite pleins de nouvelles questions de ton côté). Pas plus que pour expliquer les subtilités de la macro que j'ai postée. Encore une fois, des ouvrages contenant les réponses existent.

  19. #19
    Membre régulier Avatar de Third Joker
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Points : 111
    Points
    111
    Par défaut
    Citation Envoyé par unbonpetit Voir le message
    Par contre, TeX ne sait pas faire couler du texte autour d'une boite, c'est d'ailleurs un besoin récurrent de ce qui viennent de word et consorts et qui sont tout étonnés que cela ne soit pas possible en TeX. Aucune solution automatique n'est envisageable. Mais je te rassure, à moins de composer des pages de magazines avec plein de photos (auquel cas LaTeX est le mauvais choix), il n'y a aucun besoin de ce genre de trucs.
    Il semble que l'environnement warpfig le permette. Mais je ne sais pas si ça va poser problème, il faut que je teste.
    Et bien que je ne souhaite pas faire un document excessivement décoré, il n'est pas si rare de trouver des utilisations de cette pratique. Ne serait-ce que si j'ai envie de commencer mon texte avec la première lettre "enluminée", comme on le voit parfois. Bref, je verrai si ce package fonctionne.

    Pour le mode horizontal/vertical, je ne compte pas m'avancer vers une leçon de TeX (qui serait forcément interminable, vu qu'une réponse de ma part suscite pleins de nouvelles questions de ton côté). Pas plus que pour expliquer les subtilités de la macro que j'ai postée. Encore une fois, des ouvrages contenant les réponses existent.
    Ouais ben désolé de ne pas avoir saisi toute ta logique. Je fais ce que je peux, mais je ne suis pas informaticien, certaines choses ne sont pas évidentes pour moi.

    Bref, pour conclure ce fil, je pense que le mode horizontal est ce qu'il me faut. Ainsi, si tu pouvais compléter la macro déjà faite avec cette histoire de titre (donc depuis le coin supérieur gauche, un début de trait, genre 1 demi cm, puis la place pour le titre, variable en fonction de sa longueur, et qui se met à la ligne s'il devient trop long, puis le reste du cadre jusqu'au coin supérieur droit), ça serait fantastique! Et oublie cette histoire de choisir les dimensions. Si je conserve la possibilité de créer une minipage de la largeur que je souhaite (avec latex qui adapte la hauteur en conséquence), c'est parfait, je n'ai besoin de rien de plus.

    MERCI!

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Third Joker Voir le message
    Il semble que l'environnement warpfig le permette.
    Je sais. Il n'y a pas que lui. Mais sous certaines conditions et avec des limitations.

    Citation Envoyé par Third Joker Voir le message
    Ne serait-ce que si j'ai envie de commencer mon texte avec la première lettre "enluminée", comme on le voit parfois. Bref, je verrai si ce package fonctionne.
    Dans ce cas, c'est le package lettrine qu'il te faut, et certainement pas wrapfig !


    Citation Envoyé par Third Joker Voir le message
    Ouais ben désolé de ne pas avoir saisi toute ta logique.
    Mais c'est pourtant d'un simplicité enfantine : une boite horizontale met les choses les unes à la suite des autres horizontalement, sans jamais aller à la ligne. Un contenu un peu long dépasse donc très vite la largeur de la ligne.

    Une boite verticale a une largeur définie et y place verticalement des trucs (les trucs en question peuvent être les lignes d'un paragraphe, par exemple).

    Si tu y réfléchis, il s'agit de 2 choses très différentes.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Utiliser JQuery pour afficher un code source
    Par stc074 dans le forum jQuery
    Réponses: 0
    Dernier message: 09/04/2014, 20h18
  2. [Recherche]une API pour colorer le code source
    Par kedare dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 31/07/2006, 08h48
  3. Recherche d'une extension pour afficher du code Java
    Par Elmilouse dans le forum Mise en forme
    Réponses: 2
    Dernier message: 28/05/2006, 09h08
  4. [Sécurité] Afficher le code source PHP
    Par tigzirt dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2006, 08h42
  5. composant builder4 pour afficher du code html
    Par BranRuz dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/09/2002, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo