Inspirado por¿Por qué la discriminación de Metapost?, Me gustaría conocer Metapostlejosmejor que yo ahora. Todo lo que realmente sé es que Metapost es un lenguaje para describir gráficos y Metafont se usa específicamente para describir fuentes.
Entonces, ¿qué es Metapost/Metafont?
- ¿Metafont/Metapost tiene una sintaxis similar, como sugieren los nombres?
- ¿Las herramientas para trabajar con ellos y compilarlos están incluidas en las distribuciones populares de TeX?
- ¿Existe algo parecido a un 'Hola mundo' para estos sistemas? (Se pueden encontrar varios ejemplos con Metapost en todo el sitio, pero al parecer no tanto Metafont).
- ¿Puede pdfTeX usar fuentes creadas con Metafont sin demasiadas complicaciones?
- (Lo mismo ocurre con Metapost, pero parece que los múltiples ejemplos en este sitio hablan por sí solos)
Respuesta1
METAFONT fue diseñado por Knuth para ser un compañero de TeX. Su trabajo es producir fuentes a partir de formas "descritas matemáticamente". La salida de METAFONT es una colección de glifos en mapa de bits; Al configurar los parámetros adecuados, si la descripción de los caracteres es cuidadosa, la salida se puede ajustar para adaptarse a cualquier dispositivo de impresión en particular (por ejemplo, la resolución es muy importante, pero no es el único aspecto a cuidar).
Metapost es un programa derivado directamente de METAFONT; Fue escrito originalmente por John Hobby, quien hizo valiosas contribuciones a METAFONT. Entonces, sí, su sintaxis es similar: el lenguaje es en realidad el mismo, pero Metapost agrega varias primitivas y también tipos de datos (los colores RGB y CMYK son respectivamente triples y cuádruples que no se usan en METAFONT). Por el contrario, algunas de las características de METAFONT no tienen sentido en Metapost.
La salida de Metapost es una forma simple de Postscript, y esta es la principal diferencia entre los dos programas: la salida de Metapost son gráficos vectoriales, mientras que METAFONT solo genera rásteres.
Metapost puede interactuar con TeX para obtener métricas de caracteres e incluir tipos en su salida. Esto no es posible en METAFONT (bueno, hay algunos artículos de TUGboat que describen el uso inteligente de METAFONT).
Las fuentes creadas por METAFONT se pueden utilizar con
pdftex
: todo lo que es posible en Knuth TeX también es posible conpdftex
. Sin embargo, las fuentes son de mapa de bits, por lo que deben generarse versiones de alta resolución si se desea un buen resultado;pdftex
tiene un par de primitivas para esto:\pdfpkresolution
y\pdfpkmode
que se utilizan para generar mapas de bits bajo demanda a partir de las fuentes.La salida de Metapost, al ser Postscript (encapsulado), se puede incluir directamente con
latex
; pero, dado que utiliza un conjunto restringido de funciones Postscript, también se puede incluir apdflatex
través de un conjunto de macros TeX escritas originalmente para ConTeXt.Se puede encontrar un "Hola mundo" para METAFONT en el libro METAFONT, pero en realidad no es tan simple como un documento de prueba similar para (La)TeX.
Un "Hola mundo" para Metapost se puede escribir "fácilmente". Escribe el siguiente
hello.mp
documento:prologues:=3; % include all fonts outputtemplate:="%j-%c.mps"; % output file will be hello-1.mps beginfig(1); draw(0,0)--(3cm,0)--(3cm,3cm)--(0,3cm)--cycle; label(btex Hello world! etex, (1.5cm,1.5cm)); endfig; end.
Ejecutar
mpost hello
y luegoepstopdf hello-1.mps
obtenerhello-1.pdf
una vista previa
La documentación completa de Metapost está disponible en las distribuciones TeX (para TeX Live texdoc metapost
).
Respuesta2
Una descripción visual intuitiva -http://www.metaflop.com/modulator- asegúrate de activar anatomía.
Respuesta3
Para ampliar el comentario de Herbert y como complemento al de egreg, aquí hay un fragmento de código que permitirá procesar MetaPost
código directamente dentro de LuaLaTeX, sin necesidad de herramientas externas. Gracias en parte aluamplib
, un paquete/interfaz de soporte para la mplib
biblioteca Lua, una versión integrada de MetaPost:
\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
label ("Insert MP code here", (10,10));
endfig;
\end{mplibcode}
\end{document}