varkor / quiver

A modern commutative diagram editor for the web.
https://q.uiver.app
MIT License
2.41k stars 79 forks source link

List of feature ideas #109

Closed pbustillo05 closed 2 years ago

pbustillo05 commented 3 years ago

Hi all! I just discovered quiver and man... this thing rocks! It's going to really improve my work flow as I always work with cumbersome 2- and 3-dimensional diagrams. I am very very new to GitHub (and to TikZ) but I saw on the web interface that we could suggest new features here. So I hope I'm not overstepping... and here is a few features (in order of importance) I thought about while taking my first steps with the software. It's very likely you thought about some (or many) of those features before (and I even saw some related issues), but I'll list them all here in case some are new:

  1. Add a LaTeX compiler and a visualization window of the output pdf: (possibly interesting to work on problems related to issue #46) I noticed that the LaTeX output often looks very different from the rendering in the web interface (and if I understood correctly, it's because, for convenience, the rendering of the web interface is computed in JavaScript) and I figured that it might be difficult to have a live interface rendered directly in LaTeX. However, maybe it's possible to have a situation like in Overleaf where we have a "compile" button (not necessarily with the live compilation implemented) and a seperate window on the side showing the actual TikZ output. This would be awesome to avoid having to go back and fourth between your LaTeX editor and the web interface on things like label placement. Ideally it'd be nice if the compiler could also give us the size of the box surronding the diagram too (to be able to check that it won't overfull the width of the page for example) once we give him the appropriate parameters (font dimension and pagewidth? I don't really know for sure all that matters).
  2. Multiple labels on arrows: (same as issue #92) I think it'd be a wonderful feature to add. It's particularly interesting for dealing with equivalences (where it's nice to add another label with a symbol like $\wr$, $\sim$, $\simeq$, $\cong$,... to say it's invertible) but also to "mark" arrows more generally (you can use symbols, for example as a label through the path of the arrow, to say that this arrow as a particular property, other than being an equivalence)
  3. Flip or rotate by $\pi/2$ the whole diagram: It happens a lot to me that I change my conventions and want to reverse all arrows in my diagrams (or all vertical/horizontal arrows or a part of the diagram). I could use the "reverse" button but it would break a general aesthetic rule that I think is quite common: it's often preferable to have all arrows going rightward or downward (rather than going in all directions) as this makes a paper with many diagrams more readable (it follows the order in which we read in english). Hence I would really enjoy a button flipping the whole diagram, nodes and arrows both, so that it essentially is a mirror version of the previous diagram. This might be possible in TikZ but I don't know how to do it (and it would be a lot cleaner if it was a fonctionality of quiver).
  4. Slide starting/ending point of 2-cells: (related to issue #107) When creating an arrow "between arrows" (from and to invisible labels) it would be very convenient if we can slide (and even potentially offset) the position of say starting/ending point of the 2-cell (similarly to how we can slide normal labels). This becomes quickly important in very crowded diagrams with many 2-cells, in my experience.
  5. Implement functionalities for 3D look: Nothing looks cooler than adding some 3D look to our diagrams... I know tikzcd has a key for arrows called "crossing over" that looks nice for this (and I think there's a library called "background" that makes cool things too for the nodes). It would be awesome to implement this to make diagrams more readable and looking very cool!
  6. Copy/paste part of diagrams: Often a good diagram has many symmetries in it. So it'd be cool if we have tools to copy/paste a subset of a diagram to not have to replicate all parameters to the exact same values. Combining this with item 3 on the list could make for a very nice dynamic way to create complex diagrams with many symmetries.

What do you think about those features? I understand that many of those features might not be useful for everyone but in my personnal experience, they'd be very often used. I also understand if some (or all) of those features are difficult to implement and not a priority at all (or if they've been implemented already and I just didn't see them!). I just thought it'd be interesting to share my first impression. I never coded in JavaScript but I learned many other programming languages for fun when I was younger and I'd be happy to contribute to the project!

Thank you so much to have developped this tool in the first place! The mathematical communtity needs more people with this kind of skills.

Pablo

varkor commented 3 years ago

I think most of the features you're looking for are already planned for quiver, and are simply waiting on me finding the time to implement them. Apart from (1), all of them should be fairly straightforward to implement technically, though there are some design decisions to be made. I'd rather keep comments for individual features in the issues they refer to, rather than having a meta-issue containing several features, though. Some more specific replies:

  1. I don't think this is feasible without a server to render the LaTeX, because it's not convenient to do it entirely client-side (even if it may be technically possible). I would rather address the discrepancies between the JavaScript rendering and the LaTeX rendering (but this requires more TikZ knowledge than I currently have).
  2. As you say, this is covered by #92.
  3. I would like to add this feature, and it's on my to-do list when I have time to work on quiver next. You're welcome to open up a dedicated issue for it.
  4. Yes, this will be covered by #107.
  5. This is covered by #19.
  6. This is covered by #21.
pbustillo05 commented 3 years ago

Thank you for your answers! I'll open a dedicated issue for item 3.

Concerning item 1, I didn't realize there was those technicalities (I don't know anything at all about website development). I still think it might be interesting if it's feasible though: it could help the users identify differences between both rendering, which could help correct them.

varkor commented 2 years ago

I'm going to close this issue, because we now have dedicated issues for all the points but (1). Unfortunately, I think (1) is out of scope, but https://github.com/varkor/quiver/issues/111 contains a nice summary of some of the differences between quiver and the LaTeX output, which I would like to address.