LaTeX-Code in Bild umwandeln (C/C++ - bibliothek)

Hi
Ich möchte folgende Funktion realisieren:
Code:
SDL_Surface *mktxt(const char *latexcode);
Ich übergebe der Funktion also ein string mit LaTeX-Code, und möchte daraus dann ein Bild machen. Im Internet gibts zahlreiche online-service, die LaTeX2png-converter anbieten. Gibt es auch eine C/C++ bibliothek die sowas kann?

Das einzige, was ich bisher gefunden habe, ist der weg über die shell. Allerdings ist mein tool bis jetzt systemunabhängig, und würde mich freuen, wenn es das auch bliebe (ist aber nicht zwingend notwendig; ich arbeite unter Linux)

Freue mich über jeden post, der mir irgendwie weiterhilft.
 
Naja, Implementationen von LaTeX selbst sind ja nichts anderes als Programme, die genau das tun, was du willst.
Du musst halt ein LaTeX-System" installieren und wenn du Glück hast, hat es irgendwelche Libs, die du direkt nutzen kannst.
Allerdings wird das dann nicht sehr flott gehen (dauert halt immer ein paar Millisekunden) und wenn du Pech hast, musst du den Umweg über die Kommandozeile gehen.
 
hm.. Also müsste ich sowohl unter win, als auch unter linux diverse übersetzungstool installieren, und vergerleichen, wo identische bibiotheken mitgeliefert werden?

Dann werd ich erstmal über die Kommandozeile gehen.

ein problem habe ich jetzt noch: Wie mache ich das mit der skalierung?
Ich brauche kein ganzen DINA4-Blatt, sondern nur eine formel...
bsp:
Code:
\begin{document}
\begin{align}
x &= \frac{1000}{1000}
\end{align}
\end{document}

Code:
\usepackage{geometry}
\geometry{left=0cm,textwidth=10cm,top=0cm,textheight=10cm}
und
Code:
\setlength{\paperwidth}{10cm}
\setlength{\paperheight}{10cm}
\pagestyle{empty}
\setlength{\topmargin}{0cm}
\setlength{\headheight}{0cm}
\setlength{\headsep}{0cm}
bewirken gar nichts :(

vollständiger testcode:
Code:
\documentclass[12pt,fleqn]{article}
\setlength{\paperwidth}{10cm}
\setlength{\paperheight}{10cm}
\pagestyle{empty}
\setlength{\topmargin}{-1cm}
\setlength{\headheight}{-1cm}
\setlength{\headsep}{-1cm}

\usepackage{amsmath}
\usepackage[ansinew,latin1]{inputenc} %äöü & son scheiß
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{units}
%\usepackage{geometry}
%\geometry{left=0cm,textwidth=10cm,top=0cm,textheight=10cm}


\begin{document*}
\begin{align}
x &= \frac{1000}{1000}
\end{align}
\end{document}
Code:
#!/bin/bash

if [ $# != 1 ] ;
then
 exit 1
fi

latex "${1}.tex" > /dev/null
if [ $? != 0 ] ;
then
 exit 2
fi

convert "${1}.pdf" "${1}.png"
if [ $? != 0 ] ;
then
 exit 3
fi

exit 0
 
Schau dir doch mal an, was das Tool texvc macht (Ist ein Modul von MediaWiki - der Wikipedia-Software). Damit kannst du einen (fast) beliebigen LaTeX-Code in ein PNG Bild umwandeln.
Der interessante Teil (PNG-Konvertieung, Transparenz usw.) wird in der Datei render.ml behandelt.
Du musst allerdings die Sprache OCaml lesen können ...
Ich hab mal einen Artiekl darüber geschrieben, vielleicht hilft dir das weiter:
http://www.kahl-com.de/weblog/2008/08/wordpress-hacking-mathematische-formeln-mit-latex/

mfg, metax.
 
Auch wenn OCaml sehr komisch aussieht, wars lesber :)
Jetzt funktionierts, vielen Dank

mein tex-file:
Code:
\nonstopmode
\documentclass[12pt,fleqn]{article}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[dvips,usenames]{color}

\usepackage[ansinew,latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{units}

\pagestyle{empty}
\begin{document}
$$
x = \frac{1000}{1000}
$$                                       
\end{document}

das script:
Code:
#!/bin/bash

if [ $# != 1 ] ;
then
 exit 1
fi

latex "${1}.tex" > /dev/null
if [ $? != 0 ] ;
then
 exit 2
fi
dvipng -gamma 1.5 -D 120 -T tight --strict "${1}.dvi" -o "${1}.png" > /dev/null

if [ $? != 0 ] ;
then
 exit 3
fi

exit 0
 
Zurück
Oben