목록에서 이상한 유니 코드 동작 [중복]

Dec 02 2020

여기에 최소한의 문서가 있습니다.

\documentclass{article}
\usepackage{unicode-math}
\usepackage{listings}

\setmainfont{Stix}
\setmathfont{Latin Modern Math}
\setmonofont{Fira Mono}

\begin{document}
this is λ lambda
$$\int_0^\infty λ\lambda$$
\begin{lstlisting}
# some random pseudocode using unicode
def function(λ): 
    αδ = βθ

def function( λ): 
    pass
\end{lstlisting}
\end{document}

lualatex로 생산 :

유니 코드 문자가 올바른 위치가 아닌 목록에서 어떻게 렌더링되는지 살펴보십시오.

답변

3 egreg Dec 02 2020 at 19:07

필요한 모든 유니 코드 문자를 수동으로 추가해야합니다.

\documentclass{article}
\usepackage{unicode-math}
\usepackage{listings}

\setmainfont{STIX Two Text}
\setmathfont{STIX Two Math}
\setmonofont{Fira Mono}

\makeatletter % see https://tex.stackexchange.com/a/320345
\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%
  ^^^^03b1% alpha
  ^^^^03b2% beta
  ^^^^03b4% delta
  ^^^^03bb% lambda
  ^^^^03b8% theta  
  ^^00}
\lst@RestoreCatcodes
\makeatother

\lstset{basicstyle=\ttfamily}


\begin{document}
this is λ lambda
\[\int_0^\infty λ\lambda\]
\begin{lstlisting}
# some random pseudocode using unicode
def function(λ): 
    αδ = βθ

def function(λ): 
    pass
\end{lstlisting}
\end{document}

1 Marijn Dec 02 2020 at 14:43

대안으로 minted패키지를 사용할 수 있습니다 (으로 컴파일 --shell-escape). STIX 또는 Fira Mono가 없기 때문에 글꼴을 변경했습니다.

\documentclass{article}
\usepackage{unicode-math}
\usepackage{minted}

\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\setmathfont{Latin Modern Math}

\begin{document}
this is λ lambda
$$\int_0^\infty λ\lambda$$
\begin{minted}{python}
# some random pseudocode using unicode
def function(λ): 
    αδ = βθ

def function( λ): 
    pass
\end{minted}
\end{document}