Drawing diagrams in Latex?

  1. How to do that?
  2. jcsd
  3. Dr Transport

    Dr Transport 1,528
    Science Advisor
    Gold Member

    what would you like to do?? an example would be helpful in answering the question.
  4. some arrow theoretic diagrams such as in category theory.
  5. OK, so you the most basic things you can do with the latex's own picture environment. But there are other, more advanced options. The most popular might be the the pstricks package, but I'm not sure it works with pdf output. I recomend the pgf package with the tikz drawing macros, because it definitely works with pdf output (and, well, I know it better than pstricks ...).

    All of these let you basically draw pictures by describing them. tikz even has a pretty huge library for specific tasks.

    I don't quite know what you mean by "arrow theoretic diagrams", but if you want to connect boxes with arrows, you might want to look at graphviz. This is a graph visualization tool. It does not use (La)TeX syntax at all, but it can produce eps or pdf output to include in your documents. Good thing about graphviz is that you only need to specify the logical relationships, then graphviz does the whole layout for you.

    hope that helps,
  6. For typesetting diagrams as in category theory, the Xy-pic package is generally the way to go, and it is standard enough that most tex distributions include it (though you could of course download it yourself). The user's guide is well written, and you can usually find an example that does what you want and emulate that.

    For other sorts of diagrams, I second the recommendation of pgf. However, while it is true that Graphviz is able to automate a lot of the work that goes into laying out a diagram (specifically, a graph), it usually is more trouble than it is worth unless you have a lot of nodes, or if you want to automatically generate a diagram from some program's output.
Know someone interested in this topic? Share this thead via email, Google+, Twitter, or Facebook

Have something to add?