Hola usuario de nuestro sitio, descubrimos la solución a tu búsqueda, has scroll y la obtendrás un poco más abajo.
Solución:
Si todo lo que quiere es limitar el ancho de su imagen a un valor máximo (como linewidth
), simplemente puede usar el enfoque descrito en las preguntas frecuentes de TeX:
documentclass[a5paper]article
usepackagegraphicx
makeatletter
defmaxwidth%
ifdim[email protected]
@width>linewidth
linewidth
else
[email protected]@width
fi
makeatother
begindocument
centeringincludegraphics[width=maxwidth]largebottle
includegraphics[width=maxwidth]largesidebottle
enddocument
Para medir y generar las dimensiones, settoheight
y settowidth
Deberia trabajar. Puedes convertir el pt
unidades a otras unidades usando el printlen
paquete, como señaló Werner en los comentarios.
imagenmagia (identify -verbose bottle.jpg
) muestra que la geometría es de 1408×714 píxeles, con una resolución de 300×300 píxeles por pulgada, lo que se traduce en 1408 px/300 px per in*72.27 pt per in=339.1872 pt
y 714 px/300 px per in * 72.27 pt per in = 172.0026 pt
.
documentclass[11pt ]article
usepackagegraphicx
usepackageprintlen
uselengthunitcm
newlengthimageheight
newlengthimagewidth
begindocument
settoheightimageheightincludegraphicsbottle
settowidthimagewidthincludegraphicsbottle
includegraphicsbottle
Height: theimageheight (printlengthimageheight)
Width: theimagewidth (printlengthimagewidth)
enddocument
LaTeX no utiliza píxeles. Los píxeles no son un formato de impresión. pdflatex
permite un px
unidad pero esto simplemente se convierte a puntos (pt
) como todo lo demás en TeX. La relación píxel a punto depende de la imagen. densidad que está en puntos por pulgada (DPI). Por defecto se utilizan 72 DPI. Un punto TeX es 1/72,27 pulgadas y un punto PostScript/PDF (bp
en TeX) es 1/72 pulgadas. Si su imagen tiene un gran valor DPI pero pdflatex
no puedo leer que a partir de los metadatos de las imágenes, esta conversión podría ser incorrecta (porque se suponen 72 DPI) y su imagen tiene un tamaño incorrecto. A veces, simplemente convertir su imagen o abrirla y guardarla corrige los metadatos.
Acerca de cómo medir todas las dimensiones de la imagen:
No incluya la imagen varias veces para medir sus diferentes tamaños. Guárdelo manualmente en una caja (p. ej. mybox
) y luego puede acceder a las dimensiones de la caja directamente usando htmybox
(altura), wdmybox
(ancho) y dpmybox
(profundidad). Todos setto...
las macros que ha mencionado hacen exactamente lo mismo con un cuadro temporal.
newsaveboxmybox
newcommandpic[1]%
sboxmyboxincludegraphics#1%
Height: thehtmybox
Width: thewdmybox
Depth: thedpmybox % For images usually 0 except if rotated
ifdimwdmybox>.6textwidth
% width is larger than 60% of the text width ...
fi
% Insert the image:
useboxmybox
También puede necesitar el @tempboxa
caja registradora (requiere makeatletter
.. makeatother
) o directamente el número de registro de la casilla 0
: sbox0... ht0 ...
Aunque la pregunta es cómo hacer esto en LaTeX, también estoy agregando una respuesta para mostrar cómo hacerlo usando una interfaz de alto nivel en ConTeXt.
siempre que uses externalfigure
ConTeXt hace que las dimensiones (y el número de páginas de las imágenes en PDF) estén disponibles mediante las macros figurenaturalwidth
, figurenaturalheight
y noffigurepages
. Si no desea que la imagen se incluya en el documento, pero solo desea medir sus dimensiones, utilice getfiguredimensions
. El siguiente ejemplo obtiene las dimensiones de una imagen alojada remota:
starttext
getfiguredimensions[http://placekitten.com/500/300][method=png]
startTABLE
NC Width NC thedimexprfigurenaturalwidth NC NR
NC Height NC thedimexprfigurenaturalheight NC NR
NC Pages NC noffigurepages NC NR
stopTABLE
stoptext
figurenaturalwidth
y ...height
devolver las unidades en sp
. yo suelothedimexpr
para convertir el resultado en puntos. También se podría usar la función Lua number.todimen(...)
para una rutina de conversión más versátil.
NOTA Al igual que en LaTeX, los cálculos de dimensión utilizan el DPI predeterminado especificado en pdftex/luatex. Entonces, el comentario de Jake de comparar px
y pt
sigue siendo relevante.
Según la pregunta editada, en ConTeXt puede usar:
externalfigure[figurename][maxwidth=textwidth, maxheight=textheight]
Esto reducirá la imagen para que su alto y ancho no excedan maxheight
y maxwidth
. Si necesita configurar estas opciones para muchas cifras, puede usar:
defineexternalfigure[MaxWidthAndHeight][maxwidth=textwidth, maxheight=textheight]
externalfigure[figurename][MaxWidthAndHeight][frame=on]
(donde usé frame=on
solo para mostrar cómo agregar otras opciones, si es necesario).
Eres capaz de sustentar nuestro ensayo escribiendo un comentario o dejando una puntuación te damos las gracias.