%20superponer%20texto%20diferente%20sobre%20p%C3%A1ginas%20pares%20o%20impares%20de%20un%20archivo%20PDF%20incluido%3F.png)
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 everypage
paquete 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}
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}
Respuesta3
Aquí hay otra sugerencia para usar el paquete scrlayer
para 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}
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}