Nueva línea falsa insertada por lstlisting cuando se usa la fuente BQN386

Nueva línea falsa insertada por lstlisting cuando se usa la fuente BQN386

Tengo un problema de representación de listados con el código fuente del lenguaje de programación BQN. Yo suelo lualatex( LuaHBTeX, Version 1.17.0 (TeX Live 2023)). Probé varias fuentes y el resultado es el mismo. Las fuentes provienen dehttps://mlochbaum.github.io/BQN/fonts.htmly en particular BQN386 está enhttps://github.com/dzaima/BQN386.

Se inserta una nueva línea falsa antes 8y lstlistingel espacio anterior ha desaparecido. La misma línea usando el verbatimentorno o con verbestá bien. Tenga en cuenta que no puedo utilizar el comando lstinlinedebido a un error. Parece que esos personajes especiales están jugando con la forma en que listingsse interpretan.

Aquí está la parte relevante del pdf generado:

He comprobadoLatex: Listados con fuentes monoespaciadas,¿Cómo habilitar sustituciones contextuales en lstlisting?yUtilice ligaduras JetBrains Mono con fontspec y entorno lstlisting.

¿Alguna idea para representar el código fuente correctamente?

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}

Respuesta1

Debes configurar los caracteres explícitamente para listings. Para APL puedes usarhttps://tex.stackexchange.com/a/25796/. Falta el carácter ⊸ ( 0x22b8), lo agregué a continuación. Ahora también \lstinlinefunciona correctamente.

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

ingrese la descripción de la imagen aquí

información relacionada