32

I'm looking for a solution that will allow me to prevent some parts of the final pdf file (header, footer) from being selected and copied. It is to allow easier quoting of longer parts of texts from documents that will be published.

1

1 Answer 1

35

Based on this answer, you could use accsupp to define a \squelch command:

\documentclass{article}
\usepackage{accsupp}
\DeclareRobustCommand\squelch[1]{%
    \BeginAccSupp{method=plain,ActualText={}}#1\EndAccSupp{}}

\begin{document}
This text is selectable \squelch{but this text isn't}.
\end{document}

The squelched text cannot be highlighted in Acrobat, and copying the whole line gives this:

This text is selectable .

It's easy to combine this with fancyhdr:

\usepackage{fancyhdr}
\fancypagestyle{plain}{%
    \fancyhf{}%
    \fancyfoot[C]{\squelch{\thepage}}%
    \renewcommand{\headrulewidth}{0pt}%
    \renewcommand{\footrulewidth}{0pt}%
}
\pagestyle{plain}

You could also define a variant \squelchstyle for use with KOMA-Script's \addtokomafont:

\def\squelchstyle{%
    \BeginAccSupp{method=plain,ActualText={}}%
    \aftergroup\aftersquelchstyle}
\def\aftersquelchstyle{\EndAccSupp{}}
\addtokomafont{pagenumber}{\squelchstyle}
6
  • This works even when viewing the document in evince. Amazing!
    – krlmlr
    Mar 27, 2012 at 11:38
  • 2
    Redefining \thepage to do anything other than return a page number is a really bad idea. See the answers to this question tex.stackexchange.com/q/3731/627 and squelch the page numbers by defining a new page style (eg with the fancyhdr package).
    – Lev Bishop
    Mar 31, 2012 at 18:18
  • etextools seems to cause problems with biblatex, is there another way to use something like squelchstyle?
    – maetra
    Mar 31, 2012 at 19:57
  • nice, that does the job I was looking for
    – maetra
    Mar 31, 2012 at 20:45
  • Is there any way to get this working with latex -> dvips -> ps2pdf (GhostScript)? May 9, 2012 at 19:18

You must log in to answer this question.

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