44

I want my document to have borders in all pages. I imagine I can do that using TikZ, but is there an easier way to do it?

I also asked this question here, but as the main question was something else, this one problem got ignored (probably the use of the word "margin" rather than "border" did not help my case).

Can anyone help me?

Vivi
  • 26,953
  • 31
  • 77
  • 79
  • 4
    A margin refers to the whitespace between the text and the edge of the paper. It sounds like you are referring to a box or a border. – Sharpie Aug 02 '10 at 00:49
  • 1
    This question is ambiguous. It will be better if you attach a hand-made drawing to this question to avoid ambiguity! :-) – Display Name Aug 05 '11 at 18:04

7 Answers7

31

You're right that it can be done with TikZ, but it's not necessary to load in the whole of TikZ to get the bits required for this. The part that is needed is pgfpages. You can do a lot of page manipulation with this package, but here's some to get you started:

\documentclass{article}
\usepackage{pgf}
\usepackage{pgfpages}

\pgfpagesdeclarelayout{boxed}
{
  \edef\pgfpageoptionborder{0pt}
}
{
  \pgfpagesphysicalpageoptions
  {%
    logical pages=1,%
  }
  \pgfpageslogicalpageoptions{1}
  {
    border code=\pgfsetlinewidth{2pt}\pgfstroke,%
    border shrink=\pgfpageoptionborder,%
    resized width=.95\pgfphysicalwidth,%
    resized height=.95\pgfphysicalheight,%
    center=\pgfpoint{.5\pgfphysicalwidth}{.5\pgfphysicalheight}%
  }%
}

\pgfpagesuselayout{boxed}
\begin{document}

Something simple

\end{document}

Of course, if you're going to use the same layout again and again, put it in a separate style file and \usepackage{mylayouts} in each document.

Note: the package pgf is only needed to provide the command \pgfstroke. As all this does is draw a line, it may be possible to remove this in favour of a \rule of some sort.

Andrew Stacey
  • 153,724
  • 43
  • 389
  • 751
  • 2
    After trying various suggestions, this was the only one that worked well within beamer on the first shot. Thanks! – Joe Corneli Nov 15 '13 at 22:06
  • How to change the color of the frame? – Dion Jul 26 '14 at 15:59
  • 1
    I'm only getting borders along the left and bottom edges of the page with this approach. Also, page numbers are added. – kontextify Jan 04 '18 at 18:28
  • 1
    @kontextify I've just checked and it still works for me (despite this answer being 7 years old!). There are page numbers because there are page numbers in a standard document and this doesn't remove them. To get rid of page numbers, use \pagestyle{empty} and \thispagestyle{empty}. – Andrew Stacey Jan 04 '18 at 21:38
  • @LoopSpace This is very old answer (10 years ago). Can we use only TikZ to decorate pages ? – Black Mild Jan 21 '20 at 18:00
  • This works well for the full page. Anyone knows how to add a box only to the text body, of each page, keeping the original header/footer/margins defined by geometry? – Alberto Sep 21 '21 at 10:56
  • 1
    @Alberto This is a very old answer on a very old question. If you want to ask about something related to it, then it is best to ask a new question. – Andrew Stacey Sep 21 '21 at 20:04
  • @AndrewStacey I ended up doing that, thanks ;) – Alberto Sep 21 '21 at 21:07
16

Memoir class has option showtrims and commands \trimFrame, \settrimmedsize, \settrims. Example:

\documentclass[10pt,a4paper,showtrims]{memoir}
\trimFrame  
\settrimmedsize{210mm}{145mm}{*} 
\settrims{20mm}{34mm}
Grigory M
  • 4,984
  • 4
  • 39
  • 37
11

I think the easiest way would be to use the crop package. Tikz is not exactly the easiest way, but with tikzpagenodes you can do fancy things.

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usepackage{scrlayer-scrpage}
\usepackage{lipsum}

\pagestyle{scrheadings}


\newcommand{\jamanta}{\tikz[remember picture,overlay] 
    \draw [blue,line width=2mm]
    (current page.south west)
    rectangle
    (current page.north east)
    ;}

