¿Cómo componer arte japonés ascii en látex?

¿Cómo componer arte japonés ascii en látex?

Estoy pensando en crear un paquete que proporcione un entorno que utilice MS PGothic para componer algunas ilustraciones japonesas ASCII. MS PGothic es la fuente predeterminada para el arte ASCII japonés.

Mi idea es crear un nuevo entorno palabra por palabra. Pero parece que textualmente requiere que la fuente sea monoespaciada, mientras tanto, MS PGothic es proporcional y la fuente tiene que ser proporcional para poder componer arte ASCII japonés.

Intenté crear algunos paquetes presentando la información que recopilé aquí y allá. Uno de ellos es como:

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{jart}[2023/03/05 Japanese ASCII Art]

\RequirePackage{fancyvrb}

% Set the font to MS PGothic
\usepackage{fontspec}
\setmonofont{msgothic.ttc}

% Set character width and line height
\fvset{fontsize=\small,xleftmargin=2em,}
\def\num{18}
\def\px{16}

% Define the "jart" environment
\DefineVerbatimEnvironment{jart}{Verbatim}
{fontfamily=tt,numbers=none,framesep=0.5em,rulecolor=white,baselinestretch=\num/\px}

Pero no funciona. Creo que existen algunos errores rudimentarios en mi paquete que no pude ver.

Realmente agradecería que alguien arrojara algo de luz sobre este tema. Tengo una copia de "Latex Companion 2ed", bienvenida sea la orientación sobre qué capítulo debo leer.

Aquí se pueden ver ejemplos de arte ASCII tipográfico adecuado:https://aahub.org/ Gracias de antemano.

-

EDITAR 1:Gracias a la respuesta de Niranjan, la pregunta está casi resuelta. Mencioné que la fuente utilizada en el arte japonés ASCII debe ser proporcional. Por "proporcional" me refiero a que cada carácter tiene un ancho diferente. Para ilustrar el problema de la maravillosa respuesta existente, tendría que incluir algunos enlaces de imágenes externos.

Este es mi archivo Tex principal utilizado para componer un arte ASCII de muestra:

\documentclass{article}
\usepackage{jart}
\begin{document}
First document. This is a simple example, with no 
extra parameters or packages included.


\begin{jart}
                              ______
                         ,、.- '''"´          ` ' ‐ 、,
                      ,、 ''"                    `' .、
                    ,、 '"          .......................         \
                  /       ..........::::::::::::::::::::::::::::::::::::::::::::::....... ...   ヽ
                /      ....:::::::::::::::;;::::::::::::::::;:::;、r'" \:::::::::::::::::.....::..   ヽ
    .          /      ..::::::::::::::::::::/ `ヽ,:/ノ     \ィ'ヽ:::::::::::::::..   ヽ
    .         /      ..:::::::::::::::::::;、:ィ'    `  ヽ        ヽ  \:::::::::::::..   ',
            , '      ..:::::::::::::::;、r':/,'    .....          ヽ   ヽ::::::::::..  ',
    .      , '      ..::::::::::;、 '" / ,'  / ,、-ヽ          ',    ヽ::::::::.. /
          /      ..::::::::/  /  ,'  //   ヽ.   ヽ    ヽ ',     ヽ::::::::/
         /     ...::::::::/  /    ;   /       ヽ  ヽ  ヽ 丶 ',    ヽ/
        /     ..::::::::::::i゙  /     ,'  i           ヽ ヾ、  ヽ \',    ',
    .   /   ....:::::::::::::::::i../    ,、 ,'   | ,.、----- 、,  ',  ',.\  ヾ' 、ヽ    ',
      /   ..:::::::::::::::::::::/   ,、 '" ,'   |´          ',  !. ‐ヽ ヽ ヾ 、   ',
     / ....::::::::::::::::::::::/  ,、 '".--、i //!. |            ', l   ヽ. ',、. ', ` 、 ',
      \::::::::::::::::::::/ ,、 '" / ,r''''''|〃  | |,.|ィ===ミ、     ', |, -ノ-、  /‐!   | \ ',
       `' 、:.:/ ,、 '" |.  │ ! /~|   l ',            lノ===ミ、 /l |    |   \
        ,、r'ィ"‐-:、;;;_|   ヽ ヽ、|    i ',\\\               { l i lヽ !
       ´       ,'     \ l    .',、'、       ,  \\\!| l  ! ' ,ヽ !
              /       ` l    ',ヽヽ               |!| ヽ .| ',.ヽ!
    .         /         l     ! `ヽ  、_..-、_,   /.ハ. V  ',
             /        ,、 -',    ',‐‐―┐           / /  |   ',
           , '     ,、- '''´   ',    ',    |.        ィ ´  /    |ー-、 ',
          /      l       ',    ',  ト> ‐ <´_!   /   / / ',
        /        ',        ',    ', ├---゙ニi゙、.,,,,,{  /    / / |\ ',
      /   /      ヽ       ',    ',│ ||  ||  ||ヽ     / ト, |  ヽ ヽ
    '"    /        >         ',    ',ヽ. ||  ||  ||:}      /   | l. l   ヽ '
    
