Estoy usando Inkscape 0.91 en Kubuntu. En un script (que creé hace algún tiempo) utilizo la siguiente línea de comando:
inkscape -z -D --file=input.svg --export-pdf="output.pdf" --export-latex
Genera dos archivos: output.pdf y output.pdf_tex (entonces puedo agregar la imagen en un archivo tex con \input{output.pdf_tex}).
Desafortunadamente, ya no funciona. El archivo .pdf_tex ahora contiene varias líneas que mencionan otras páginas (página=1, página=2, ...). Ejemplo:
\begin{picture}(1,1.07214514)%
\put(0.84154257,0.80899201){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{text1}}}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{output.pdf}}%
\put(0.84228219,0.13316749){\color[rgb]{0,0,0}\makebox(0,0)[lb]{\smash{text2}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{output.pdf}}%
\end{picture}%
Aquí hay una imagen del archivo svg correspondiente ( y un enlace ):
El segundo \includegraphics menciona una segunda página y si elimino su línea, funciona bien.
¿Sabes por qué la línea de comandos se comporta así con Inkscape 0.91? Puedo eliminar las líneas adicionales manualmente, pero puede haber muchas y, a menudo, uso el comando (cada vez que modifico el archivo .svg y quiero ver cómo se ve en mi archivo pdf), por lo que consume bastante tiempo. .
Gracias de antemano.
Quitar los \includegraphics adicionales en output.pdf_tex no resuelve el problema ya que cada página en output.pdf contiene partes del dibujo. Encontré una solución (propuesta por Biber en launchpad.net) que usa una nueva definición del comando "\includesvg":
% 1 - Establecer las rutas gráficas
\graphicspath{ {./Figures/} {./.tmp/} }
% 2 - Comando utilizado para probar si la compilación del archivo svg es necesaria (es decir, si el archivo .svg es más reciente que el archivo pdf correspondiente)
\newcommand{\executeiffilenewer}[3]{\ifnum\pdfstrcmp{\pdffilemoddate{#1}}{\pdffilemoddate{#2}}>0{\immediate\write18{ [ -d ./.tmp/ ] || mkdir ./.tmp; #3}}\fi}
% 3 - Comando que crea el ".pdf" y ".pdf_tex" a partir del ".svg". La solución está en este comando
\newcommand{\includesvg}[2][\textwidth]{\def\svgwidth{#1}\executeiffilenewer{./Figures/#2.svg}{./.tmp/#2.pdf}{\unexpanded{PDF_FILE="./.tmp/#2.pdf"; inkscape -z --file=./Figures/#2.svg --export-pdf=$PDF_FILE --export-latex; sed -i 's/\\\\/\n/g' ${PDF_FILE}_tex; MAXPAGE=$(pdfinfo $PDF_FILE | grep -oP "(?<=Pages:)\s*[0-9]+" | tr -d " ") ; sed -i "/page=$(($MAXPAGE+1))/,\${/page=/d}" ${PDF_FILE}_tex; } } \input{./.tmp/#2.pdf_tex}}
Con estos tres comandos, se puede mostrar un archivo svg usando "\includesvg" (como usaríamos "\includegraphics"):
\begin{figure}
\centering
\includesvg[0.5\textwidth]{My_Nice_SVG_File} %Where the file is located at: ./Figures/My_Nice_SVG_File.svg
\caption{My_Caption]
\label{My_Label}
\end{figure}
Wrzlprmft