글꼴 BQN386을 사용할 때 lstlisting에 의해 삽입된 가짜 개행 문자

글꼴 BQN386을 사용할 때 lstlisting에 의해 삽입된 가짜 개행 문자

BQN 프로그래밍 언어의 소스 코드에 목록 렌더링 문제가 있습니다. 나는 사용한다 lualatex( LuaHBTeX, Version 1.17.0 (TeX Live 2023)). 다양한 글꼴을 테스트해 보았지만 결과는 동일했습니다. 글꼴은 다음에서 제공됩니다.https://mlochbaum.github.io/BQN/fonts.html특히 BQN386은https://github.com/dzaima/BQN386.

8by 앞에 가짜 개행 문자가 삽입되고 lstlisting앞의 공백이 사라졌습니다. verbatim환경을 사용하거나 사용하는 동일한 라인은 verb괜찮습니다. lstinline오류로 인해 명령을 사용할 수 없습니다 . 특수 문자가 listings해석 방법을 엉망으로 만드는 것 같습니다 .

생성된 PDF의 관련 부분은 다음과 같습니다.

내가 확인했다Latex: 고정 폭 글꼴이 포함된 목록,lstlisting에서 상황별 대체를 활성화하는 방법은 무엇입니까?그리고Fontspec 및 lstlisting 환경에서 JetBrains Mono 합자를 사용하세요..

소스 코드를 올바르게 렌더링하는 방법에 대한 아이디어가 있습니까?

MWE:

\documentclass{article}

\usepackage{fontspec}
\setmonofont{BQN386}

\usepackage{listings}
% \lstset{inputencoding=utf8,extendedchars=true}
\lstset{
    basicstyle = \ttfamily,
    % columns = flexible,
    % keepspaces = true,
    % alsoletter={↕},
}

% \lstdefinelanguage{BQN}{ %
%   alsoletter=⌽⊸⌈↕, %
% }
% \lstset{language=BQN}

% \makeatletter
% \renewcommand*\verbatim@nolig@list{}
% \makeatother

\begin{document}

OK: {\tt ⌽⊸⌈ ↕8}. OK: \verb+⌽⊸⌈ ↕8+.
% File ended while scanning use of \lst@temp.
% Or \lstinline!⌽⊸⌈ ↕8!.

\par OK:
\begin{verbatim}
⌽⊸⌈ ↕8
\end{verbatim}

\par Not OK:
\begin{lstlisting}
⌽⊸⌈ ↕8
\end{lstlisting}

\end{document}

답변1

에 대한 문자를 명시적으로 설정해야 합니다 listings. APL의 경우 다음을 사용할 수 있습니다.https://tex.stackexchange.com/a/25796/. ⊸( ) 문자가 0x22b8누락되어 아래에 추가했습니다. 이제 제대로 \lstinline작동합니다.

\documentclass{article}

\usepackage{fontspec}
\setmonofont{BQN386}

\usepackage{listings}

\lstset{
    basicstyle = \ttfamily,
    % columns = flexible,
    % keepspaces = true,
    % alsoletter={↕},
}

% set lstlisting to accept UTF8 APL text
% from: https://tex.stackexchange.com/a/25796/
\makeatletter
\lst@InputCatcodes
\def\lst@DefEC{%
 \lst@CCECUse \lst@ProcessLetter
  ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f%
  ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f%
  ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af%
  ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf%
  ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf%
  ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df%
  ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef%
  ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff%
  ^^^^20ac^^^^0153^^^^0152%
  ^^^^20a7^^^^2190^^^^2191^^^^2192^^^^2193^^^^2206^^^^2207^^^^220a%
  ^^^^2218^^^^2228^^^^2229^^^^222a^^^^2235^^^^223c^^^^2260^^^^2261%
  ^^^^2262^^^^2264^^^^2265^^^^2282^^^^2283^^^^2296^^^^22a2^^^^22a3%
  ^^^^22a4^^^^22a5^^^^22b8^^^^22c4^^^^2308^^^^230a^^^^2336^^^^2337^^^^2339%
  ^^^^233b^^^^233d^^^^233f^^^^2340^^^^2342^^^^2347^^^^2348^^^^2349%
  ^^^^234b^^^^234e^^^^2350^^^^2352^^^^2355^^^^2357^^^^2359^^^^235d%
  ^^^^235e^^^^235f^^^^2361^^^^2362^^^^2363^^^^2364^^^^2365^^^^2368%
  ^^^^236a^^^^236b^^^^236c^^^^2371^^^^2372^^^^2373^^^^2374^^^^2375%
  ^^^^2377^^^^2378^^^^237a^^^^2395^^^^25af^^^^25ca^^^^25cb%
  ^^00}
\lst@RestoreCatcodes
\makeatother


% \lstdefinelanguage{BQN}{ %
%   alsoletter=⌽⊸⌈↕, %
% }
% \lstset{language=BQN}

% \makeatletter
% \renewcommand*\verbatim@nolig@list{}
% \makeatother

\begin{document}

OK: {\tt ⌽⊸⌈ ↕8}. OK: \verb+⌽⊸⌈ ↕8+.

Or \lstinline!⌽⊸⌈ ↕8!.

\par OK:
\begin{verbatim}
⌽⊸⌈ ↕8
\end{verbatim}

\par Not OK:
\begin{lstlisting}
⌽⊸⌈ ↕8
\end{lstlisting}

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보