\end{jart}

\end{document}

El mismo arte usado en mi archivo tex, si está escrito correctamente, se ve así: Un ARTE ASCII tipográfico adecuado

Pero usar la respuesta existente produce esto: ingrese la descripción de la imagen aquí

Puedes ver que el personaje está ahí, pero la proporción es incorrecta. Algunos personajes se amplían, empujando a otros personajes hacia la derecha.

Al inspeccionar el PDF resultante, parece que el ancho de cada carácter está fijado en ancho completo y mitad. Espero haber descrito claramente el problema.

-

EDITAR 2: Usar otras fuentes funciona, como laaahub fuente que se proporciona aquí:https://fonts.aahub.org/

Respuesta1

Creo que esta sería una forma más segura de hacer lo que quieres:

\ProvidesPackage{jart}[2023/03/06 Japanese ASCII Art]
\RequirePackage{fancyvrb}
\usepackage{fontspec}
\newfontfamily\verbatimfont[%
  NFSSFamily       = {myverbatimfont}%
]{msgothic.ttc}
\fvset{fontsize=\small,xleftmargin=2em}
\def\jart@num{18}
\def\jart@px{16}
\DefineVerbatimEnvironment{jart}{Verbatim}{%
  fontfamily=myverbatimfont,%
  numbers=none,%
  framesep=0.5em,%
  rulecolor=white,%
  baselinestretch=\numexpr\jart@num/\jart@px\relax
}
  1. No uso el \setmonofontcomando ya que cambia globalmente la fuente utilizada para \verbescribir texto. En lugar de eso, defino a \newfontfamilyy lo uso localmente solo para su entorno.
  2. Dado que se supone que es un paquete, siempre es recomendable anteponer a las macros específicas del paquete el nombre del paquete, por ejemplo, \jartnumen lugar de simplemente \num. Siempre hacemos que los paquetes de macros sean cada vez más específicos para los usuarios finales. Básicamente, les da más libertad, ya que ahora cualquiera puede usarlo \def\num{some-interesting-definition}en sus documentos y esto no cambiaría nada ya jartque tenemos específicamente \jartnum.
  3. Acerca del @signo: En las macros 'internas', es decir, las macros que sólo requiere el paquete, también agregamos el signo '@' en algún lugar de la macro, convencionalmente después del prefijo del nombre del paquete. Así que en lugar de \jartnumhe usado \jart@num. Ahora, incluso si algún usuario intenta redefinir \jart@numsu código, LaTeX no lo aceptará. Tendrán que utilizar el comando especial \makeatletterpara poder redefinirlo. Básicamente, esto hace que su código sea más seguro tanto para el paquete como para el usuario final y la codificación se vuelve más gratuita.
  4. No puedes hacer matemáticas sobre la marcha en LaTeX a diferencia de algunos lenguajes de programación. Tienes que iniciar los cálculos, para lo cual LaTeX tiene \numexpr. Definimos valores con macros internas y luego les aplicamos cálculos \numexprcomo se ve en el código.
  5. Ya no necesitas la \NeedsTeXFormat{LaTeX2e}línea estos días.

PD: No está relacionado con su código, pero como planea lanzar un paquete, intente usar una fuente que se distribuya con TeX Live. El tuyo msgothic.ttcno lo es. Además, no es gratis (como en la libertad). Busque una alternativa gratuita y úsela.

información relacionada