Oración orientada verticalmente en los márgenes

Oración orientada verticalmente en los márgenes

Estoy escribiendo un documento y me gustaría poner una oración orientada verticalmente en todos los márgenes de la página excepto en la página del índice.

mi código es:

\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage[utf8]{inputenc}
\usepackage[frenchb]{babel}
\usepackage{lipsum}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{eso-pic}

\makeatletter
\newlength\@tempdim@x
\newlength\@tempdim@y
% structure des commandes :
%   #1 = deplacement selon x
%   #2 = deplacement selon y
%   #3 = texte à mettre
\newcommand\AtUpperLeftCorner[3]{%
\begingroup
\@tempdim@x=0cm
\@tempdim@y=\paperheight
\advance\@tempdim@x#1
\advance\@tempdim@y-#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtUpperRightCorner[3]{%
\begingroup
\@tempdim@x=\paperwidth
\@tempdim@y=\paperheight
\advance\@tempdim@x-#1
\advance\@tempdim@y-#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtLowerLeftCorner[3]{%
\begingroup
\@tempdim@x=0cm
\@tempdim@y=0cm
\advance\@tempdim@x#1
\advance\@tempdim@y#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtLowerRightCorner[3]{%
\begingroup
\@tempdim@x=\paperwidth
\@tempdim@y=0cm
\advance\@tempdim@x-#1
\advance\@tempdim@y#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}

\AddToShipoutPicture{%
    \AtLowerRightCorner{2cm}{5cm}{\ifodd\c@page\ifnum\arabic{page}>1 \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
    \AtLowerLeftCorner{2cm}{5cm}{\ifodd\c@page\else\ifnum\arabic{page}>1 \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
}
\makeatother

\pagenumbering{roman}
\begin{document}
    {\pagestyle{plain}
    \tableofcontents}

\chapter{Chapter one}
\pagenumbering{arabic}
\section{one}
\lipsum[2]
\section{two}
\lipsum[4]
\section{three}
\lipsum[11]
\chapter{Chapter two}
\section{four}
\lipsum[1]

\end{document}

ingrese la descripción de la imagen aquí

Respuesta1

Puedes colocar un if con el valor de la página:

\AddToShipoutPicture{%
\AtLowerRightCorner{2cm}{5cm}{\ifodd\c@page\ifnum\value{page}>1 \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
\AtLowerLeftCorner{2cm}{5cm}{\ifodd\c@page\else\ifnum\value{page}>1 \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
}

Si lo desea, puede definir un contador y configurarlo en el número de página después de imprimir la tabla de contenido y agregar este valor para automatizar el proceso (puede ser un poco más complejo porque la tabla de contenido se imprime después de la segunda compilación.).

Editar:(Una solución alternativa con las mainmattercosas)

\newcounter{realpage}

\AddToShipoutPicture{%
\AtLowerRightCorner{2cm}{5cm}{\ifodd\c@page\ifnum\value{realpage}>0 \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
\AtLowerLeftCorner{2cm}{5cm}{\ifodd\c@page\else\ifnum\value{realpage}>0 \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
} 

\let\oldmainmatter\mainmatter
\def\mainmatter{\oldmainmatter\stepcounter{realpage}}

Última edición:

\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage[utf8]{inputenc}
\usepackage[frenchb]{babel}
\usepackage{lipsum}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{eso-pic}

\makeatletter
\newlength\@tempdim@x
\newlength\@tempdim@y
% structure des commandes :
%   #1 = deplacement selon x
%   #2 = deplacement selon y
%   #3 = texte à mettre
\newcommand\AtUpperLeftCorner[3]{%
\begingroup
\@tempdim@x=0cm
\@tempdim@y=\paperheight
\advance\@tempdim@x#1
\advance\@tempdim@y-#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtUpperRightCorner[3]{%
\begingroup
\@tempdim@x=\paperwidth
\@tempdim@y=\paperheight
\advance\@tempdim@x-#1
\advance\@tempdim@y-#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtLowerLeftCorner[3]{%
\begingroup
\@tempdim@x=0cm
\@tempdim@y=0cm
\advance\@tempdim@x#1
\advance\@tempdim@y#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtLowerRightCorner[3]{%
\begingroup
\@tempdim@x=\paperwidth
\@tempdim@y=0cm
\advance\@tempdim@x-#1
\advance\@tempdim@y#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}

\newcounter{realpage}

\AddToShipoutPicture{%
\AtLowerRightCorner{2cm}{5cm}{\ifodd\c@page\ifnum\value{realpage}>0 \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
\AtLowerLeftCorner{2cm}{5cm}{\ifodd\c@page\else\ifnum\value{realpage}>0 \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
} 
\makeatother

\pagenumbering{roman}
\begin{document}
    {\pagestyle{plain}
    \tableofcontents}



\chapter{Chapter one}
\stepcounter{realpage}
\pagenumbering{arabic}
\section{one}
\lipsum[2]
\section{two}
\lipsum[4]
\section{three}
\lipsum[11]
\chapter{Chapter two}
\section{four}
\lipsum[1]

\end{document}

con el mismo preámbulo... para imprimir el texto vertical en la próxima página posiblemente vacía después del toc, use así:

\begin{document}
    {\pagestyle{plain}
    \tableofcontents}
    \clearpage
    \stepcounter{realpage}

\chapter{Chapter one}

\pagenumbering{arabic}
\section{one}
\lipsum[2]
\section{two}
\lipsum[4]
\section{three}
\lipsum[11]
\chapter{Chapter two}
\section{four}
\lipsum[1]

\end{document}

Respuesta2

También puede configurar manualmente una bandera para activar y desactivar la superposición.

\documentclass[12pt,a4paper,twoside,openright]{book}
\usepackage[utf8]{inputenc}
\usepackage[frenchb]{babel}
\usepackage{lipsum}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{eso-pic}

\makeatletter
\newlength\@tempdim@x
\newlength\@tempdim@y
% structure des commandes :
%   #1 = deplacement selon x
%   #2 = deplacement selon y
%   #3 = texte à mettre
\newcommand\AtUpperLeftCorner[3]{%
\begingroup
\@tempdim@x=0cm
\@tempdim@y=\paperheight
\advance\@tempdim@x#1
\advance\@tempdim@y-#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtUpperRightCorner[3]{%
\begingroup
\@tempdim@x=\paperwidth
\@tempdim@y=\paperheight
\advance\@tempdim@x-#1
\advance\@tempdim@y-#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtLowerLeftCorner[3]{%
\begingroup
\@tempdim@x=0cm
\@tempdim@y=0cm
\advance\@tempdim@x#1
\advance\@tempdim@y#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}
\newcommand\AtLowerRightCorner[3]{%
\begingroup
\@tempdim@x=\paperwidth
\@tempdim@y=0cm
\advance\@tempdim@x-#1
\advance\@tempdim@y#2
\put(\LenToUnit{\@tempdim@x},\LenToUnit{\@tempdim@y}){#3}%
\endgroup
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% start edit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\iftoc 

\AddToShipoutPicture{%
    \AtLowerRightCorner{2cm}{5cm}{\ifodd\c@page\iftoc\else \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
    \AtLowerLeftCorner{2cm}{5cm}{\ifodd\c@page\else\iftoc\else \rotatebox{90}{Good \raisebox{0.1ex}{--} My book}\fi\fi}
}
\makeatother

\pagenumbering{roman}
\begin{document}
    {\pagestyle{plain}
    \global\toctrue% or place outside braces
    \tableofcontents}

\chapter{Chapter one}\tocfalse
\pagenumbering{arabic}
\section{one}
\lipsum[2]
\section{two}
\lipsum[4]
\section{three}
\lipsum[11]
\chapter{Chapter two}
\section{four}
\lipsum[1]

\end{document}

información relacionada