yishn / tikzcd-editor

A simple visual editor for creating commutative diagrams.
https://tikzcd.yichuanshen.de/
MIT License
1.86k stars 100 forks source link

Loops #18

Closed varkor closed 4 years ago

varkor commented 6 years ago

One often want arrows from an object to itself (achieved with the tikzcd loop parameter), but it's only possible to draw arrows between different grid cells at the moment.

yishn commented 6 years ago

Can you post a simple LaTeX code snippet for loops? Do you have an idea how to let users create loops in tikzcd-editor? Currently, creating an arrow is only possible by dragging from one cell to another.

varkor commented 6 years ago
\begin{tikzcd}
A \arrow[loop]
\end{tikzcd}

Produces the following diagram: image As for the interface, I think that not adding arrows when you haven't dragged between two cells is useful (for cancelling arrow placement), so perhaps a button that appears (similar to the "move object" handle) when arrow placement is selected, that adds a loop, would be simplest. The loop could then be manipulated with the existing arrow toolbar. It would be nice to also specify which side of the object the loop is drawn on, too.

yishn commented 6 years ago

Thank you for your input! Just out of curiosity's sake, can you rotate the loop in certain directions? For example, so that the "bump" points to the left?

varkor commented 6 years ago

\arrow[loop left] (or above/below/right) allows you to specify the direction, although specifying the direction a little more explicitly in the code output with out=angle and in=angle may result in slightly prettier loops. (I think these arguments come directly from TikZ, rather than tikz-cd).

technicalguy commented 6 years ago

I reckon the UI for loops and pullbacks (see issue #11) could be similar - a button and a way to change the position (e.g. a handle that can be dragged to rotate it to each of 4 directions [or more]).

ericelliott commented 5 years ago

This is a great suggestion. Identity arrows are very commonly needed to describe basic category theory principles and identity morphisms for axioms.

ericelliott commented 5 years ago

There is a $200 bounty open for the developer who adds this feature.

technicalguy commented 5 years ago

Well I'll see if I can take a look at implementing this in the next week or two...

varkor commented 5 years ago

As there hadn't been much movement on this issue in a while, I went ahead and implemented the feature (pull request at https://github.com/yishn/tikzcd-editor/pull/35). I think the interface works quite well and it should definitely be sufficient for most of the use-cases of loops.

image