3

I want to have one line of text with black background and the text in white. The line is alone and so it can be one paragraph.

I would like the coloration for the full width of the line and not only for the text.

The solution must work inside one minipage.

2
  • Is the line going to be a separate paragraph, or do you want to colour a single line in a larger paragraph?
    – Jake
    Dec 8, 2011 at 12:06
  • Indeed, the line will be alone.
    – projetmbc
    Dec 8, 2011 at 12:07

2 Answers 2

3

You can use a combination of \colorbox:

\documentclass{article}
\usepackage{xcolor}
\usepackage{showframe}
\usepackage{adjustbox}


\newcommand*\mylineI[1]{%
\par\noindent
\colorbox{black}{\makebox[\dimexpr\linewidth-2\fboxsep\relax][l]{\strut\color{white}#1}}%
\par}

\newcommand*\mylineII[1]{%
  \par\noindent\adjustbox{bgcolor=black,innercode={\color{white}}{},}%
                     {\makebox[\linewidth][l]{\strut #1}}%
  \par%
}
\begin{document}
\mylineI{Text Text Text Text}

\mylineII{Text Text Text Text}

\end{document}
\myline{Text Text Text Text}
\end{document}

EDIT: The second command uses the package adjustbox. So you have some extra options.

Of course the code can be extended width extra spacing and \xspace.

enter image description here

5
  • Thanks but this coloration is only for the text and not for the whole line... I've updated my question.
    – projetmbc
    Dec 8, 2011 at 12:16
  • 1
    @projetmbc: I edited my answer and now using makebox. Dec 8, 2011 at 12:25
  • 1
    Is there a way to minimize the spacing before the text ?
    – projetmbc
    Dec 8, 2011 at 12:30
  • @projetmbc: Do you mean the space inside the black line? I used \par to create a new line. You can manipulate this. Dec 8, 2011 at 12:36
  • Your second command looks better for my purpose. That's great !
    – projetmbc
    Dec 8, 2011 at 13:17
1

How about this?

\colorbox{black}{%
\begin{minipage}[b]{\dimexpr\textwidth-2\fboxsep\relax}
\strut\color{white}hello
\end{minipage}%
}

enter image description here

A new environment to do the equivalent is

\setlength\fboxsep{0pt}
\makeatletter\newenvironment{blackbox}
    {\noindent\begin{lrbox}{\@tempboxa}\begin{minipage}[b]{\dimexpr\textwidth-2\fboxsep\relax}\strut\color{white}}
    {\end{minipage}\end{lrbox}\colorbox{black}{\usebox{\@tempboxa}}}
\makeatother

which will give the same result with

\begin{blackbox}
hello
\end{blackbox}

Note that this leads to an overfull box if unless \setlength\fboxsep{0pt} is used before it. With that, the output looks like

enter image description here

7
  • Sorry, I've forgotten to indicate that I'll use this formatting in one minipage...
    – projetmbc
    Dec 8, 2011 at 12:31
  • @MarkS.Everitt: You forgot some % and width \textwidth you created an overfull box. You must substrate the \fboxsep of \colorbox. Dec 8, 2011 at 12:37
  • @MarkS.Everitt: Please see my answer (\dimexpr). Your second code uses a savebox. So you allows breaks. Dec 8, 2011 at 12:55
  • @MarkS.Everitt: Why sorry.? You provided an alternative and tex stackexchange is a collection of solutions ;-) Dec 8, 2011 at 13:02
  • I'll leave it in that case, with a disclaimer that it leads to an overfull box. :)
    – qubyte
    Dec 8, 2011 at 13:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .