Gostaria de poder criar caixas em torno de uma página inteira ou de uma seleção de páginas com a caixa estendendo-se por todo o comprimento da página, mas com a borda inferior da caixa acima do número da página, como no exemplo anexo. Seria ideal se isso pudesse ser definido como um ambiente para que todas as páginas desse ambiente estivessem em caixa. Este ambiente pode ser usado para diferenciar um resumo executivo do restante do documento.
Qualquer dica ou sugestão seria muito apreciada.
Responder1
Com tikz
e eso-pic
. Defini dois comandos, \addframe
que \removeframe
, respectivamente, adicionam o frame e removem o frame da página.
MWE:
\documentclass{article}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\usepackage{eso-pic}
\newcommand{\addframe}{%
\AddToShipoutPicture{%
\begin{tikzpicture}[remember picture, overlay]
\draw[line width=1pt]
($(current page text area.north west) +(-5mm,5mm)$)
rectangle
($(current page text area.south east) +(5mm,-5mm)$);
\end{tikzpicture}%
}%
}
\newcommand{\removeframe}{\ClearShipoutPicture}
\usepackage{lipsum} % just for the example
\begin{document}
\addframe
\lipsum[1-10]
\clearpage
\removeframe
\lipsum[1-10]
\clearpage
\addframe
\lipsum[1-10]
\end{document}
Saída:
Você pode ajustar os parâmetros ( 1pt
para espessura e 5mm
distância do texto) conforme desejar.
Alternativamente, você pode definir \addframe
desta forma
\newcommand{\addframe}{%
\begin{tikzpicture}[remember picture, overlay]
\draw[line width=1pt]
($(current page text area.north west) +(-5mm,5mm)$)
rectangle
($(current page text area.south east) +(5mm,-5mm)$);
\end{tikzpicture}%
}
e use \addframe
em todas as páginas onde precisar do frame, como no MWE a seguir:
\documentclass{article}
\usepackage{tikzpagenodes}
\usetikzlibrary{calc}
\newcommand{\addframe}{%
\begin{tikzpicture}[remember picture, overlay]
\draw[line width=1pt]
($(current page text area.north west) +(-5mm,5mm)$)
rectangle
($(current page text area.south east) +(5mm,-5mm)$);
\end{tikzpicture}%
}
\usepackage{lipsum} % just for the example
\begin{document}
\addframe
\lipsum[1-10]
\clearpage
\lipsum[1-10]
\clearpage
\addframe
\lipsum[1-10]
\end{document}
Responder2
Você pode usar o pacote mdframed
para fazer isso.
mdframed
é muito personalizável, você pode definir uma cor de fundo e muito mais.
Se você deseja que suas caixas apareçam em todos os lugares usando o mesmo estilo, a melhor prática é definir um novo ambiente com newmdenv
, definindo algumas opções de estilo. Neste caso, utiliza-se o padrão, uma única moldura ao redor da caixa. Posteriormente, você pode anular as configurações localmente, fornecendo opções ao ambiente, como visto no segundo exemplo.
\documentclass{article}
\usepackage{mdframed}
\newmdenv{boxed}
\usepackage{blindtext}
\begin{document}
\blindtext
\begin{boxed}
\blindtext
\blindtext
\begin{description}
\item [something] \blindtext
\item [something else] \blindtext[2]
\end{description}
\end{boxed}
\blindtext
\begin{boxed}[backgroundcolor=yellow]
\blindtext
\end{boxed}
\end{document}