¿Qué es Metapost/Metafont y cómo puedo empezar a utilizarlo?

¿Qué es Metapost/Metafont y cómo puedo empezar a utilizarlo?

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

  1. 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).

  2. 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.

  3. 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.

  4. 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).

  5. Las fuentes creadas por METAFONT se pueden utilizar con pdftex: todo lo que es posible en Knuth TeX también es posible con pdftex. 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; pdftextiene un par de primitivas para esto: \pdfpkresolutiony \pdfpkmodeque se utilizan para generar mapas de bits bajo demanda a partir de las fuentes.

  6. 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 a pdflatextravés de un conjunto de macros TeX escritas originalmente para ConTeXt.

  7. 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.

  8. Un "Hola mundo" para Metapost se puede escribir "fácilmente". Escribe el siguiente hello.mpdocumento:

    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 helloy luego epstopdf hello-1.mpsobtener hello-1.pdfuna vista previa

    ingrese la descripción de la imagen aquí

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.

ingrese la descripción de la imagen aquí

Respuesta3

Para ampliar el comentario de Herbert y como complemento al de egreg, aquí hay un fragmento de código que permitirá procesar MetaPostcódigo directamente dentro de LuaLaTeX, sin necesidad de herramientas externas. Gracias en parte aluamplib, un paquete/interfaz de soporte para la mplibbiblioteca 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}

información relacionada