\newcommand{\greenborders}{\tikz[remember picture,overlay] \draw [green]
    (current page text area.south west)
    rectangle
    (current page text area.north east)
    ;}

\chead[\jamanta]{\jamanta} % for page borders

%\chead[\greenborders]{\greenborders} %for margin borders

\begin{document}


\section{A}
\lipsum[1-10]
\section{B}
\lipsum[1-10]

\end{document}
7

The answer provided by Stefan Kottwitz helped me. I wanted to add a working example for easy reference based on his suggestion of using the crop package. My example may need improvement.

\documentclass{article}
\usepackage{geometry} 
\usepackage{setspace}
\usepackage[none]{hyphenat}
\geometry{paperwidth=2in, paperheight=4in, margin=2em, bottom=1.5em, nohead}
\usepackage[center,dvips,frame]{crop}
\begin{document}
\pagestyle{empty}
\doublespacing \noindent Hello, world, this is my Pinterest message.
% Add a blank line

\vspace{0.2in}
\noindent Choose your words with care because you don't get a second chance to make a first impression.
% Add a blank line

\vspace{0.3in}
\noindent \footnotesize Made with \normalsize \LaTeX

\end{document}

LaTeX Output Image PNG

pmagunia
  • 263
5

A box around your document: it sounds like a frame around your logical page on a bigger paper size. This can be done using the crop package.

Stefan Kottwitz
  • 231,401
3

Actually though you suggest you want something easier then TikZ, doing it with that is not so hard. Here is the most important part. I am really only posting this because this was the first Google result I found, but I was not happy with the results. This is what I am using now.

\usepackage[all]{background}
\usepackage{tikz}
\usetikzlibrary{calc} 
\usepackage{ifoddpage}
\usepackage{changepage}
\strictpagecheck

\newcommand*{\bordersp}{0.125in}

\newcommand{\MyTikzBoarder}{%
\begin{tikzpicture}[remember picture,overlay,draw=red]
\checkoddpage
\ifoddpage
    \draw (0.75in-\bordersp,-0.5in+\bordersp) -- (\textwidth+0.75in+\bordersp,-0.5in+\bordersp) -- (\textwidth+0.75in+\bordersp,-\textheight-0.5in-\headheight-\headsep-\bordersp) -- (0.75in-\bordersp,-\textheight-0.5in-\headheight-\headsep-\bordersp) -- cycle;
\else
    \draw (0.5in-\bordersp,-0.5in+\bordersp) -- (\textwidth+0.5in+\bordersp,-0.5in+\bordersp) -- (\textwidth+0.5in+\bordersp,-\textheight-0.5in-\headheight-\headsep-\bordersp) -- (0.5in-\bordersp,-\textheight-0.5in-\headheight-\headsep-\bordersp) -- cycle;
\fi
 \end{tikzpicture}
}

\SetBgContents{\MyTikzBoarder}% Set tikz picture

\SetBgPosition{current page.north west}% Select location
\SetBgOpacity{1.0}
\SetBgAngle{0.0}
\SetBgScale{1.0}
1

For those who are not using the memoirs document class, and also need to use table of contents. I would suggest the use of the background package along with the calc library in tikz. The inclusion of tikz allows you to have a lot more options including rounded corners (which I personally love).

I have come to this solution after trying out multiple options, including pgfpages which actually squeezes your page inside instead of adding borders. This leads to displacement of toc links.

\usepackage{background}
\usetikzlibrary{calc}

\SetBgScale{1} \SetBgAngle{0} \SetBgColor{black} \SetBgContents{ \begin{tikzpicture}[overlay,remember picture] \draw [line width=1pt,rounded corners=4pt,] ($ (current page.north west) + (2cm,-2cm) $) rectangle ($ (current page.south east) + (-2cm,2cm) $); \end{tikzpicture}}

I did struggle a lot with this and this seems like the easiest way to have margins, hope it helps :)

The following is the output image for a page from my document page with margins

veedata
  • 146