61

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?

4
  • 4
    use package mdframed. You'll get the documentation with running texdoc mdframed
    – user2478
    Commented Jun 10, 2012 at 19:27
  • 2
    See also: marcodaniel.github.com/mdframed Commented Jun 10, 2012 at 19:29
  • The answers to yesterday's related question show how to achieve an uncoloured frame.
    – dgs
    Commented Jun 10, 2012 at 20:54
  • Sorry. Wanted to show how to accomplish that in HTML, but the board does not handle styles. Commented Jun 11, 2012 at 3:28

3 Answers 3

84

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

7
  • 3
    Another option would be where the box extends slightly into the margins so that the paragraph flow does not get altered. Commented Jun 10, 2012 at 19:52
  • 1
    @PeterGrill yes; I added a note about the flexibility of mdframed and a new example. Commented Jun 10, 2012 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. Commented Jun 10, 2012 at 21:40
  • @MarcoDaniel yes; it's a god idea. I've updated my answer with a list of examples using various packages. Commented Jun 11, 2012 at 3:45
  • 1
    The link to the framed package points to tcolorbox instead. Commented Aug 9, 2015 at 13:44
19

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

4
  • 2
    The overfull box can be avoided very simple by \parbox{\dimexpr\linewidth-2\fboxsep} Commented Jun 10, 2012 at 19:39
  • @MarcoDaniel Nice solution to the overfull box :-)
    – azetina
    Commented Jun 10, 2012 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
    Commented Jun 10, 2012 at 19:49
  • 2
    @doncherry those are e-TeX macros: texdoc etex. Commented Jun 10, 2012 at 19:50
11

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}

0

You must log in to answer this question.

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