tikz-cd стрелка между стрелками асимметрична (слишком короткая в одном направлении)

tikz-cd стрелка между стрелками асимметрична (слишком короткая в одном направлении)

Я хочу нарисовать стрелку (А) между двумя стрелками (БиС) в tikz-cd, так чтоАнапрямую касается обоихБиС, как на следующей диаграмме.

правильные стрелки

Приведенный ниже код кажется разумной попыткой построения этой диаграммы, но он асимметричен: средняя стрелка не касается нижней стрелки.

\documentclass{article}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}
    \bullet && \bullet
    \arrow[""{name=0}, from=1-1, to=1-3, bend left]
    \arrow[""{name=1}, from=1-1, to=1-3, bend right]
    \arrow[from=0, to=1]
\end{tikzcd}

\begin{tikzcd}
    \bullet && \bullet
    \arrow[""{name=0}, from=1-1, to=1-3, bend left]
    \arrow[""{name=1}, from=1-1, to=1-3, bend right]
    \arrow[from=1, to=0]
\end{tikzcd}

\end{document}

Вот результат:

неправильные стрелки

(В примере внизу средняя стрелка направлена ​​в противоположном направлении для сравнения. Это показывает, что проблема заключается в нижней стрелке, а не в целевой.)

Почему это происходит и как это исправить?

Обратите внимание, что я делаюнетхочу просто shortenсреднюю стрелку с отрицательной длиной: решение должно работать с любой парой стрелок, и я не хочу угадывать, насколько укоротить среднюю стрелку. (Кроме того, в некоторых случаях я хочу укоротить среднюю стрелку симметрично, что неудобно, если к одному направлению нужно применить дополнительную корректировку.)

решение1

Это вызвано пустым текстом метки над нижней стрелкой. Замена ""{name=1}на ""{name=1, below}typesets текст метки под стрелкой, следовательно, решает вашу проблему.

См. последние два примера в руководстве tikzcd, раздел 2.3.Абсолютное размещение стрелок.

Полный пример:

\documentclass{article}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}
    \bullet && \bullet
    \arrow[""{name=0}, from=1-1, to=1-3, bend left]
    \arrow[""{name=1, below}, from=1-1, to=1-3, bend right]
    \arrow[from=0, to=1]
\end{tikzcd}

\begin{tikzcd}
    \bullet && \bullet
    \arrow[""{name=0}, from=1-1, to=1-3, bend left]
    \arrow[""{name=1, below}, from=1-1, to=1-3, bend right]
    \arrow[from=1, to=0]
\end{tikzcd}

\end{document}

введите описание изображения здесь

Связанный контент