私は、MS PGothic を使用して派手な日本語 ASCII アートをタイプセットする環境を提供するパッケージを作成したいと考えています。MS PGothic は、日本語 ASCII アートのデフォルト フォントです。
私の考えは、新しい verbatim 環境を作成することです。しかし、verbatim ではフォントが等幅である必要があるようですが、MS PGothic はプロポーショナルであり、日本語の ASCII アートをタイプセットするにはフォントがプロポーショナルである必要があります。
私はあちこちで収集した情報をまとめて、いくつかのパッケージを作成しようとしました。そのうちの 1 つは次のようになります。
\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}
しかし、うまくいきません。私のパッケージには、私が気づかなかった基本的な間違いがいくつかあると思います。
誰かがこの件について説明してくれると本当にありがたいです。私は「Latex Companion 2ed」のコピーを持っていますが、どの章を読むべきかについてアドバイスをいただければ幸いです。
適切にタイプセットされた ASCII アートの例は、次の場所で見ることができます。https://aahub.org/ よろしくお願いします。
-
編集1:Niranjan さんの回答のおかげで、質問はほぼ解決しました。日本語の ASCII アートで使用されるフォントは比例する必要があると述べました。「比例」とは、各文字の幅が異なることを意味します。既存の素晴らしい回答の問題を説明するには、外部の画像リンクをいくつか含める必要があります。
これはサンプルの ASCII アートをタイプセットするために使用するメインの Tex ファイルです。
\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}
私の tex ファイルで使用されている同じアートは、適切にタイプセットされている場合、次のようになります。
文字はすべて揃っていますが、比率が間違っています。一部の文字が広くなり、他の文字が右に押しやられています。
結果の PDF を調べたところ、各文字の幅が全角と半角に固定されているようです。問題を明確に説明できたと思います。
-
編集 2:aahub
ここで提供されているフォントのように、他のフォントを使用しても機能します。https://fonts.aahub.org/
答え1
これはあなたが望むことを行うためのより安全な方法だと思います:
\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
}
- このコマンドは-type テキスト
\setmonofont
に使用されるフォントをグローバルに変更するため、使用しません。代わりに、 を定義して、環境専用にローカルに使用します。\verb
\newfontfamily
- これはパッケージであるため、パッケージ固有のマクロの前には、常にパッケージ名を付けることをお勧めします。たとえば、
\jartnum
だけではなく です。私たちは常に、エンドユーザー向けにパッケージマクロをより具体的にしています。基本的に、これにより、誰でも自分のドキュメントで を使用できるようになり、が具体的に用意されているので、 から何も変更されないため\num
、エンドユーザーにさらなる自由が与えられます。\def\num{some-interesting-definition}
jart
\jartnum
- 記号について
@
: '内部' マクロ、つまりパッケージでのみ必要なマクロでは、慣例的にパッケージ名プレフィックスの後のどこかに '@' 記号も追加します。そのため、 の代わりに を\jartnum
使用しています\jart@num
。これで、ユーザーがコード内で を再定義しようとしても\jart@num
、LaTeX はそれを受け入れません。\makeatletter
再定義するには、特別なコマンドを使用する必要があります。基本的に、これにより、パッケージとエンドユーザーの両方にとってコードがより安全になり、コーディングがより自由になります。 - 一部のプログラミング言語とは異なり、LaTeX ではオンザフライで計算を行うことはできません。計算を開始する必要がありますが、そのために LaTeX には があります。内部マクロを使用して値を定義し、コードに示されているよう
\numexpr
に、それらに対して計算を適用します。\numexpr
\NeedsTeXFormat{LaTeX2e}
最近はもうそのラインは必要ありません。
PS: コードとは関係ありませんが、パッケージをリリースする予定なので、TeX Live で配布されているフォントを使用するようにしてください。あなたのフォントはそうではmsgothic.ttc
ありません。また、無料ではありません (自由という意味で)。無料の代替品を探して、それを使用してください。