Wie setzt man japanische ASCII-Art in Latex?

Wie setzt man japanische ASCII-Art in Latex?

Ich denke darüber nach, ein Paket zu erstellen, das eine Umgebung bereitstellt, die MS PGothic verwendet, um einige ausgefallene japanische ASCII-Grafiken zu setzen. MS PGothic ist die Standardschriftart für japanische ASCII-Grafiken.

Ich denke daran, eine neue Verbatim-Umgebung zu schaffen. Aber es scheint, dass Verbatim eine monoproportionale Schriftart erfordert, während MS PGothic proportional ist, und die Schriftart muss proportional sein, um japanische ASCII-Grafiken setzen zu können.

Ich habe versucht, einige Pakete zu erstellen, indem ich die Informationen, die ich hier und da gesammelt habe, zusammengetragen habe. Eines davon sieht so aus:

\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}

Aber es funktioniert nicht. Ich glaube, in meinem Paket sind einige grundlegende Fehler, die ich nicht bemerkt habe.

Ich wäre wirklich dankbar, wenn jemand etwas Licht in dieses Thema bringen würde. Ich habe ein Exemplar von „Latex Companion 2ed“ und würde mich über Hinweise zu den Kapiteln freuen, die ich lesen muss.

Beispiele für korrekt gesetzte ASCII-Grafiken finden Sie hier:https://aahub.org/ Danke im Voraus.

-

BEARBEITEN 1:Dank Niranjans Antwort ist die Frage fast gelöst. Ich habe erwähnt, dass die in der japanischen ASCII-Art verwendete Schriftart proportional sein muss. Mit „proportional“ meine ich, dass jedes Zeichen eine andere Breite hat. Um das Problem der bestehenden wunderbaren Antwort zu veranschaulichen, müsste ich einige externe Bildlinks einfügen.

Dies ist meine Haupt-Tex-Datei, die ich zum Setzen einer Beispiel-ASCII-Grafik verwende:

\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}

Dasselbe Bild, das in meiner Tex-Datei verwendet wird, sieht bei korrektem Satz folgendermaßen aus: Ein richtig gesetzter ASCII ART

Aber die Verwendung der vorhandenen Antwort ergibt Folgendes: Bildbeschreibung hier eingeben

Sie können sehen, dass alle Zeichen vorhanden sind, aber die Proportionen stimmen nicht. Einige Zeichen sind verbreitert, wodurch andere nach rechts verschoben werden.

Bei der Überprüfung des resultierenden PDFs scheint die Breite jedes Zeichens auf volle Breite und halbe Breite festgelegt zu sein. Ich hoffe, ich habe das Problem klar beschrieben.

-

EDIT 2: Die Verwendung anderer Schriftarten funktioniert, wie zum Beispielaahub hier bereitgestellte Schriftart:https://fonts.aahub.org/

Antwort1

Ich denke, dies wäre ein sicherer Weg, das zu tun, was Sie wollen:

\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. Ich verwende den Befehl nicht, \setmonofontda er die für -Typ-Text verwendete Schriftart global ändert \verb. Stattdessen definiere ich einen \newfontfamilyund verwende ihn lokal nur für Ihre Umgebung.
  2. Da es sich hier um ein Paket handeln soll, ist es immer ratsam, den paketspezifischen Makros den Paketnamen voranzustellen, z. B. \jartnumstatt nur \num. Wir machen die Paketmakros für die Endbenutzer immer spezifischer. Im Grunde genommen gibt es ihnen mehr Freiheit, da jetzt jeder \def\num{some-interesting-definition}in seinen Dokumenten verwenden kann und dies nichts daran ändert, jartdass wir speziell haben \jartnum.
  3. Zum @Zeichen: In „internen“ Makros, also den Makros, die nur vom Paket benötigt werden, fügen wir auch irgendwo im Makro das Zeichen „@“ hinzu, üblicherweise nach dem Paketnamenpräfix. Statt I \jartnumhabe ich also verwendet \jart@num. Selbst wenn nun ein Benutzer versucht, in seinem Code neu zu definieren \jart@num, wird LaTeX dies nicht akzeptieren. Er muss den speziellen Befehl verwenden, \makeatletterum es neu zu definieren. Dies macht Ihren Code grundsätzlich sicherer für das Paket und den Endbenutzer und die Codierung wird freier.
  4. Anders als in manchen Programmiersprachen können Sie in LaTeX keine Berechnungen im laufenden Betrieb durchführen. Sie müssen Berechnungen einleiten, wofür LaTeX über verfügt \numexpr. Wir definieren Werte mit internen Makros und wenden dann Berechnungen darauf an, \numexprwie im Code zu sehen.
  5. Diese Leitung braucht man \NeedsTeXFormat{LaTeX2e}heute nicht mehr.

PS: Hat nichts mit Ihrem Code zu tun, aber da Sie planen, ein Paket zu veröffentlichen, versuchen Sie, eine Schriftart zu verwenden, die mit TeX Live verteilt wird. Ihre msgothic.ttcist das nicht. Außerdem ist sie nicht kostenlos (im Sinne von Freiheit). Suchen Sie nach einer kostenlosen Alternative und verwenden Sie diese.

verwandte Informationen