32

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?

  • 2
    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 2 '10 at 0:49
  • This question is ambiguous. It will be better if you attach a hand-made drawing to this question to avoid ambiguity! :-) – xport Aug 5 '11 at 18:04
13

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

\documentclass[10pt,a4paper,showtrims]{memoir}
\trimFrame  
\settrimmedsize{210mm}{145mm}{*} 
\settrims{20mm}{34mm}
  • 1
    Looks like this doesn't work when the page size is defined using the geometry package. – kontextify Jan 4 '18 at 18:36
23

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.

  • 1
    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
  • I'm only getting borders along the left and bottom edges of the page with this approach. Also, page numbers are added. – kontextify Jan 4 '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}. – Loop Space Jan 4 '18 at 21:38
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

  • This works, but as far as I can tell from the crop docs, there is no way to customise the border. – kontextify Jan 4 '18 at 19:12
7

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}
  • 1
    Tried the other answers. This seems to the most reliable and customisable way! – kontextify Jan 4 '18 at 19:30
  • 1
    This also seemed the most reliable to me, thanks! – Richard Dec 9 '18 at 5:14
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.

  • An example would improve this answer. – Richard Dec 9 '18 at 5:11
1

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}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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