
Por alguna razón, que probablemente será demasiado trabajo para arreglar sin romper algo más en mi documento, Tikzcd solo funciona en mi documento en modo de compatibilidad con la "Sintaxis alternativa para flechas" que según el manual se "usaba antes de la aparición de la sintaxis de las comillas para las etiquetas".
Eso significa que el código como:
\arrow[r, Rightarrow, "\phi"]
No funciona en mi documento, tendría que escribir esto como:
\arrow[Rightarrow]{r}{\phi}
Para obtener el resultado deseado.
Entonces, ¿cómo escribo expresiones como [from=A,to=B]
las que ocurren en:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
A \arrow[r, bend left=50, ""{name=U, below, draw=red}]
\arrow[r, bend right=50, ""{name=D, draw=red}]
& B
\arrow[Rightarrow, from=U, to=D]
\end{tikzcd}
\end{document}
Más específicamente, intenté hacer funcionar la siguiente expresión:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
\mathcal{C}
\ar[bend left=47, pos=0.5]{r}{F}
\ar[bend right=47, pos=0.5]{r}[swap]{G}
\arrow[phantom,bend left=40, shift right=0.2ex, name=U]{r}
\arrow[phantom,bend right=38.4, shift left=0.2ex, swap, name=D]{r}
& \mathcal{D}
\arrow[Rightarrow]{from=U,to=D}{N}
\end{tikzcd}
\end{document}
Pero la última flecha que se suponía que iba desde el centro de la flecha superior hacia abajo hasta el centro de la flecha inferior da un error y se muestra erróneamente como una flecha que apunta ligeramente hacia arriba hacia la izquierda. Es decir, el resultado que obtengo es:
Cuando quisiera algo como:
pero, por supuesto, se muestran otros nombres.
Respuesta1
De acuerdo con latikz-cd
manual, además de usar nombres de nodos que puede asignar mediante la alias
opción dentro de la celda correspondiente (consulte el segundo ejemplo a continuación), también puede usar la sintaxis <row number>-<column number>
para indicar el inicio y el final de una flecha cuando usa las opciones from
y to
(consulte el primer ejemplo a continuación) . Sin embargo, estas opciones deben incluirse dentro del argumento opcional. También puede desplazar la flecha usando xshift
o yshift
.
\documentclass[border=10pt, tikz]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
\mathcal{C}
\arrow[bend left=47, pos=0.5]{r}{F}
\arrow[bend right=47, pos=0.5]{r}[swap]{G}
& \mathcal{D}
\arrow[Rightarrow, from=1-2, to=1-1, yshift=0.5pt]{}{N}
\end{tikzcd}
\end{document}
\documentclass[border=10pt, tikz]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
|[alias=R]| \mathcal{C}
\arrow[bend left=47, pos=0.5]{r}{F}
\arrow[bend right=47, pos=0.5]{r}[swap]{G}
& |[alias=L]| \mathcal{D}
\arrow[Rightarrow, from=L, to=R, yshift=0.5pt]{}{N}
\end{tikzcd}
\end{document}
Ambos fragmentos de código dan como resultado el mismo resultado:
Ahora bien, no es demasiado sencillo agregar una flecha hacia abajo, porque las dos coordenadas que representan el inicio y el final de la flecha no son celdas que se puedan seleccionar mediante la estrategia anterior. Sin embargo, podrías ampliar un poco la matriz, como en el siguiente ejemplo:
\documentclass[border=10pt, tikz]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
& {} & \\
\mathcal{O}(X)^{op}
\arrow[bend left=47, pos=0.5]{rr}{\Lambda A}
\arrow[bend right=47, pos=0.5]{rr}[swap]{\Lambda A'}
& & \textbf{Set} \\
& {} &
\arrow[Rightarrow, from=1-2, to=3-2,
shorten >=5pt, shorten <=5pt, xshift=-3.5pt]
{}{\Lambda f}
\end{tikzcd}
\end{document}
Alternativamente, podrías hacer uso de las opciones start anchor
y end anchor
, pero de alguna manera la etiqueta de la flecha doblada inferior está colocada incorrectamente en un tamaño tan pequeño:
\documentclass[border=10pt, tikz]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
|[alias=R]| \mathcal{O}(X)^{op}
\arrow[bend left=47, pos=0.5]{r}{\Lambda A}
\arrow[bend right=47, pos=0.5]{r}[swap]{\Lambda A'}
& |[alias=L]| \textbf{Set}
\arrow[Rightarrow, from=L, to=L,
start anchor={[xshift=-1cm]north}, end anchor={[xshift=-1cm]south}]
{}{\Lambda f}
\end{tikzcd}
\end{document}
La posición de las etiquetas se puede fijar agregando \strut
a cada celda para hacerlas igualmente grandes:
\documentclass[border=10pt, tikz]{standalone}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
|[alias=R]| \mathcal{O}(X)^{op}\strut
\arrow[bend left=47, pos=0.5]{r}{\Lambda A}
\arrow[bend right=47, pos=0.5]{r}[swap]{\Lambda A'}
& |[alias=L]| \textbf{Set}\strut
\arrow[Rightarrow, from=L, to=L,
start anchor={[xshift=-1cm]north}, end anchor={[xshift=-1cm]south}]
{}{\Lambda f}
\end{tikzcd}
\end{document}
Respuesta2
Déjame sugerirte una ruta diferente que te permite:
- trabajar con su documento, que no puede manejar la última
tikz-cd
versión - mientras usa la última
tikz-cd
versión
El enfoque consiste en separar los requisitos en el espacio, es decir, ESTO en un lugar, AQUELLO en otro diferente:
- trabajar con su documento principal, que utiliza el
incompatible documentclass
- trabajar con tantos documentos, representando un diagrama cada uno, según la
standalone
clase
Aquí vamos:
flechas.tex, que es el código publicado con un pequeño giro. Simplemente compílelo, volveremos a ello arrows.pdf
en un minuto.
\documentclass[10pt,border=3mm]{standalone}
%\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
A \arrow[r, bend left=50, ""{name=U, below, draw=red}]
\arrow[r, bend right=50, ""{name=D, draw=red}]
& B
\arrow[Rightarrow, from=U, to=D]
\end{tikzcd}
\end{document}
principal.tex, que utiliza una clase de documento inusual, digamos screenplay
: esto imita diferencias, deficiencias, incompatibilidades, etc. que su clase principal parece tener cuando se trata de cooperación con tikz-cd
.
El guión puede incluso funcionar con tikz-cd, no lo comprobé. pero pretendamos que no es así. como puede ver, simplemente no utiliza ningún dialecto Tikz en absoluto...
Las líneas de código relevantes son:
...
\usepackage{graphicx} % without tikz showing tikz-cd diagram
...
\includegraphics[width=.3\textwidth]{arrows}% i.e. arrows.pdf
...
\documentclass{screenplay}[2012/06/30] % just an alian class
\usepackage{graphicx} % without tikz showing tikz-cd diagram
% ~~~ some shortcuts ~~~~~~~~~~~~
\newcommand\di[2]{\begin{dialogue}{#1}#2\end{dialogue}}
\newcommand\dia[3]{\begin{dialogue}[#2]{#1}#3\end{dialogue}}
\newcommand\newch[1]{\MakeUppercase{#1}}
\newcommand\pr[0]{Proggi}
\newcommand\ld[0]{Lad}
% ~~~ some redefine ~~~~~~~~~~~
\renewcommand\emph{***}
% ~~~~~~~~~~~~~~~~~~~~~~~
\begin{document}
\title{An arrows drama}
\author{MS-SPO}
\maketitle
% ~~~ Characters ~~~~~~~~~~~~~~~~~~~~~~
\newch{Proggi}, a programmer, full of energy.
\newch{Lad}, a nice document creating language, with some bells and whistles.
% ~~~ Let the drama begin ~~~~~~~~~~~
\fadein
\intslug[Night]{A stubborn documentclass}
\pr{} spent already endless hours, while \ld{} keeps being stubborn.
\dia{\pr}{impatient}{Why can't you just do what I'm telling you to do! Why can't you?}
\dia{\ld}{amused}{You did read the manuals, did you?}
\dia{\pr}{about to burst}{Yours, yeah \dots other ones?}
\dia{\ld}{whispering}{Yes: about \emph{standalone} and \emph{graphicx} \dots There you go \dots}
\begin{center}
\includegraphics[width=.3\textwidth]{arrows} % <<<
\end{center}
\fadeout
\end{document}