¿Cómo se puede (fácilmente) superponer texto diferente sobre páginas pares o impares de un archivo PDF incluido?

¿Cómo se puede (fácilmente) superponer texto diferente sobre páginas pares o impares de un archivo PDF incluido?

Tengo una serie de archivos pdf que estoy intentando combinar. Eso lo puedo hacer sin ningún problema.

Lo que también debo hacer es agregar una pequeña cantidad de texto en la esquina superior "exterior" de cada página, esencialmente identificando el documento original del que proviene cada página. Hasta ahora he logrado colocar el texto en la esquina superior izquierda de cada página; hay otras preguntas en Stack Exchange que abordan eso.

Sin embargo, ninguno de ellos trata de colocar el texto en una posición diferente en páginas pares e impares, es decir, en la esquina superior izquierda de las páginas pares y en la esquina superior derecha de las páginas impares. ¿Cómo se puede lograr esto?

\documentclass{article}

\usepackage[a4paper]{geometry}
\usepackage{pdfpages}
\usepackage{tikz}
\renewcommand{\contentsname}{My combined file}
\setlength\parindent{0pt}

\begin{document}

\includepdf[pages=-]{cover.pdf}
\includepdf[pages=2-4,pagecommand={\begin{tikzpicture}[remember picture, overlay]
    \node[right] at (-2, 2.5) {\LARGE{doc1}};
    \end{tikzpicture}}]{doc1.pdf}
% More files included here
\end{document}

Para obtener crédito adicional, ¿hay alguna forma de utilizar (automáticamente) el nombre de archivo del documento incluido como texto insertado?

Respuesta1

Esto utiliza el everypagepaquete para realizar la tarea. La sintaxis es

\atxy{this page X}{alternate page X}{Y}{content}

Si se invoca en una página impar, "esta página X" es la ubicación x del contenido en páginas impares, mientras que "página alternativa X" es la ubicación x del contenido en páginas pares. Viceversa si se invoca en una página par.

Uno actualiza el contenido con la macro.\updateText{}

Aquí está mi MWE. Se ha EDITADO para permitir que el proceso se invoque después de la página 1, si se desea (aunque MWE muestra que se invoca en la página 1).

\documentclass{article}
\usepackage{everypage}
\usepackage{lipsum}
% THESE ARE LaTeX DEFAULTS; CAN CHANGE IF NEEDED.
\def\PageTopMargin{1in}
\def\PageLeftMargin{1in}
\def\localX{0in}
\def\ThisX{0in}
\def\AltX{0in}
% SYNTAX \atxy{This page X}{Alt page X}{y}{content}
\newcommand\atxy[4]{%
  \def\XYtext{#4}
  \gdef\ThisX{#1}\gdef\AltX{#2}%
 \AddEverypageHook{\smash{\hspace*{\dimexpr-\PageLeftMargin-\hoffset+\localX\relax}%
  \raisebox{\dimexpr\PageTopMargin+\voffset-#3\relax}{\XYtext}}}}
\AddEverypageHook{\ifdim\localX=\ThisX\gdef\localX{\AltX}\else\gdef\localX{\ThisX}\fi}
\newcommand\updateText[1]{\gdef\XYtext{#1}}
\begin{document}
\atxy{7in}{0.2in}{0.5in}{\parbox[t]{1in}{\Huge This is my initial text}}
\lipsum[1-7]
\updateText{\parbox[t]{1in}{\Huge Follow Up text}}
\lipsum[8-35]
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

\documentclass{article}

\usepackage[a4paper]{geometry}
\usepackage{pdfpages}
\usepackage{ifoddpage}
\usepackage{background}

\newcommand{\mypdfinclude}[2][]{%
\backgroundsetup{%
    placement=top,
    angle=0,
    nodeanchor=north east,
    color=red,
    scale=1,
    contents={%
     \checkoddpage\ifoddpage%
      \begin{tikzpicture}[remember picture,overlay]
        \node[text width=2in,anchor=north east,align=right,font=\Large] at
          ([shift={(-1cm,-1cm)}]current page.north east) {#2};
      \end{tikzpicture}
      \else
       \begin{tikzpicture}[remember picture,overlay]
        \node[text width=2in,anchor=north west,font=\Large] at ([shift={(1cm,-1cm)}]current
         page.north west) {#2};
      \end{tikzpicture}
      \fi
     }
}
\includepdf[#1]{#2}
}
\begin{document}
  \mypdfinclude[pages=2-4]{pgfmanual.pdf}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Aquí hay otra sugerencia para usar el paquete scrlayerpara definir un estilo de página especial para los archivos PDF incluidos.

\documentclass[a4paper]{book}

\usepackage{pdfpages}
\usepackage{xcolor}

\usepackage{scrlayer}

\newcommand{\pdfpagestext}{}
\colorlet{pdfpagescolor}{purple}

% define new layers
\DeclareNewLayer[
  foreground,
  oddpage,
  voffset=1cm,% distance from top
  hoffset=1cm,% distance from left
  width=\dimexpr\paperwidth-2cm\relax,% width of the layer
  height=2cm,% height of the layer
  contents={\parbox{\layerwidth}{\raggedleft\textcolor{pdfpagescolor}{\pdfpagestext}}}
  ]{pdfpages.odd}
\DeclareNewLayer[
  clone=pdfpages.odd,
  evenpage,
  contents={\parbox{\layerwidth}{\raggedright\textcolor{pdfpagescolor}{\pdfpagestext}}}
  ]{pdfpages.even}

% define new pagestyle
\DeclareNewPageStyleByLayers{pdfpages}{pdfpages.odd,pdfpages.even}

\newcommand*\myincludepdf[2][]{%
  \renewcommand\pdfpagestext{#2}%
  \includepdf[pagecommand=\thispagestyle{pdfpages},#1]{#2}%
}

\begin{document}
  \myincludepdf[pages=1-3]{dummy.pdf}
\end{document}

ingrese la descripción de la imagen aquí

También funciona si utilizas un diseño de un solo lado. Entonces el texto estará en cada página en el margen derecho (=exterior) automáticamente.

\documentclass[a4paper,oneside]{book}

ingrese la descripción de la imagen aquí

información relacionada