# What GUI applications are there to assist in generating graphics for TeX?

I found GeoGebra to be a useful tool to help generate code for graphs. I suppose there must be other tools to help draw diagrams such as Sets/Venn Diagrams or Electrical Circuits (Logic Gates). Which ones would you suggest?

-
Check out TeXample and look at the section "Tools that generate PGF/TikZ code" for some other ideas. LaTeXDraw is good for PSTricks. – DJP Aug 30 '11 at 14:47

I think the best option for diagrams, circuits, etc. is Dia.

Dia is roughly inspired by the commercial Windows program 'Visio,' though more geared towards informal diagrams for casual use. It can be used to draw many different kinds of diagrams. It currently has special objects to help draw entity relationship diagrams, UML diagrams, flowcharts, network diagrams, and many other diagrams. It is also possible to add support for new shapes by writing simple XML files, using a subset of SVG to draw the shape.

It can export diagrams to a number of formats, including EPS, SVG, XFIG, WMF and PNG, as well as LaTeX formats such as PGF, PStricks and Metapost.

-

The list misses TikzEdt. It provides a GUI and semi automatic drawing tools. For details: TikzEdt web site. Available for linux/windows. Upon right clicking in the figure (on right) window, it offers a number of options to draw using the mouse. After drawing the tikz code will be inserted in the left window automatically. On the left panel, there are some styles/shapes etc from where the corresponding code can be inserted. The figure can be exported to number of formats like pdf, png, jpeg etc. And it is free.

