
Aus irgendeinem Grund, dessen Behebung wahrscheinlich zu viel Arbeit bedeuten wird, ohne etwas anderes in meinem Dokument zu beschädigen, funktioniert Tikzcd in meinem Dokument nur im Kompatibilitätsmodus mit der „Alternativen Syntax für Pfeile“, die laut Handbuch „vor dem Erscheinen der Anführungszeichen-Syntax für Beschriftungen verwendet wurde“.
Das bedeutet, dass Code wie:
\arrow[r, Rightarrow, "\phi"]
Funktioniert in meinem Dokument nicht, ich müsste es so schreiben:
\arrow[Rightarrow]{r}{\phi}
Um das gewünschte Ergebnis zu erzielen.
Wie schreibe ich dann Ausdrücke wie diese, [from=A,to=B]
die in folgendem vorkommen:
\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}
Genauer gesagt habe ich versucht, den folgenden Ausdruck zum Funktionieren zu bringen:
\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}
Aber der letzte Pfeil, der von der Mitte des oberen Pfeils nach unten zur Mitte des unteren Pfeils zeigen sollte, gibt einen Fehler aus und wird fälschlicherweise als leicht nach oben links zeigender Pfeil angezeigt. Das heißt, das Ergebnis, das ich erhalte, ist:
Wenn ich etwas möchte wie:
aber natürlich mit der Anzeige anderer Namen.
Antwort1
Entsprechend dertikz-cd
Handbuch, außer den Knotennamen, die Sie über die alias
Option in der jeweiligen Zelle zuweisen können (siehe zweites Beispiel unten), können Sie auch die Syntax verwenden, <row number>-<column number>
um den Anfang und das Ende eines Pfeils bei Verwendung der Optionen from
und zu kennzeichnen to
(siehe erstes Beispiel unten). Diese Optionen sollten jedoch in das optionale Argument eingefügt werden. Sie können den Pfeil zusätzlich mit xshift
oder verschieben 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}
Beide Codeausschnitte führen zur gleichen Ausgabe:
Nun ist es nicht ganz so einfach, einen nach unten gerichteten Pfeil hinzuzufügen, da die beiden Koordinaten, die den Anfang und das Ende des Pfeils darstellen, keine Zellen sind, die mit der obigen Strategie ausgewählt werden können. Sie könnten die Matrix jedoch ein wenig erweitern, wie im folgenden Beispiel:
\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}
start anchor
Alternativ könnte man auch die Optionen und verwenden end anchor
, allerdings ist die Beschriftung des unteren gebogenen Pfeils in so kleiner Größe irgendwie falsch platziert:
\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}
Die Position der Beschriftungen kann festgelegt werden, indem man \strut
zu jeder Zelle ein hinzufügt, um sie gleich groß zu machen:
\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}
Antwort2
Ich möchte Ihnen einen anderen Weg vorschlagen, der Ihnen Folgendes ermöglicht:
tikz-cd
Arbeiten Sie mit Ihrem Dokument, das die neueste Version nicht verarbeiten kann- bei Verwendung der neuesten
tikz-cd
Version
Der Ansatz besteht darin, die Anforderungen räumlich aufzuteilen, also DIES an einer Stelle, DAS an einer anderen:
- arbeiten Sie mit Ihrem Hauptdokument, das die
incompatible documentclass
- Arbeiten Sie mit so vielen Dokumenten, die jeweils ein Diagramm darstellen, basierend auf der
standalone
Klasse
Auf geht's:
Pfeile.tex, das ist Ihr geposteter Code mit einer kleinen Abwandlung. Kompilieren Sie ihn einfach, wir kommen arrows.pdf
gleich darauf zurück.
\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}
main.tex, das beispielsweise eine ungewöhnliche Dokumentklasse verwendet: screenplay
Dies ahmt die Unterschiede, Mängel, Inkompatibilitäten usw. nach, die Ihre Hauptklasse in Bezug auf die Zusammenarbeit mit zu haben scheint tikz-cd
.
Screenplay funktioniert möglicherweise sogar mit Tikz-CD, ich habe es nicht überprüft. Aber tun wir mal so, als ob es nicht so wäre. Wie Sie sehen, wird einfach überhaupt kein Tikz-Dialekt verwendet ...
Die relevanten Codezeilen sind:
...
\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}