我正在使用包listingsutf8
在 tex 输出中突出显示 Python 代码。尝试此代码 -
\documentclass{standalone}
%\usepackage{fontspec} % Currently commented as making no change in the output.
%\setmainfont{Sanskrit2003} % Use any Devanagari font here.
\usepackage{listingsutf8}
\begin{document}
\begin{lstlisting}
अ=( "अ","आ","इ","ई","उ","ए","ऐ","ओ","औ")
\end{lstlisting}
\end{document}
即使使用listings
结果也不会改变。我尝试使用包添加包含这些字符的字体fontspec
。仍然没有得到字符。我该怎么办?
我尝试了 Ulrike Fischer 提供的解决方案。这是新代码。
\documentclass{article}
\usepackage{listings,fontspec}
\setmainfont[Script=Devanagari]{Yashomudra}
\makeatletter
\lst@InputCatcodes
\def\lst@DefEC{%
\lst@CCECUse \lst@ProcessLetter
^^^^0905^^^^0906^^^^0907^^^^0908^^^^0909^^^^090a^^^^090b^^^^090c^^^^090d^^^^090e^^^^090f^^^^0911^^^^0912^^^^0913^^^^0914^^^^0915^^^^0916^^^^0917^^^^0918^^^^0919^^^^0920^^^^0921^^^^0922^^^^0923^^^^0924^^^^0925^^^^0926^^^^0927^^^^0928^^^^0929^^^^0930^^^^0931^^^^0932^^^^0933^^^^0934^^^^0935^^^^0936^^^^0937^^^^0938^^^^0939^^^^091a^^^^091b^^^^091c^^^^091d^^^^091e^^^^091f^^^^092a^^^^092b^^^^092c^^^^092d^^^^092e^^^^092f^^^^093e^^^^093f^^^^0940^^^^0941^^^^0942^^^^0943^^^^0944^^^^0945^^^^0946^^^^0947^^^^0948^^^^0949^^^^094b^^^^094d^^^^094c^^00}
\lst@RestoreCatcodes
\makeatother
\begin{document}
\begin{lstlisting}[extendedchars=true]
हा देवनागरी लिपीतील मजकूर आहे
परंतु ह्यात स्वरांशचिन्हे योग्यरूपात दिसत नाहीत.
\end{lstlisting}
हा देवनागरी लिपीतील मजकूर आहे\\
ह्यात स्वरांशचिन्हे योग्यरूपात दिसत आहेत.
\end{document}
现在我的输出如下所示 -
如何解决这个问题?
答案1
listings 逐个处理输入。它无法很好地处理像您这样的需要大量连字的脚本。您可以使用它来改进输出,columns=fullflexible
但这也不是完美的。使用 minted 可以获得最佳结果:
\documentclass{article}
\usepackage{listings,fontspec}
\setmainfont[Script=Devanagari]{Noto Sans Devanagari}
\setmonofont[Script=Devanagari]{Noto Sans Devanagari}
\makeatletter
\lst@InputCatcodes
\def\lst@DefEC{%
\lst@CCECUse \lst@ProcessLetter
^^^^0905^^^^0906^^^^0907^^^^0908^^^^0909^^^^090a^^^^090b^^^^090c^^^^090d^^^^090e^^^^090f^^^^0911^^^^0912^^^^0913^^^^0914^^^^0915^^^^0916^^^^0917^^^^0918^^^^0919^^^^0920^^^^0921^^^^0922^^^^0923^^^^0924^^^^0925^^^^0926^^^^0927^^^^0928^^^^0929^^^^0930^^^^0931^^^^0932^^^^0933^^^^0934^^^^0935^^^^0936^^^^0937^^^^0938^^^^0939^^^^091a^^^^091b^^^^091c^^^^091d^^^^091e^^^^091f^^^^092a^^^^092b^^^^092c^^^^092d^^^^092e^^^^092f^^^^093e^^^^093f^^^^0940^^^^0941^^^^0942^^^^0943^^^^0944^^^^0945^^^^0946^^^^0947^^^^0948^^^^0949^^^^094b^^^^094d^^^^094c^^00}
\lst@RestoreCatcodes
\makeatother
\usepackage{minted}
\begin{document}
\begin{lstlisting}[extendedchars=true,columns=fullflexible]
हा देवनागरी लिपीतील मजकूर आहे
परंतु ह्यात स्वरांशचिन्हे योग्यरूपात दिसत नाहीत.
\end{lstlisting}
\begin{minted}{latex}
हा देवनागरी लिपीतील मजकूर आहे
परंतु ह्यात स्वरांशचिन्हे योग्यरूपात दिसत नाहीत.
\end{minted}
हा देवनागरी लिपीतील मजकूर आहे\\
ह्यात स्वरांशचिन्हे योग्यरूपात दिसत आहेत.
\end{document}