-
Just a small note - tried to install it on Ubuntu 11.04 Natty; first tried getting the source from SVN, but there is no README I could see; and I don't know much of C#, which this is programmed in. Luckily, there is a binary Linux build, see TikzEdt_0_2_2_linux_x86.tar.gz - TikzEdt 0.2.2 for Linux 32bit; unfortunately it requires 60MB of mono-complete, and my version is also too old; luckily the same link has instructions on how to get it working on 11.04, and thankfully it works for me! – sdaau Feb 17 '14 at 19:48
Also, nice that this version (0.2.2), renders nodes according to their width/height settings in code (in contrast, tikzit 0.7 doesn't - it always shows the nodes in same size, even if I modify minimum width and minimum height in the code). – sdaau Feb 17 '14 at 19:52
tizkedt have not been updated since june 2013. That is verylong time in computer scale. I wonder if it is still alive. – Nasser Dec 1 '14 at 5:52

Xfig is another GUI that has very good interaction with LaTeX. It is an X Windows drawing utility that comes with a library for drawing circuit diagrams. It runs on Windows through Cygwin/X.

Here's a screenshot from the homepage showing the interface:

Here is a list of all the available libraries (you would probably be interested in the electrical/logical libraries):

• Various 3D arrows
• Audiovisual components
• Some buildings
• Some charts (polar, log-log)
• Various computers
• DSP (Digital Signal Processor) components
• Electrical - electrical objects, e.g. connectors
• Electronic Physical - symbols for creating electronic wiring diagrams or layouts
• Electronic Schematic - symbols for creating electronic schematics
• ERD (Chen's model of Entity Relations)
• Examples - various examples of xfig drawings contributed by users
• Flags of various countries and some U.S. states
• Flowchart symbols
• GUI widgets (buttons, sliders, etc.)
• Hospital equipment
• Knitting symbols
• Various printer labels (CD, Avery address labels)
• Logic symbols
• Maps - outline maps of countries, U.S. states and Canadian provinces
• DIN Mechanical symbols
• Miscellaneous - various fun items here
• Music symbols
• Networking devices
• Office equipment - filing cabinet, telephone, overhead projector
• Optics symbols
• Process Flowsheet - chemical process flow symbols
• Structural Analysis symbols
• Unified Modelling Language (UML) symbols
• Welding - common welding patterns and errors

Interaction with LaTeX is done by exporting the canvas:

• as 2 separate files: One containing the lines graphics (in EPS or PDF format), and one containing the formatted text; or
• as a single EPS or PDF from which you can use the psfragx package (or psfrag) to convert literal strings into LaTeX typeset. Although I've never used it, there's a deprecated xfigfrag extension to Xfig that provides a pdffrag functionality.
-
Unfortunately, Xfig is also practically dead, even though many people still use it productively. The project has not seen a new version for more than 10 years and the user interface is pretty old-fashioned and awkward. So while Xfig certainly is a powerful tool for those that are accustomed to it, I would not recommend it to newbies. – Daniel Mar 4 '12 at 16:07
Xfig was replaced/extended a while ago by Ipe (ipe has 'figtoipe' converter). ipe was last updated on : 2013-11-07 – Harish Kumar Nov 25 '13 at 2:33

Another approach is to use Inkscape. If you export to eps or pdf it puts the vector drawing in one file and the text in a tex file, see http://ctan.sqsol.co.uk/info/svg-inkscape/InkscapePDFLaTeX.pdf. The integration is perhaps not as elegant as with software designed as an interface for LaTeX packages but offers the full potential of Inkscape.

-
Inkscape knows how to export to TeX with PSTricks...so you can go this route, though the export is not complete yet. There is a begining of an extension to do this for TikZ, but it's very primitive. – Yossi Farjoun Aug 30 '11 at 19:41

LaTeXDraw is a Java-based graphical drawing editor.

• Generates PSTricks code, or directly creates PDF or PS pictures.
• Imports: SVG, PSTricks.
• Exports: SVG, eps, jpg, bmp, png, ppm.

-
This is exactly what I was looking for, thanks. – Alfredo Hernández Feb 17 '14 at 17:23

The list misses Ipe. From wikipedia link:

Ipe extensible drawing editor is a free vector graphics editor for creating figures in PDF or EPS format. It can be used for making small figures for inclusion into LaTeX documents as well as making multi-page PDF presentations. It is developed by Otfried Cheong since 1993 and initially worked on SGI workstations only. Ipe 6 was released in 2003 which changed the file format into XML code embedded into PDF and EPS files. Ipe 7 was released in 2009. Ipe 7 (see below) can be compiled under Windows, Mac OS X and Unix but binaries are available for many distributions.

Also

IPE allows the user to insert text objects containing LaTeX code. This is converted to vector graphics by parsing the output of pdfTeX. This is useful for creating figures to be included in scientific documents which often contain equations. It also results in the same font being used for both the text and figures of the document. This is often not the case if other drawing programs are used.

Below an example drawing using different fonts.

-
Just a small note about ipe - for some reason, I always thought you can draw in ipe, and then export as Tikz / Latex code; but I just checked my install (Ipe 7.0.10), and it can only save as .ipe .xml, .pdf or .eps ; and the same goes for input files (although, it cannot open arbitrary .pdf - apparently can open only those produced by itself). – sdaau Mar 25 '14 at 13:10
@sdaau pdftoipe converts an arbitrary PDF file to an XML file readable by ipe. The Ubuntu 12.04 LTS repository also offers svgtoipe and figtoipe. – Serge Stroobandt Apr 3 '14 at 17:18
As mentioned above, ipe can be considered the successor to Xfig. Be sure to check out ipe's Wikipedia entry as it features amongst others a link to a primer as well as a nice screenshot absent on the official site. – Serge Stroobandt Apr 7 '14 at 9:50

jpgfdraw is a Java program for creating vector graphics which can be used with LaTeX. You can construct and edit shapes using lines, cubic Bézier segments and text.

A screenshot from the documentation:

You can export the pictures as

• a pgfpicture environment for inclusion in a LaTeX document
• a complete LaTeX single-paged document
• a LaTeX package based on flowfram
• an EPS image
• a scalable vector graphics (SVG) image
• a PNG image

-
jpgfdraw has been replaced by Flowframtk dickimaw-books.com/apps/flowframtk – shivams Jun 1 at 9:27

There is KtikZ/QtikZ available for linux/windows. This is very useful for writing tikz code as the output is displayed on the fly. It is freely available.

-

Another nice tool is TikZit, but you won't be happy if you don't want to code Tikz/PGF manually. But probably it helps a lot if you don't want to select coordinates manually.

The manual page contains some screenshots.

 a screenshot of tikzit 0.7 on Ubuntu 11.04 Natty:

-
Note about the edit screenshot: on Ubuntu 11.04 Natty, I cannot install a compiler with Objective C 2 features; and Browse /tikzit-0.9 at SourceForge.net notes: "Changes since 0.7: Compilers without basic Objective C 2 support cannot be used to compile TikZiT any more"; which is why I could only compile and screenshot that version at this time. – sdaau Feb 17 '14 at 18:01

Another Java program is jPicEdt. It is described as "open source, multi-platform and interactive picture editor for LaTeX and PSTricks".

A screenshot with the according Latex output and the code produced by jPicEdt:

As you can see it supports formulae:

The code it exports:

%%Created by jPicEdt 1.4.1_03: mixed JPIC-XML/LaTeX format
%%Sun Mar 04 13:56:51 CET 2012
%%Begin JPIC-XML
%<?xml version="1.0" standalone="yes"?>
%<jpic x-min="15" x-max="140" y-min="30" y-max="80" auto-bounding="true">
%<multicurve points= "(15,55);(20,70);(40,65);(40,65);(40,65);(60,45);
%   (60,45);(60,45);(85,70);(85,70);(85,70);(90,70);
%   (90,70)"
%    fill-style= "none"
%    />
%<ellipse p3= "(140,30)"
%    p2= "(140,55)"
%    p1= "(105,55)"
%    closure= "pie"
%    angle-end= "256.61"
%    angle-start= "98.13"
%    fill-style= "none"
%    />
%<text text-vert-align= "center-v"
%    anchor-point= "(50,30)"
%    text-frame= "noframe"
%    text-hor-align= "center-h"
%    fill-style= "none"
%    >
%$a_4=3*\int z dz$
%</text>
%<parallelogram p3= "(135,65)"
%    p2= "(135,80)"
%    p1= "(105,80)"
%    fill-style= "none"
%    />
%</jpic>
%%End JPIC-XML
%LaTeX-picture environment using emulated lines and arcs
%You can rescale the whole picture (to 80% for instance) by using the command \def\JPicScale{0.8}
\ifx\JPicScale\undefined\def\JPicScale{1}\fi
\unitlength \JPicScale mm
\begin{picture}(140,80)(0,0)
\linethickness{0.3mm}
\qbezier(15,55)(19.84,65.47)(29.38,65.62)
\qbezier(29.38,65.62)(38.91,65.78)(40,65)
\multiput(40,65)(0.12,-0.12){167}{\line(1,0){0.12}}
\multiput(60,45)(0.12,0.12){208}{\line(1,0){0.12}}
\put(85,70){\line(1,0){5}}
\linethickness{0.3mm}
\multiput(119.53,30.18)(0.49,-0.06){1}{\line(1,0){0.49}}
\multiput(119.04,30.25)(0.49,-0.07){1}{\line(1,0){0.49}}
\multiput(118.55,30.32)(0.49,-0.08){1}{\line(1,0){0.49}}
\multiput(118.07,30.41)(0.48,-0.09){1}{\line(1,0){0.48}}
\multiput(117.59,30.5)(0.48,-0.1){1}{\line(1,0){0.48}}
\multiput(117.11,30.61)(0.48,-0.1){1}{\line(1,0){0.48}}
\multiput(116.64,30.72)(0.47,-0.11){1}{\line(1,0){0.47}}
\multiput(116.17,30.85)(0.47,-0.12){1}{\line(1,0){0.47}}
\multiput(115.71,30.98)(0.46,-0.13){1}{\line(1,0){0.46}}
\multiput(115.25,31.12)(0.46,-0.14){1}{\line(1,0){0.46}}
\multiput(114.8,31.27)(0.45,-0.15){1}{\line(1,0){0.45}}
\multiput(114.36,31.44)(0.44,-0.16){1}{\line(1,0){0.44}}
\multiput(113.92,31.61)(0.44,-0.17){1}{\line(1,0){0.44}}
\multiput(113.49,31.79)(0.43,-0.18){1}{\line(1,0){0.43}}
\multiput(113.06,31.97)(0.21,-0.09){2}{\line(1,0){0.21}}
\multiput(112.65,32.17)(0.21,-0.1){2}{\line(1,0){0.21}}
\multiput(112.24,32.38)(0.2,-0.1){2}{\line(1,0){0.2}}
\multiput(111.84,32.59)(0.2,-0.11){2}{\line(1,0){0.2}}
\multiput(111.45,32.81)(0.2,-0.11){2}{\line(1,0){0.2}}
\multiput(111.06,33.04)(0.19,-0.11){2}{\line(1,0){0.19}}
\multiput(110.69,33.28)(0.19,-0.12){2}{\line(1,0){0.19}}
\multiput(110.33,33.52)(0.18,-0.12){2}{\line(1,0){0.18}}
\multiput(109.97,33.77)(0.18,-0.13){2}{\line(1,0){0.18}}
\multiput(109.63,34.03)(0.17,-0.13){2}{\line(1,0){0.17}}
\multiput(109.3,34.3)(0.17,-0.13){2}{\line(1,0){0.17}}
\multiput(108.98,34.57)(0.16,-0.14){2}{\line(1,0){0.16}}
\multiput(108.66,34.85)(0.16,-0.14){2}{\line(1,0){0.16}}
\multiput(108.36,35.13)(0.15,-0.14){2}{\line(1,0){0.15}}
\multiput(108.08,35.42)(0.14,-0.15){2}{\line(0,-1){0.15}}
\multiput(107.8,35.72)(0.14,-0.15){2}{\line(0,-1){0.15}}
\multiput(107.53,36.02)(0.13,-0.15){2}{\line(0,-1){0.15}}
\multiput(107.28,36.33)(0.13,-0.15){2}{\line(0,-1){0.15}}
\multiput(107.04,36.64)(0.12,-0.16){2}{\line(0,-1){0.16}}
\multiput(106.81,36.96)(0.11,-0.16){2}{\line(0,-1){0.16}}
\multiput(106.6,37.28)(0.11,-0.16){2}{\line(0,-1){0.16}}
\multiput(106.4,37.61)(0.1,-0.16){2}{\line(0,-1){0.16}}
\multiput(106.21,37.94)(0.09,-0.16){2}{\line(0,-1){0.16}}
\multiput(106.03,38.27)(0.18,-0.33){1}{\line(0,-1){0.33}}
\multiput(105.87,38.61)(0.16,-0.34){1}{\line(0,-1){0.34}}
\multiput(105.72,38.95)(0.15,-0.34){1}{\line(0,-1){0.34}}
\multiput(105.59,39.29)(0.14,-0.34){1}{\line(0,-1){0.34}}
\multiput(105.47,39.63)(0.12,-0.35){1}{\line(0,-1){0.35}}
\multiput(105.36,39.98)(0.11,-0.35){1}{\line(0,-1){0.35}}
\multiput(105.26,40.33)(0.09,-0.35){1}{\line(0,-1){0.35}}
\multiput(105.19,40.68)(0.08,-0.35){1}{\line(0,-1){0.35}}
\multiput(105.12,41.04)(0.07,-0.35){1}{\line(0,-1){0.35}}
\multiput(105.07,41.39)(0.05,-0.35){1}{\line(0,-1){0.35}}
\multiput(105.03,41.75)(0.04,-0.36){1}{\line(0,-1){0.36}}
\multiput(105.01,42.1)(0.02,-0.36){1}{\line(0,-1){0.36}}
\multiput(105,42.46)(0.01,-0.36){1}{\line(0,-1){0.36}}
\multiput(105,42.46)(0.01,0.36){1}{\line(0,1){0.36}}
\multiput(105.01,42.82)(0.02,0.36){1}{\line(0,1){0.36}}
\multiput(105.03,43.17)(0.03,0.36){1}{\line(0,1){0.36}}
\multiput(105.06,43.53)(0.05,0.35){1}{\line(0,1){0.35}}
\multiput(105.11,43.88)(0.06,0.35){1}{\line(0,1){0.35}}
\multiput(105.17,44.24)(0.08,0.35){1}{\line(0,1){0.35}}
\multiput(105.25,44.59)(0.09,0.35){1}{\line(0,1){0.35}}
\multiput(105.34,44.94)(0.1,0.35){1}{\line(0,1){0.35}}
\multiput(105.44,45.29)(0.12,0.35){1}{\line(0,1){0.35}}
\multiput(105.56,45.63)(0.13,0.34){1}{\line(0,1){0.34}}
\multiput(105.69,45.98)(0.15,0.34){1}{\line(0,1){0.34}}
\multiput(105.84,46.32)(0.16,0.34){1}{\line(0,1){0.34}}
\multiput(106,46.66)(0.17,0.33){1}{\line(0,1){0.33}}
\multiput(106.17,46.99)(0.09,0.17){2}{\line(0,1){0.17}}
\multiput(106.35,47.32)(0.1,0.16){2}{\line(0,1){0.16}}
\multiput(106.55,47.65)(0.11,0.16){2}{\line(0,1){0.16}}
\multiput(106.77,47.97)(0.11,0.16){2}{\line(0,1){0.16}}
\multiput(106.99,48.29)(0.12,0.16){2}{\line(0,1){0.16}}
\multiput(107.23,48.6)(0.12,0.15){2}{\line(0,1){0.15}}
\multiput(107.48,48.91)(0.13,0.15){2}{\line(0,1){0.15}}
\multiput(107.74,49.22)(0.14,0.15){2}{\line(0,1){0.15}}
\multiput(108.01,49.51)(0.14,0.15){2}{\line(0,1){0.15}}
\multiput(108.3,49.81)(0.15,0.14){2}{\line(1,0){0.15}}
\multiput(108.6,50.09)(0.15,0.14){2}{\line(1,0){0.15}}
\multiput(108.91,50.37)(0.16,0.14){2}{\line(1,0){0.16}}
\multiput(109.23,50.65)(0.17,0.13){2}{\line(1,0){0.17}}
\multiput(109.56,50.91)(0.17,0.13){2}{\line(1,0){0.17}}
\multiput(109.9,51.17)(0.18,0.13){2}{\line(1,0){0.18}}
\multiput(110.25,51.43)(0.18,0.12){2}{\line(1,0){0.18}}
\multiput(110.61,51.67)(0.19,0.12){2}{\line(1,0){0.19}}
\multiput(110.98,51.91)(0.19,0.12){2}{\line(1,0){0.19}}
\multiput(111.36,52.14)(0.19,0.11){2}{\line(1,0){0.19}}
\multiput(111.75,52.36)(0.2,0.11){2}{\line(1,0){0.2}}
\multiput(112.15,52.58)(0.2,0.1){2}{\line(1,0){0.2}}
\multiput(112.55,52.79)(0.21,0.1){2}{\line(1,0){0.21}}
\multiput(112.97,52.98)(0.21,0.09){2}{\line(1,0){0.21}}
\multiput(113.39,53.17)(0.21,0.09){2}{\line(1,0){0.21}}
\multiput(113.82,53.35)(0.44,0.17){1}{\line(1,0){0.44}}
\multiput(114.26,53.53)(0.44,0.16){1}{\line(1,0){0.44}}
\multiput(114.7,53.69)(0.45,0.15){1}{\line(1,0){0.45}}
\multiput(115.15,53.84)(0.46,0.15){1}{\line(1,0){0.46}}
\multiput(115.61,53.99)(0.46,0.14){1}{\line(1,0){0.46}}
\multiput(116.07,54.13)(0.47,0.13){1}{\line(1,0){0.47}}
\multiput(116.54,54.25)(0.47,0.12){1}{\line(1,0){0.47}}
\multiput(117.01,54.37)(0.48,0.11){1}{\line(1,0){0.48}}
\multiput(117.48,54.48)(0.48,0.1){1}{\line(1,0){0.48}}
\multiput(117.96,54.57)(0.48,0.09){1}{\line(1,0){0.48}}
\multiput(120.03,30.13)(0.12,0.59){21}{\line(0,1){0.59}}\multiput(118.45,54.66)(0.12,-0.36){34}{\line(0,-1){0.36}}
\put(50,30){\makebox(0,0)[cc]{$a_4=3*\int z dz$}}

\linethickness{0.3mm}
\put(105,80){\line(1,0){30}}
\put(105,65){\line(0,1){15}}
\put(135,65){\line(0,1){15}}
\put(105,65){\line(1,0){30}}
\end{picture}

-

I didn't see Cirkuit mentioned here already, so here are a few words from the homepage:

Cirkuit is a KDE4 application to generate publication-ready figures. It was born as a KDE frontend for the Circuit macros by Dwight Aplevich, but it now supports different backends. Cirkuit builds a live preview of the source code and can export the resulting images in several formats (EPS, PDF, PNG, SVG, ...). ...
In addition to Circuit Macros, the TikZ and Gnuplot backends are currently supported. Some examples generated with TikZ can be found here. ...

... and a screenshot:

-

mathematical tool GCLC/WinGCLC by Predrag Janicic

What is GCLC? GCLC ((c) Predrag Janicic 1996-2009) (from "Geometry Constructions->LaTeX converter") is a tool for visualizing and teaching geometry, and for producing mathematical illustrations. GCLC provides easy-to-use support for many geometrical constructions, isometric transformations, conics, parametric curves, flow control, automated theorem proving, etc. The basic idea behind GCLC is that constructions are formal procedures, rather than drawings. Thus, in GCLC, producing mathematical illustrations is based on "describing figures" rather than of "drawing figures". Figures can be displayed and exported to LaTeX and other formats. WinGCLC is the Windows version of GCLC and provides a range of additional functionalities.

http://www.emis.de/misc/software/gclc/

-

TpX: TeX drawing tool

TpX is a simple graphical editor for Windows for inclusion graphics into TeX files. It can also be used as a standalone editor for vector graphics.

http://tpx.sourceforge.net/

http://sourceforge.net/projects/tpx/

-

LatexDraw is very good in generating PStricks Codes. Its very easy to generate these codes automatically by drawing the figures using LatexDraw. You can get this amazing free software at this link: http://latexdraw.sourceforge.net/

We have to draw somewhat like this:

and the PStricks codes are generated side by side !!

-
LaTeXDraw was already mentioned by Lian Tze Lim. – Torbjørn T. May 30 '14 at 8:45
Yes I have seen .. and I voted up for that. Just wanted to share my views too. – Debashish May 30 '14 at 8:46
Personally, I don't really see the point of having two answers mentioning the same software. (I don't mean to sound hostile or anything, I just don't think this answer was necessary.) – Torbjørn T. May 30 '14 at 8:53
ok ... i don't mind – Debashish May 30 '14 at 8:55
@Debashish You could have edited the answer mentioning LaTeXDraw to include more information. This is the standard practice on the Stackexchange network. – shivams Jun 1 at 7:27