Contours et alignement d'une image — Les-mathematiques.net The most powerful custom community solution in the world

Contours et alignement d'une image

Bonjour à tous !

Je suis en train d’apprendre à utiliser LaTeX depuis peu, alors quoi de mieux pour s’entraîner que de recopier des modèles ?! Je tente en ce moment de passer mon CV en LaTeX, en recréant la mise en forme d’origine (créée sur Word).

En PJ, le cadre de présentation de mon CV qui me pose problème.
J’ai simplement du mal à recréer cette mise en forme, c’est pourquoi je demande votre aide !

Voici ma question :
Comment créer les bandes blanches autour de ma photo, et comment aligner les bords supérieurs et inférieurs de la photo avec la colorbox ?


Merci par avance pour votre aide,
Nathan98932

Réponses

  • Bonjour,

    Qu'avez-vous déjà écrit ? Merci de nous fournir un exemple complet minimal. Vous pouvez remplacer l'image par \rule{largeur}{hauteur} ou par example-image (cette image est présente sur toutes les distributions TeX courantes).
  • Bonjour brian,

    Voici ce que j'ai réalisé :
    \documentclass[a4]{article}        %important : je suis en classe article
    
    \begin{document}
    
    \hspace{-2.1cm}         %je supprime la marge auto de début de paragraphe
    \colorbox{orange}{         %dans la colorbox, je créé deux minipages : l'une pour la photo (alignée à droite), et l'autre pour le texte de présentation
    	\begin{minipage}{0.25\textwidth}
    	\hfill \includegraphics[width=2.5cm]{1.jpg}
    	\end{minipage}
    \hspace{0.5cm}
    	\begin{minipage}{0.85\textwidth}     %le but est d'obtenir une large bande orange, plus grande que la textwidth
    	\vfill
    	\color{white}{
    	{\Huge \textbf{Prénom \textsc{Nom}}}
    	\medskip \\
    	\begin{large}
    	Age\\
    	Adresse\\code postal \textsc{Ville}
    	\medskip \\
    	Tél. 06.00.00.00.00\\
    	Mail : test@latex.fr
    	\end{large}
    	}
    	\vfill
    	\end{minipage}
    }
    
    \end{document}
    

    Cependant je ne connais pas de commande pour réaliser petites bandes blanches autour de ma photo, et je ne sais pas s'il est possible d'aligner ma photo avec la colorbox.

    Vous remerciant par avance,

    Nathan.98940
  • Attention, ça ne compile pas. Il manque plusieurs commandes \usepackage et l'option a4 doit être remplacée par a4paper. De plus, il ne faut pas utiliser \\ en mode vertical (entre deux paragraphes) ou à la fin d'un paragraphe. Voici une possibilité :
    \documentclass[a4paper]{article}
    % Pour avoir droit à \bfseries + \scshape en même temps, cf.
    % <https://tex.stackexchange.com/questions/98576/using-scshape-and-bfseries-together>
    % et <https://tex.stackexchange.com/questions/27411/small-caps-and-bold-face>
    \usepackage{libertine}
    \usepackage{xcolor}
    \usepackage{graphicx}
    
    \begin{document}
    
    \begin{center}
    \makebox[0pt]{%
      \colorbox{orange}{% pas d'espace ici
        \hspace{2cm}%
        {\color{white}\vrule width 5pt}%
        \raisebox{-0.5\height}{\includegraphics[width=2.5cm]{example-image}}%
        {\color{white}\vrule width 5pt}%
        \hspace{0.5cm}\begin{minipage}{0.85\textwidth}
          \color{white}%
          {\Huge\bfseries Prénom \textsc{Nom}}
    
          \medskip
          \begin{large}
            Âge\\
            Adresse\\
            Code postal \textsc{Ville}\\
            Tél. 06.00.00.00.00\\
            Mail : \texttt{test@latex.fr}
          \end{large}%
        \end{minipage}%
      }% fin de la \colorbox
    }  % fin du \makebox[0pt]
    \end{center}
    
    \end{document}
    
    Il faudra peut-être mettre plusieurs \colorbox pour que l'image ne soit pas sur fond orange. Dans une \colorbox, on peut mettre une
    \begin{minipage}[<ext>][<hauteur>][<int>]{largeur}
    ...
    \end{minipage}
    
    ce qui permet d'imposer la hauteur de la minipage.

    En fait, je préfère faire cela avec un environnement tabular à une ligne et trois colonnes, en utilisant \cellcolor dans les cellules 1 et 3 :
    \documentclass[a4paper]{article}
    \usepackage{libertine}
    \usepackage[table]{xcolor}
    \usepackage{graphicx}
    
    \begin{document}
    
    \begin{center}
    \makebox[0pt]{%
      \begin{tabular}{@{} p{2cm} c p{0.85\textwidth} @{}}
        \cellcolor{orange} &
        \raisebox{-0.5\height}{\includegraphics[width=2.5cm]{example-image}} &
        \cellcolor{orange}%
        \begin{minipage}{0.85\textwidth}
          \vspace*{10pt}%
          \color{white}%
          {\Huge\bfseries Prénom \textsc{Nom}}
    
          \medskip
          \begin{large}
            Âge\\
            Adresse\\
            Code postal \textsc{Ville}\\
            Tél. 06.00.00.00.00\\
            Mail : \texttt{test@latex.fr}
          \end{large}%
          \vspace*{10pt}%
        \end{minipage}
      \end{tabular}%
    }
    \end{center}
    
    \end{document}
    
    D'ailleurs, en utilisant le package array et le type de colonne 'm', on peut se passer de la minipage. Il faut alors utiliser \newline au lieu de \\, car cette dernière terminerait une ligne du tabular. Ou bien, on peut faire \let\\=\newline comme ci-dessous (la portée du \let est limitée au groupe courant, ici défini par l'environnement 'large') :
    \documentclass[a4paper]{article}
    \usepackage{libertine}
    \usepackage[table]{xcolor}
    \usepackage{array}
    \usepackage{graphicx}
    
    \begin{document}
    
    \begin{center}
    \makebox[0pt]{%
      \begin{tabular}{@{} p{2cm} c m{0.85\textwidth} @{}}
        \cellcolor{orange} &
        %
        \raisebox{-0.5\height}{\includegraphics[width=2.5cm]{example-image}} &
        %
        \cellcolor{orange}%
        \vspace*{10pt}%
        \color{white}%
        {\Huge\bfseries Prénom \textsc{Nom}}
    
        \medskip
        \begin{large}
          \let\\=\newline           % sinon, \\ terminerait une ligne du tabular
          Âge\\
          Adresse\\
          Code postal \textsc{Ville}\\
          Tél. 06.00.00.00.00\\
          Mail : \texttt{test@latex.fr}
        \end{large}%
        \vspace*{10pt}%
      \end{tabular}%
    }
    \end{center}
    
    \end{document}
    
    Autrement, on peut utiliser TikZ.

    Edit : ajout de la troisième version et de l'accent circonflexe sur le A d'« Âge ».98964
    98966
  • Bonsoir,

    Tout d'abord, merci pour ton aide. (:P)

    Je pense avoir assez bien compris les différentes solutions proposées, même s'il s'agit en majorité de commandes auxquelles je n'avais jamais eu affaire.

    J'ai finalement choisi ta solution avec l'environnement tabular, que je vais pouvoir appliquer à mon CV :
    \documentclass[a4paper]{article}
    \usepackage{libertine}
    \usepackage{xcolor}
    \usepackage{colortbl}
    \usepackage{graphicx}
    
    \begin{document}
    
    \begin{center}
    \makebox[0pt]{%
      \begin{tabular}{@{}p{2cm}cp{1.15\textwidth}@{}}
        \cellcolor{orange} &
        \raisebox{-0.5\height}{\includegraphics[width=2.5cm, height=4cm]{example-image}} &
        \cellcolor{orange}%
        \begin{minipage}{0.85\textwidth}
          \vspace*{10pt}%
          \color{white}%
          {\Huge\bfseries Prénom \textsc{Nom}}
          
          \medskip
          \begin{large}
            Age\\
            Adresse\\
            Code postal \textsc{Ville}\\
            Tél. 06.00.00.00.00\\
            Mail : \texttt{test@latex.fr}
          \end{large}%
          \vspace*{10pt}%
        \end{minipage}
      \end{tabular}%
    }
    \end{center}
    
    \end{document}
    

    Je marque la discussion comme résolue, car mon problème est clos (encore merci !) mais j'aurai encore quelques petites questions si tu as le temps pour me répondre :
    • Quel est l'effet de \makebox[0pt] sur l'ensemble de la présentation ? J'ai remarqué que en l'enlevant, la présentation était décalée de 5 ou 6cm, mais d'après mes recherches \makebox ne sert pas à ça ... :-S
    • Au début de l'environnement \tabular, tu donnes des données sur les 3 cellules crées, mais je ne comprend pas à quoi servent les "@" ?

    Merci par avance,
    Bonne soirée,
    Nathan.98970
  • \makebox[0pt]{<...>} fabrique une \hbox (comme le \mbox de LaTeX) de largeur nulle et contenant <...>. Si l'on utilisait \makebox[0pt][l]{<...>} (resp. \makebox[0pt][r]{<...>}), <...> s'étendrait vers la droite (resp. vers la gauche) à partir de l'endroit où l'on utilise \makebox (mnémonique : c'est le bord gauche pour 'l', droit pour 'r', du contenu de la boîte qui est « ancré » à l'endroit où l'on utilise \makebox). Mais avec \makebox[0pt]{<...>} ou \makebox[0pt][c]{<...>}, le <...> affiché est centré autour de l'endroit où l'on utilise \makebox. Je te propose d'expérimenter avec quelque chose comme :
    ............X\makebox[0pt]{abc def}X............
    
    ainsi qu'avec les variantes 'l' et 'r', cela devrait t'aider à comprendre. Ceci explique bien le décalage que tu as vu. J'ai mis ça car tu as dit que tu voulais dépasser \textwidth. Sans cela, on aurait un “overfull \hbox”. Pour l'interprétation du décalage, ne pas oublier non plus qu'on est dans un environnement center.

    Quant au @{} dans le prémbule de tabular, il dit ce qui se passe entre les colonnes, ainsi qu'avant la première colonne et après la dernière. @{} tout court supprime l'espace inter-colonnes là où il est utilisé, mais par exemple @{\hspace{2cm}} remplace cet espace par un espace de 2 cm. Tu peux aussi essayer @{XXX} pour voir ce que ça fait.

    Note que j'ai ajouté des choses à mon message précédent, tu ne les as peut-être pas vues. Par rapport à ton premier message, j'ai oublié de dire : pour supprimer l'indentation d'un paragraphe, il y a \noindent (à utiliser en début de paragraphe). Pour supprimer l'indentation de tous les paragraphes dans le groupe courant : \setlength{\parindent}{0pt}.
  • Merci et bonne soirée !
  • De rien. Il y a quand même une petite bizarrerie au niveau de l'alignement vertical de la minipage qui, normalement, devrait avoir son « centre vertical » au niveau de la ligne de base. La variante en attachement ne souffre apparemment pas de ce problème, mais je ne sais pas pourquoi le code ci-dessus présente ce petit décalage vertical. Ce serait peut-être plus simple avec TikZ, in fine.98978
  • Le document ci-joint permet de voir le positionnement vertical de la minipage par rapport à la ligne de base selon les options utilisées. \begin{minipage} sans option ou \begin{minipage}[c] fait un truc un peu bizarre, je trouve ; en revanche, on a un bon centrage vertical avec :
    • \raisebox{-0.5\height}{\begin{minipage}[option b]{largeur} ... \end{minipage}} si l'on ne souhaite pas tenir compte des jambages de la dernière ligne de la minipage (partie d'un glyphe située sous la ligne de base) ; ce sont les cas 5 et 6 du fichier attaché ;
    • \raisebox{-0.5\height}{\begin{minipage}[option b]{largeur} ... dernière ligne\par\kern 0pt\end{minipage}} pour en tenir compte (cas 8 du fichier attaché).
    (il faut évidemment remplacer 'option b' par 'b').99038
  • Merci, je m'en souviendrais !
  • J'ai compris ce que fait la version « centrée » de minipage : elle compose le contenu dans un \vcenter (*), ce qui a pour effet de le centrer verticalement autour de l'axe mathématique. Or l'axe mathématique est normalement au-dessus de la ligne de base : il correspond à l'emplacement des barres de fractions, du « milieu » des signes égal, des signes +, des \cdots, etc. Le document ci-dessous confirme ces assertions.
    \documentclass{article}
    \pagestyle{empty}
    
    \newcommand*{\myRule}{%
      \leavevmode
      \lower 0.1pt\hbox{\vrule height 0.2pt width 1cm\relax}%
    }
    
    \begin{document}
    
    $\frac{a}{b}$ = \myRule
    \begin{minipage}{2.7cm}
      \Huge Strange
    \end{minipage}%
    \myRule
    
    $\frac{a}{b}$ = \myRule
    \begin{minipage}{2.7cm}
      \Huge Bizarre
    \end{minipage}%
    \myRule
    
    \end{document}
    
    Les filets horizontaux de part et d'autre du mot « Bizarre » ou « Strange » (jambage pris en compte pour le centrage) marquent la ligne de base (baseline en anglais). Ils sont donc en-dessous de l'axe mathématique, comme le montre l'image ci-jointe.

    (*) Primitive TeX qui ne peut être utilisée qu'en mode mathématique, donc minipage et \parbox ajoutent des dollars si on n'est pas déjà en mode maths.99064
Connectez-vous ou Inscrivez-vous pour répondre.
Success message!