LaTeX Pictures

LaTeX Pictures
Version 3.03
June 8, 2023

About LaTeX Pictures

The LaTeX Pictures.ipf and LaTeX Palettes.ipf procedure files implement a user interface for creating high-quality typeset mathematical equations using the LaTeX markup language.

Igor 7 or later is required. No installation of any LaTeX-related software is required, but an active and working internet connection is. If your copy of Igor can open this url, your internet connection should be fine:

Print FetchURL("http://www.wavemetrics.net")[0,60]

CodeCogs - An Open Source Scientific Library

The pictures are rendered by the online API for the CodeCogs Equation Editor at:

https://editor.codecogs.com/docs/4-LaTeX_rendering.php

Please comply with their Fair Usage Policy:

https://editor.codecogs.com/support/3-fair_usage.php

CodeCogs - An Open Source Scientific Library

Picture Formats

The LaTeX markup is rendered into PNG or (on Macintosh)  PDF or (on Windows) EMF format and inserted into Igor annotations or drawn with DrawPICT (Igor's drawing tools). Igor 9 and later can also use PDF on Windows.

 

LaTeX Pictures screenshot

 

Installation

Place everything in your Igor Pro <version> Users folder, inside the "User Procedures" sub folder.

Select "Show Igor Pro User Files" from Igor's Help menu.

Move the following items into the now-visible "User Procedures" folder:
 

  • LaTeX Palettes (folder)
  • LaTeX Palettes.ipf (procedure file)
  • LaTeX Pictures.ipf (procedure file)

LaTeX Syntax

See the "LaTeX Help" button in the panel and search online for "LaTeX math mode syntax" to learn what kinds of
LaTeX commands will work with this implementation.

(There are some quirks about extra backslashes to get the right number of backslashes through Igor's command language and all the way across the internet to the LaTex renderer, but using the LaTeX Pictures Panel should allow you to ignore this issue.)

Using the LaTeX Pictures Panel

To open the LaTeX Pictures panel, enter the following in your Igor experiment's Procedure window:

#include "LaTeX Pictures"

Close the Procedure window (or click Compile).
A new LaTeX menu should appear.
Choose "LaTeX Pictures" from the menu.

Either enter the LaTeX markup text directly into the "Enter LaTeX Expression" area or click the "LaTeX Palettes" popup to first load and then select the LaTeX palette(s) to build up an expression.


Bring the Graph, Layout, or Panel window you want to add the LaTeX picture to to the front, then click either New Annotation (or New DrawPICT).


To add equations to Notebook windows, use the Copy Picture button and then paste into the Notebook.


Choose "_new_" from the LaTeX Pictures popup menu to start editing a new equation.


You can select a previously created equation from the same popup menu.


If you change the LaTeX markup text manually, you'll need to click the Update Picture button, but other settings update immediately if you have LaTeX Auto Update checked in the LaTeX menu. Unlike graphs, layouts or panels, notebook equations do not update when you modify a LaTeX Picture this way.

Using LaTeX Palettes

Clicking in a palette inserts the markup into the expressions area. Some markups incorporate the selected text into the result.

For example:
 

  • Type "x^2+y^2" into the "Enter LaTeX Expression" area. This is LaTeX markup for exactly what you think it is.
  • Now select what you just typed.
  • Choose the "Accents and Bars" palette, scroll down to the square root of x+y.
  • Click the square root of x+y item.
  • Your selection is transformed into "\sqrt{x^2+y^2}", and the resulting picture is shown.

If you look at the bottom of the "Accents and Bars" palette, you'll see that the LaTeX markup is shown as "\sqrt{#x+y#}", which is non-standard LaTeX.

I've used the # symbol to delimit the part that gets replaced by the selected text. (If there's no selection only the # symbols are removed.)
 

Customizing LaTeX Palettes

You can make your own palettes or amend the palettes I've provided. The LaTeX Palettes procedure has a ShowLaTeXPaletteCreator() function that implements a VERY rudimentary interface.

Adding rows and columns or rearranging items is best done with the "Show LaTeX Table" button. Enter the LaTeX into the table, then re-select the "category" (palette) to fix the listbox selection wave.

Don't forget to add # characters around what should be replaced by any current selection.

Click the "Render all Cells from Plane 1" to render all the markup to CodeCogs (the resulting pictures are stored in Plane 0).
 

Compatibility

PNG is most compatible between Macintosh and Windows.

PDF is supported by Igor 6 or later on Macintosh and on Igor 9 and later on Windows.

Because PNG is only a bitmap format, you might want to render a large bitmap and shrink it down to preserve sharpness when printing at high resolution. That's what the "Shrink DrawPICTs by" setting is for.

Project Details

Current Project Release

LaTeX Pictures 3.03

Release File: LaTeX Pictures 3.03.zip (179.45 KB)
Version: 3.03
Version Date:
Version Major: 3
Version Patch Level: 03
OS Compatibility: Windows Mac-Intel
Release Notes:

Version 3.03 updates URLs pointing to CodeCogs.

View All Releases

Nicely done. I am finding that the Sans (sic) Serif font choice shows up as serif (see the picture). Also, the header says comic sans was removed but these code lines remain ...

    // Font
    char font[kFontNameBytes]           // "Comic Sans;Computer Modern;Helvetica;San Serif;Verdana;"


    String font=""  // default
    strswitch(ts.font)
        default:
        case "San Serif":
            break
        case "Verdana":
            font= "\\fn_jvn "   // the trailing space is required
            break
        case "Comic Sans":
            font= "\\fn_cs "    // the trailing space is required
            break
        case "Computer Modern":
            font= "\\fn_cm "    // the trailing space is required
            break
        case "Helvetica":
            font= "\\fn_phv "   // the trailing space is required
            break
    endswitch

Based on CodeCoges setFont command, the default font family is Latin Modern, which is serif IIRC. The improvement to the font family selection is as below.

    String font=""  // default
    strswitch(ts.font)
        // serif font families
        case "Latin Modern":    // default
            break
        case "Computer Modern":
            font= "\\fn_cmb "   // the trailing space is required -- NOTE MISSING "b" HERE
            break
        // sans serif font families
        case "Verdana":
            font= "\\fn_jvn "   // the trailing space is required
            break
        case "Helvetica":
            font= "\\fn_phv "   // the trailing space is required
            break
        case "Sans Serif 1":
            font= "\\fn_tx "    // the trailing space is required
            break
        case "Sans Serif 2":
            font= "\\fn_px "    // the trailing space is required
            break
    endswitch

 

example.png (164.55 KB)

I've updated the help file with the revised links.

I have added the fair usage to the procedure windows that implement LaTeX Pictures.

As to the "integrate" suggestion, perhaps you mean integrate true LaTeX into annotations, etc?

Igor 8 does have a subset of LaTex built-in:

DisplayHelpTopic "Igor TeX"

Forum

Support

Gallery

Igor Pro 9

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More