Cómo calcular automáticamente el cambio de tikz dentro de los nodos de página

Cómo calcular automáticamente el cambio de tikz dentro de los nodos de página

Estoy tratando de alinear correctamente un tikzpicturetexto que consta dentro de una flecha que puse en el pie de página. Mi problema es que quiero que la punta de la flecha esté alineada con el borde este del pie de página.yQuiero que la línea de base del texto se alinee con el resto del texto en las otras partes del pie de página.

Ninguna de las opciones de anclaje parece dar lo que quiero. Si uso el base eastancla, el texto está correctamente alineado pero la punta de la flecha sobresale del margen, como se muestra aquí:

Con ancla=base este

Sé cómo agregar un cambio manual. En el MWE a continuación, tengo una solución más o menos funcional usando yshiftpara tirar de la flecha hacia el lugar correcto, pero el valor es uno que determiné mirándolo a ojo. Esa solución se ve así:

ingrese la descripción de la imagen aquí

Sin embargo, obviamente sólo es válido para esta talla. ¿Hay alguna manera de tikzcalcular el turno automáticamente?

Aquí está mi MWE:

\documentclass{memoir}
\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{positioning,calc,shapes.arrows}
\usepackage{showframe}
\usepackage{lipsum}

\renewcommand*{\ShowFrameColor}{\color{red}}

% This version correctly aligns the CONTINUE text to the baseline,
% but the arrow head sticks out into the margin.
\newcommand{\ContinueNotice}{%
    \begin{tikzpicture}[remember picture,overlay, font={\large\sffamily\bfseries}]
        \node[single arrow,single arrow head extend=3pt,fill=black,text=white,anchor=base east]
        at (current page footer area.south east) {\enspace CONTINUE\enspace};
\end{tikzpicture}%
}

% This version is more or less correctly aligned, but the yshift is done by eye.
\newcommand{\ContinueNoticeAlt}{%
    \begin{tikzpicture}[remember picture,overlay, font={\large\sffamily\bfseries}]
        \node[single arrow,single arrow head extend=3pt,fill=black,text=white,anchor=east,yshift=-2pt]
        at (current page footer area.east) {\enspace CONTINUE\enspace};
\end{tikzpicture}%
}

\makepagestyle{TestStyle}
\makeoddfoot{TestStyle}{\footnotesize Some Notice}{\thepage}{\ContinueNotice}
\makeevenfoot{TestStyle}{\footnotesize Some Notice}{\thepage}{\ContinueNoticeAlt}
\pagestyle{TestStyle}

\begin{document}

\lipsum

\end{document} 

Respuesta1

Utilice anchor=easto leftpara los nodos. Nombra los nodos por ejemplo ny utilízalos baseline=(n.base)como opción para tikzpicture:

\documentclass{memoir}
\usepackage{tikzpagenodes}
\usetikzlibrary{shapes.arrows}
\usepackage{showframe}
\usepackage{lipsum}

\renewcommand*{\ShowFrameColor}{\color{red}}

\newcommand{\ContinueNotice}{%
    \begin{tikzpicture}[remember picture,overlay, font={\large\sffamily\bfseries},baseline=(n.base)]
        \node[single arrow,single arrow head extend=3pt,fill=black,text=white,left](n)
        at (current page footer area.south east) {\enspace CONTINUE\enspace};
\end{tikzpicture}%
}

\newcommand{\ContinueNoticeAlt}{%
    \begin{tikzpicture}[remember picture,overlay, font={\large\sffamily\bfseries},baseline=(n.base)]
        \node[single arrow,single arrow head extend=3pt,fill=black,text=white,anchor=east](n)
        at (current page footer area.east) {\enspace CONTINUE\enspace};
\end{tikzpicture}%
}

\makepagestyle{TestStyle}
\makeoddfoot{TestStyle}{\footnotesize Some Notice}{\thepage}{\ContinueNotice}
\makeevenfoot{TestStyle}{\footnotesize Some Notice}{\thepage}{\ContinueNoticeAlt}
\pagestyle{TestStyle}

\begin{document}
\lipsum
\end{document}

ingrese la descripción de la imagen aquí


Actualizar

Tenga en cuenta que no es necesario utilizar tikzpagenodesy remember picture. Entonces tienes que ejecutarlo solo una vez.

\documentclass{memoir}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\usepackage{showframe}
\usepackage{lipsum}

\renewcommand*{\ShowFrameColor}{\color{red}}

\newcommand{\ContinueNotice}{%
  \begin{tikzpicture}[overlay, font={\large\sffamily\bfseries},baseline=(n.base)]
    \node[single arrow,single arrow head extend=3pt,fill=black,text=white,left](n)
      {\enspace CONTINUE\enspace};
  \end{tikzpicture}%
}

\newcommand{\ContinueNoticeAlt}{%
  \begin{tikzpicture}[overlay, font={\large\sffamily\bfseries},baseline=(n.base)]
    \node[single arrow,single arrow head extend=3pt,fill=black,text=white,anchor=east](n)
      {\enspace CONTINUE\enspace};
  \end{tikzpicture}%
}

\makepagestyle{TestStyle}
\makeoddfoot{TestStyle}{\footnotesize Some Notice}{\thepage}{\ContinueNotice}
\makeevenfoot{TestStyle}{\footnotesize Some Notice}{\thepage}{\ContinueNoticeAlt}
\pagestyle{TestStyle}

\begin{document}
\lipsum
\end{document}

El resultado es el mismo que el anterior.

información relacionada