
BQN 프로그래밍 언어의 소스 코드에 목록 렌더링 문제가 있습니다. 나는 사용한다 lualatex
( LuaHBTeX, Version 1.17.0 (TeX Live 2023)
). 다양한 글꼴을 테스트해 보았지만 결과는 동일했습니다. 글꼴은 다음에서 제공됩니다.https://mlochbaum.github.io/BQN/fonts.html특히 BQN386은https://github.com/dzaima/BQN386.
8
by 앞에 가짜 개행 문자가 삽입되고 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}