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í:
Pero usar la respuesta existente produce esto:
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
}
- No uso el
\setmonofont
comando ya que cambia globalmente la fuente utilizada para\verb
escribir texto. En lugar de eso, defino a\newfontfamily
y lo uso localmente solo para su entorno. - 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,
\jartnum
en 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 yajart
que tenemos específicamente\jartnum
. - 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\jartnum
he usado\jart@num
. Ahora, incluso si algún usuario intenta redefinir\jart@num
su código, LaTeX no lo aceptará. Tendrán que utilizar el comando especial\makeatletter
para 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. - 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\numexpr
como se ve en el código. - 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.ttc
no lo es. Además, no es gratis (como en la libertad). Busque una alternativa gratuita y úsela.