Exportando a pdf para latex generar un .pdf_tex con varias paginas

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 ):

ingrese la descripción de la imagen aquí

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.

Bienvenido a Diseño Gráfico SE. Parece que su problema es de hecho un error y específico de su versión de Inkscape (ya que no lo experimento). Supongo que miró el encabezado del archivo TEX generado por Inkscape y siguió las instrucciones (solo comprobando)?

Respuestas (1)

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. Tus dibujos deben estar en la carpeta "./Figuras/";
  2. Sus archivos temporales (".pdf", ".pdf_tex") se agregarán en la carpeta "./tmp/" (no necesita crear la carpeta "./tmp", se hará automáticamente);
  3. Los 3 comandos siguientes deben colocarse antes de '\begin{document}':

% 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}
Traté de limpiarlo. Espero que sea más legible ahora.