
У меня есть макрос для рисования довольно сложных диаграмм в tikz, который использует pgfkeys, чтобы быть максимально гибким в отношении стрелок, меток и их стилей. Я разрешаю все команды библиотекиCD. Мне нужен параметр/опция, Rrightarrow
напримерамспакет, который я могу передать как pgfkey, который может рисовать тройные (или даже четверные) стрелки, точно так же, как я могу передать параметры leftarrow
, Rightarrow
, equal
, squiggly
, ...
Следующие темыТройные линии в тикзиДревко стрелы костюма в тикзесодержат красивый код, идущий в этом направлении, но я не могу втиснуть его в вариант в стиле стрелки tikz-cd. Я думаю, что понимаю код (второго ответа) второй ссылки, где для того, чтобы предоставить 3-стрелку или 4-стрелку, две разные стрелки перекрываются. Поскольку стрелки моего макроса фиксированы, я не могу использовать это решение. Я думаю, что код первой ссылки можно использовать для предоставления удовлетворительного решения, но: я пока не очень хорошо знаю tikz (я всегда использовал tikzcd), в комментариях там, похоже, подразумевают, что добавить наконечник стрелки к тройной линии сложно. Я попытался немного поиграть с кодом, изменив то, что, по моему мнению, должно быть случайным, но мне не удалось создать ничего конкретного.
решение1
Вы можете сделать так, как предлагается в ссылках, которые вы показываете. Немного тонкий момент заключается в том, что стрелка не учитывается автоматически, поэтому вам нужно quadruple
немного сократить двойную линию в стрелке. (Вы, конечно, можете подстроить double distance
и т. д.) Волнистые стрелки можно получить с помощью украшений, таких как coil
, пожалуйста, дайте мне знать, если вы хотите, чтобы я добавил пример.
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\tikzset{Rightarrow/.style={double equal sign distance,>={Implies},->},
triple/.style={-,preaction={draw,Rightarrow}},
quadruple/.style={preaction={draw,Rightarrow,shorten >=0pt},shorten >=1pt,-,double,double
distance=0.2pt}}
\begin{tikzcd}
a \arrow[r,triple] & b \arrow[r,quadruple]
& c\\
\end{tikzcd}
\end{document}
решение2
Теперь есть красивая упаковка,tikz-nfoldДжонатана Шульца, предлагающего простое решение этой проблемы. Вы можете указать стиль стрелки TikZ scaling nfold=3
(или просто, nfold=3
если вы хотите фиксированную ширину стрелки), чтобы нарисовать тройную стрелку, и аналогично для более высоких стрелок.
По моему опыту, это позволяет создавать более эстетичные стрелки, чем другие решения, и совместимо с различными другими стилями TikZ, которые распространены в коммутативных диаграммах.
Пример:
\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{nfold}
\begin{document}
\begin{tikzcd}
A \arrow[r, Rightarrow, scaling nfold=3] & B \\
C \arrow[r, Rightarrow, nfold=3] & D
\end{tikzcd}
\end{document}
Производит: