Necesito generar algunos .pngs de toda la página (de hecho, necesito pegar las páginas izquierda y derecha, actualmente estoy haciendo esto con imagemagick). Soy consciente de que esto se puede hacer con la clase independiente, pero necesito hacerlo con libros completos en la clase de memorias (comoesteuno).
Podría hacer esto obteniendo el pdf y luego usando algunas utilidades de pdf, pero me preguntaba si había formas más eficientes de hacerlo (ya que lo haré miles de veces). Lo más cerca que estoy de mi resultado ideal es usar dvipng, usando la -T bbox
opción, que lamentablemente omite algunos márgenes. ¿Alguna otra opción que funcione directamente con el archivo .tex o la salida .dvi?
Para un caso específico, teniendo como archivo fuente este:
\documentclass[smalldemyvopaper,11pt]{memoir}
\usepackage{lipsum}
\begin{document}
\lipsum[1-5]
\end{document}
Y luego, al usar el comando, dvipng -T 5.675in,8.5in example.dvi
se muestra una imagen realmente diferente a la esperada. La 5.675in,8.5in
parte fue tomada del documento de la clase de memorias.tabla 1.3. Observa cómo se corta la parte izquierda también.
Respuesta1
Si tiene acceso a él, usaría la pdftoppm
utilidad que forma parte de las poppler
utilidades para manipular archivos pdf.
(No estoy seguro de lo que quiso decir con tener las páginas izquierda y derecha "pegadas").
Tomando su archivo de ejemplo (que nombro como testpng.tex
) puedo ejecutar
pdflatex testpng.tex
que genera las páginas como archivos PDF. entonces corro
pdftoppm -png testpng.pdf tpn
(el -png
interruptor solicita generar en formato png y el tpn
argumento establece el prefijo de los archivos png de salida) Este comando genera tres archivos png (ya que comenzó con tres páginas en la salida PDF) llamados tpn-1.png
, tpn-2.png
y tpn-3.png
. La segunda página, por ejemplo, parece
que creo que tiene los márgenes correctos. Puedes leer elpágina de manualpara ver qué más puede hacer.
Una alternativa es utilizar la dvipng
herramienta que, como señaló el OP, se ejecuta más rápido. El problema que observó el OP es que después de especificar el tamaño del papel, los márgenes aparecen incorrectamente.
Esto se debe a que dvipng
las salidas se basan en el -T
parámetro:
- Si
-T bbox
se especifica, entonces dvipng genera una imagen que es el rectángulo más pequeño que incluye- elorigen dvi(que por defecto es el punto a 1 pulgada tanto horizontal como verticalmente desde la esquina superior izquierda de la página)
- y toda la tinta en la página.
- Si
-T tight
se especifica, dvipng genera una imagen que es el rectángulo más pequeño que incluye toda la tinta de la página. - Si
-T <width>,<height>
genera una imagen que es un rectángulo de la dimensión especificada,cuyo contenido es el rectángulo de ese tamaño medido con respecto alorigen dvi(que, recuerde, es el punto a 1 pulgada del borde superior e izquierdo del papel).
Para ilustrar esto, considere la siguiente fuente TeX
\documentclass{book}
\usepackage{geometry}
\geometry{paperwidth=5in, paperheight=7in, inner=0.4in, outer=2in, top=1.2in, bottom=2in}
\usepackage{lipsum}
\begin{document}
\lipsum[1-5]
\end{document}
Esto tiene márgenes muy desequilibrados. Si usa dvipng -T5in,7in
, lo que verá en las dos primeras páginas es:
Página 1:
Página 2:
Verá que parte del texto en la página 1 está truncado, eso se debe a que el margen interior está configurado en 0,4 pulgadas, que está a menos de 1 pulgada del borde. También puede medir si desea encontrar que en ambos casos el margen superior restante es exactamente 0,2 pulgadas, lo que significa que ambos números de página ahora desaparecen.
Para obtener la página completa como se esperaba, todo lo que necesita hacer es cambiar el origen del dvi exactamente 1 pulgada tanto horizontal como verticalmente, de modo que ahora se alinee con la esquina superior izquierda de la página.Tenga en cuenta que noconjeturas o miradasse requiere.Aquí están los resultados de las mismas dos páginas usando dvipng -T5in,7in -O1in,1in
; Tenga en cuenta que los márgenes fuertemente asimétricos se respetan y, a diferencia de lo queDavid sugirió, no es necesario alterar los márgenes reales del documento para establecer el parámetro de desplazamiento.
Página 1:
Página 2: