Estou pensando em criar um pacote que forneça um ambiente que use o MS PGothic para compor algumas artes japonesas sofisticadas em ASCII. MS PGothic é a fonte padrão para arte ASCII japonesa.
Meu pensamento é criar um novo ambiente literal. Mas parece que literalmente exige que a fonte seja monoespaçada, enquanto isso, o MS PGothic é proporcional, e a fonte deve ser proporcional para poder compor a arte ASCII japonesa.
Tentei criar alguns pacotes apresentando as informações que coletei aqui e ali. Um deles é 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}
Mas não funciona. Acho que existem alguns erros rudimentares no meu pacote que não consegui ver.
Eu realmente apreciaria se alguém lançasse alguma luz sobre esse assunto. Eu tenho uma cópia do "Latex Companion 2ed", orientações sobre qual capítulo preciso ler são bem-vindas.
Exemplos de arte ASCII composta adequada podem ser vistos aqui:https://aahub.org/ Obrigado antecipadamente.
-
EDITAR 1:Graças à resposta de Niranjan, a questão está quase resolvida. Mencionei que a fonte usada na arte ASCII japonesa deve ser proporcional. Por "proporcional" quero dizer que cada caractere tem largura diferente. Para ilustrar o problema da maravilhosa resposta existente, eu teria que incluir alguns links de imagens externas.
Este é meu arquivo Tex principal usado para compor uma amostra de arte ASCII:
\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}
A mesma arte usada no meu arquivo tex, se formatada corretamente, fica assim:
Mas usar a resposta existente produz isto:
Você pode ver que o personagem está todo ali, mas a proporção está errada. Alguns personagens são ampliados, empurrando outros personagens para a direita.
Ao inspecionar o PDF resultante, parece que a largura de cada caractere é fixada em largura total e metade. Espero ter descrito claramente o problema.
-
EDIT 2: Usar outras fontes funciona, como a aahub
fonte fornecida aqui:https://fonts.aahub.org/
Responder1
Acho que essa seria uma maneira mais segura de fazer o que você deseja:
\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
}
- Eu não uso o
\setmonofont
comando, pois ele altera globalmente a fonte usada para\verb
o texto do tipo. Em vez disso, defino a\newfontfamily
e uso-o localmente apenas para o seu ambiente. - Como se supõe que este seja um pacote, é sempre aconselhável prefixar as macros específicas do pacote com o nome do pacote, por exemplo,
\jartnum
em vez de apenas\num
. Sempre tornamos as macros de pacotes cada vez mais específicas para os usuários finais. Basicamente, dá mais liberdade para eles, já que agora qualquer um pode usar\def\num{some-interesting-definition}
em seus documentos e isso não mudaria nada jájart
que temos especificamente o\jartnum
. - Sobre o
@
sinal: Em macros 'internas', ou seja, as macros exigidas apenas pelo pacote, também adicionamos o sinal '@' em algum lugar da macro, convencionalmente após o prefixo do nome do pacote. Então, em vez de\jartnum
eu usei\jart@num
. Agora, mesmo que algum usuário tente redefinir\jart@num
seu código, o LaTeX não aceitará. Eles terão que usar o comando especial\makeatletter
para redefini-lo. Isso basicamente torna seu código mais seguro tanto para o pacote quanto para o usuário final e a codificação se torna mais livre. - Você não pode fazer matemática instantaneamente em LaTeX, ao contrário de algumas linguagens de programação. Você deve iniciar os cálculos, para os quais o LaTeX possui
\numexpr
. Definimos valores com macros internas e depois aplicamos cálculos sobre eles como\numexpr
visto no código. - Você não precisa
\NeedsTeXFormat{LaTeX2e}
mais da linha hoje em dia.
PS: Não relacionado ao seu código, mas como você está planejando lançar um pacote, tente usar uma fonte que seja distribuída com o TeX Live. O seu msgothic.ttc
não é. Também não é grátis (como na liberdade). Procure uma alternativa gratuita e use-a.