Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'd like to highlight paragraphs such that the highlight color appears as one whole rectangle underlying the entire paragraph. I have looked around but nothing gives me the desired effect so far.

For example \fcolorbox{} from xcolor cannot highlight an entire paragraph; \hl{} from soul leaves out spacings between lines uncolored.

I am wondering how I can do this?

share|improve this question
4  
use package mdframed. You'll get the documentation with running texdoc mdframed –  Herbert Jun 10 '12 at 19:27
2  
See also: marcodaniel.github.com/mdframed –  Marco Daniel Jun 10 '12 at 19:29
    
The answers to yesterday's related question show how to achieve an uncoloured frame. –  dgs Jun 10 '12 at 20:54
    
Sorry. Wanted to show how to accomplish that in HTML, but the board does not handle styles. –  Alexander Bogomolny Jun 11 '12 at 3:28
add comment

3 Answers

up vote 32 down vote accepted

Here's a list of other possible solutions

  1. A solution that admits page breaks using mdframed:

    \documentclass{article}
    \usepackage[framemethod=tikz]{mdframed}
    \usepackage{lipsum}
    
    \begin{document}
    
    \lipsum[4]
    \begin{mdframed}[hidealllines=true,backgroundcolor=blue!20]
    \lipsum[2]
    \end{mdframed}
    \lipsum[4]
    
    \end{document}
    

    enter image description here

    The environments provided by the mdframed package are highly customizable so, for example, using the (inner)leftmargin, (inner)rightmargin options, you can produce this (the textwidth remains unaltered and the frame extends a little into the margins):

    \documentclass{article}
    \usepackage[framemethod=tikz]{mdframed}
    \usepackage{lipsum}
    
    \begin{document}
    
    \lipsum[4]
    \begin{mdframed}[hidealllines=true,backgroundcolor=blue!20,innerleftmargin=3pt,innerrightmargin=3pt,leftmargin=-3pt,rightmargin=-3pt]
    \lipsum[2]
    \end{mdframed}
    \lipsum[4]
    
    \end{document}
    

    enter image description here

  2. Here's now a solution using the framed package and its shaded environment; this solution also admits page breaks:

    \documentclass{article}
    \usepackage{xcolor}
    \usepackage{framed}
    \usepackage{lipsum}
    
    \colorlet{shadecolor}{blue!20}
    
    \begin{document}
    
    \lipsum[4]
    \begin{shaded}
    \lipsum[2]
    \end{shaded}
    \lipsum[4]
    
    \end{document}
    

    enter image description here

  3. Now a solution using the tcolorbox package; this solution admits page breaks inside tcolorbox if you load the breakable library and use the breakable key:

    \documentclass{article}
    \usepackage{xcolor}
    \usepackage{tcolorbox}
    \tcbuselibrary{breakable}
    \usepackage{lipsum}
    
    \begin{document}
    
    \lipsum[4]
    \begin{tcolorbox}[breakable,notitle,boxrule=0pt,colback=blue!20,colframe=blue!20]
    \lipsum[2-20]
    \end{tcolorbox}
    \lipsum[4]
    
    \end{document}
    

    enter image description here

  4. A solution using the adjustbox package (no page breaks allowed):

    \documentclass{article}
    \usepackage{xcolor}
    \usepackage{adjustbox}
    \usepackage{lipsum}
    
    \begin{document}
    
    \lipsum[4]
    
    \noindent\adjustbox{bgcolor=blue!20,minipage=[t]{\linewidth}}{\lipsum[4]}
    
    \lipsum[4]
    
    \end{document}
    

    enter image description here

  5. And finally, one solution using the fancypar package (this solution won't accept page breaks either):

    \documentclass{article}
    \usepackage{fancypar}
    \usepackage{lipsum}
    
    \begin{document}
    
    \lipsum[4]
    \ZebraPar[colorone=blue!20,colortwo=blue!20]{\lipsum[4]}
    \lipsum[4]
    
    \end{document}
    

    enter image description here

share|improve this answer
3  
Another option would be where the box extends slightly into the margins so that the paragraph flow does not get altered. –  Peter Grill Jun 10 '12 at 19:52
1  
@PeterGrill yes; I added a note about the flexibility of mdframed and a new example. –  Gonzalo Medina Jun 10 '12 at 20:05
1  
Can you provide a small list of packages. For example: adjustbox, tcolorbox and framed. I think all packages have their advantages. –  Marco Daniel Jun 10 '12 at 21:40
    
@MarcoDaniel yes; it's a god idea. I've updated my answer with a list of examples using various packages. –  Gonzalo Medina Jun 11 '12 at 3:45
add comment

A combination of \colorbox and a \parbox works, as long as your paragraph doesn't need to be broken over pages. That won't work.

\documentclass{article}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\noindent\colorbox{yellow}{%
    \parbox{\dimexpr\linewidth-2\fboxsep}% a box with line-breaks that's just wide enough
        {% your paragraph here:
        \lipsum[1]%
        }
    }
\end{document}

output

share|improve this answer
2  
The overfull box can be avoided very simple by \parbox{\dimexpr\linewidth-2\fboxsep} –  Marco Daniel Jun 10 '12 at 19:39
    
@MarcoDaniel Nice solution to the overfull box :-) –  azetina Jun 10 '12 at 19:42
    
@MarcoDaniel: Thanks, I included that. So \dimexpr means something like "calculate the following"? Where would I find an explanation of such macros? I didn't find anything in latex2e nor in macros2e. –  doncherry Jun 10 '12 at 19:49
2  
@doncherry those are e-TeX macros: texdoc etex. –  Gonzalo Medina Jun 10 '12 at 19:50
add comment

Is the todonotes package a possiblity? If so, Highlighting a Paragraph in LaTeX by Hinnerk Brügmann provides a solution. For some reason or the other the lipsum package didn't work well with it. The user provides the following code:

\documentclass[letterpaper]{article}
\usepackage{lipsum}
\usepackage[bordercolor=white,backgroundcolor=gray!30,linecolor=black,colorinlistoftodos]{todonotes}
\newcommand{\rework}[1]{%
\todo[color=yellow,inline]{Rework: {#1}}%
}
\begin{document}
\lipsum[2]
%------------------------------
% Update suggested by @Fran
%------------------------------
\rework{\protect\lipsum[2]}
%------------------------------
\lipsum[2]
\end{document}

share|improve this answer
    
You can solve the lipsum problem in this way: \rework{\protect\lipsum[2]} –  Fran Feb 1 at 13:26
    
@Fran I will amend as necessary. Thanks –  azetina Feb 1 at 18:35
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.