![Стиль самоопределяемой дословной среды изменился после использования xeCJK](https://rvso.com/image/461923/%D0%A1%D1%82%D0%B8%D0%BB%D1%8C%20%D1%81%D0%B0%D0%BC%D0%BE%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%8F%D0%B5%D0%BC%D0%BE%D0%B9%20%D0%B4%D0%BE%D1%81%D0%BB%D0%BE%D0%B2%D0%BD%D0%BE%D0%B9%20%D1%81%D1%80%D0%B5%D0%B4%D1%8B%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D0%BB%D1%81%D1%8F%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20xeCJK.png)
Итак, впредыдущий вопросЯ спросил, как создать среду verbatim с заданным шрифтом, высотой и шириной, чтобы набирать японское ASCII-искусство. И они помогли мне с этим, теперь у меня есть подходящий пакет, который я могу использовать для этого. Выглядит это так:
\ProvidesPackage{jart}[2023/03/05 Japanese ASCII Art]
\RequirePackage{fancyvrb}
\RequirePackage{xfp}
\usepackage{fontspec}
\newfontfamily\verbatimfont[%
NFSSFamily = {myverbatimfont}%
]{aahub.ttf}
\fvset{fontsize=\small,xleftmargin=2em}
\newdimen\jart@num
\jart@num=16pt\relax
\newdimen\jart@px
\jart@px=16pt\relax
\DefineVerbatimEnvironment{jart}{Verbatim}{%
fontfamily=myverbatimfont,%
numbers=none,%
framesep=0.5em,%
rulecolor=white,%
baselinestretch=\fpeval{\jart@num/\jart@px}%
}
aahub.ttf
— это шрифт, разработанный для выполнения такого рода набора:https://font.aahub.org/
Но, знаете ли, он создан для набора японского ASCII-искусства. Было бы хорошо, если бы я мог на самом деле напечатать несколько символов CJK в основном тексте документа.
Я использую XeLatex
, поэтому я бы просто добавил \usepackage{xeCJK}
в файл. Но полученный ASCII-арт сломан. Без \usepackage{xeCJK}
него работает нормально.
ПРИМЕР:
\documentclass{article}
\usepackage{jart}
% \usepackage{xeCJK}
\begin{document}
This is a minial working example of typesetting Japanese ASCII art.
\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}
Нет xeCJK
:
С xeCJK
:
Я не уверен, почему это произошло. Куда мне следует обратиться, чтобы решить эту проблему? Спасибо заранее.
решение1
ASCII-арт содержит символы, которые поддерживаются для использования шрифта CJK. Например U+FF64
U+30FD
, . Если ваш шрифт CJK не имеет этих глифов, он не может быть напечатан должным образом. В то же время, xeCJK
будет вставлять некоторые пробелы между символами CJK и другими. Вы не хотите их сохранять.
Вы можете отключить изменение, сделанное xeCJK
, установив \xeCJKsetup{xeCJKactive=false}
. Или вы можете удалить эти пробелы и изменить шрифт CJK.
% In jart.sty, choose one of them, I prefer the first one
\newcommand{\turnoffxecjk}{\xeCJKsetup{xeCJKactive=false}}
% \newcommand{\turnoffxecjk}{\xeCJKsetup{CJKglue=,CJKecglue=,}\CJKfontspec{aahub.ttf}}
% and
\DefineVerbatimEnvironment{jart}{Verbatim}{%
formatcom=\turnoffxecjk,%
fontfamily=myverbatimfont,%
numbers=none,%
framesep=0.5em,%
rulecolor=white,%
baselinestretch=\fpeval{\jart@num/\jart@px}%
}