16

I want to put a block of text into the top right corner of my document (which uses the article class). The specifications of the document's formatting are very detailed, and it has taken me about 2 days to get them right.

I do not want to put a line across the top, or to do anything which will change the margin. In fact, I would prefer to avoid using any additional packages at all.

Any suggestions?

3
  • 3
    The textpos package or the background package could be an option. Why don't you want to use additional package(s)? – Gonzalo Medina Oct 1 '11 at 21:19
  • Yes, many pages add functionality without modifying the document layout/margins. Another one that can be used to place document elements anywhere on the page is eso-pic. And, I'm pretty sure both pstricks and tikz/pkg will be able to accommodate this. – Werner Oct 1 '11 at 21:27
  • The packages I've already tried (e.g. scrpage2) produce strange additional changes, which are sometimes hard to notice at first. For example, scrpage2 insists on a flexible page size, and cuts off the page numbers as a side effect of adding the header if I try to use fixed margins (which are required) – John Doucette Oct 1 '11 at 21:27
19

Using atbegshi guarantees that the text block will not be modified in any way, as it acts by "overlaying", so to speak.

\documentclass[a4paper]{article}
\usepackage{atbegshi,picture}
\usepackage{lipsum}


\AtBeginShipout{\AtBeginShipoutUpperLeft{%
  \put(\dimexpr\paperwidth-1cm\relax,-1.5cm){\makebox[0pt][r]{\framebox{Copyright DTV}}}%
}}

\begin{document}

\lipsum

\end{document}

Every page of the document will bear the copyright notice.

5
  • 1
    This does exactly what I wanted. – John Doucette Oct 1 '11 at 22:59
  • How can I make this appear only on the front page? – finstats Jan 11 '16 at 5:36
  • @roland Use \AtBeginShipoutFirst – egreg Jan 11 '16 at 7:28
  • @egreg i tried that but it didn't work. It just removes the first page. – finstats Jan 11 '16 at 23:40
  • 3
    @roland \AtBeginShipoutNext – egreg Jan 11 '16 at 23:46
10

Here's a simple example using the background package:

\documentclass{article}  
\usepackage{background}
\usepackage{lipsum}% just to generate filler text

\SetBgContents{some additional text}
\SetBgScale{1}
\SetBgAngle{0}
\SetBgPosition{current page.north east}
\SetBgHshift{-2cm}
\SetBgVshift{-1cm}

\begin{document}

\lipsum[1-3]

\end{document}
4

Here is a minimal example using the eso-pic package.

enter image description here

\documentclass{article}  
\usepackage{eso-pic}% http://ctan.org/pkg/eso-pic
\usepackage{lipsum}% http://ctan.org/pkg/lipsum

\begin{document}

\AddToShipoutPictureBG*{%
  \AtPageUpperLeft{%
    \hspace{\paperwidth}%
    \raisebox{-\baselineskip}{%
      \makebox[0pt][r]{Here is some interesting text}
}}}%

\lipsum[1-3]

\end{document}

\AddToShipoutPictureBG will print something on every page, while the starred version \AddToShipoutPictureBG* prints it on the current page only. Placement is possible with spacing commands, with the help of predefined locations (like \AtPageUpperLeft and the like). See the package documentation for more on this.

eso-pic also provides placement of contents in the foreground to overlay with the existing page layout (in contrast to placing something in the background layer as suggested above) using \AddToShipoutPictureFG or \AddToShipoutPictureFG* with similar connotations as above.

1

Here is an option with textpos, the process is automatized so that the text will always stay at top right corner even when page geometry is changed

% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = xelatex
\documentclass[UTF8]{article}
\usepackage{lipsum}

\usepackage[a4paper, twoside]{geometry}

\usepackage{pgf}
\usepackage[absolute, overlay]{textpos}

\setlength{\TPHorizModule}{1.0 pt}
\textblockorigin{\paperwidth}{0.0 pt}
%% set the origin used by 'textpos' to be top right corner of page

\begin{document}

\title{title}
\date{\today}
\author{author}

\pgfmathwidth{"top right corner at page \thepage"}
%% the width of text is stored in '\pgfmathresult'
\begin{textblock}{\pgfmathresult}[1, 0](0, 0)
%% value of '\pgfmathresult' is used to set the width of text block
%% '[1, 0]' sets the anchor point of text block to be its top right corner
%% '(0, 0)' sets the anchor point right at the origin which is set by '\textblockorigin' in the preamble
\noindent
top right corner at page \thepage
\end{textblock}

\maketitle

\lipsum[7]

\end{document}

here is what is produced

top right corner text

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.