¿Podemos usar paquetes específicos para algunas partes del documento LaTeX, o cómo podemos manejar la posible interferencia entre el estilo inglés y persa?

¿Podemos usar paquetes específicos para algunas partes del documento LaTeX, o cómo podemos manejar la posible interferencia entre el estilo inglés y persa?

Estoy intentando construir mi tesis doctoral en una plantilla que se ha configurado básicamente para el idioma persa. La plantilla es maravillosa cuando todo es persa. Pero hay un problema. Necesito agregar mi Pythoncódigo a los apéndices. Encontré un enlace aquí entex.stackexchange.comlo que lo hace exactamente como en el Jupyterentorno y es hermoso.

Pero cuando agrego este estilo a mi archivo, algunas partes del archivo LaTeX de salida se alteran.

El código principal de LaTeX es:

\documentclass[oneside,phd,12pt]{AUTthesis}

\usepackage{graphicx,adjustbox}
\graphicspath{{figures/}} %Setting the graphicspath
\usepackage{amsthm,amssymb,amsmath}
\usepackage[center]{caption}
\usepackage{afterpage}
\usepackage{lscape}
\usepackage{xcolor}
\usepackage{color,soul}
\usepackage{multirow}
\usepackage{float}
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{plotmarks}
\usetikzlibrary{arrows.meta,patterns}
\pgfplotsset{compat=1.10}
\usepgfplotslibrary{fillbetween}
\usepgfplotslibrary{units}
\definecolor{findOptimalPartition}{HTML}{D7191C}
\definecolor{storeClusterComponent}{HTML}{FDAE61}
\definecolor{dbscan}{HTML}{ABDDA4}
\definecolor{constructCluster}{HTML}{2B83BA}


\usepackage{array}
\usepackage[skip=0pt]{caption}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcommand{\hlgreen}[1]{{\sethlcolor{green}\hl{#1}}}

%%%%%For colorful Jupyter style of Python code
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}

\usepackage{xcolor}
\definecolor{maroon}{cmyk}{0, 0.87, 0.68, 0.32}
\definecolor{halfgray}{gray}{0.55}
\definecolor{ipython_frame}{RGB}{207, 207, 207}
\definecolor{ipython_bg}{RGB}{247, 247, 247}
\definecolor{ipython_red}{RGB}{186, 33, 33}
\definecolor{ipython_green}{RGB}{0, 128, 0}
\definecolor{ipython_cyan}{RGB}{64, 128, 128}
\definecolor{ipython_purple}{RGB}{170, 34, 255}

\usepackage{listings}
\lstset{
    breaklines=true,
    %
    extendedchars=true,
    literate=
    {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
    {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
    {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
    {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
    {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
    {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
    {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
    {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
    {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
    {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
    {€}{{\EUR}}1 {£}{{\pounds}}1
}

%%
%% Python definition (c) 1998 Michael Weber
%% Additional definitions (2013) Alexis Dimitriadis
%% modified by me (should not have empty lines)
%%
\lstdefinelanguage{iPython}{
    morekeywords={access,and,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while},%
    %
    % Built-ins
    morekeywords=[2]{abs,all,any,basestring,bin,bool,bytearray,callable,chr,classmethod,cmp,compile,complex,delattr,dict,dir,divmod,enumerate,eval,execfile,file,filter,float,format,frozenset,getattr,globals,hasattr,hash,help,hex,id,input,int,isinstance,issubclass,iter,len,list,locals,long,map,max,memoryview,min,next,object,oct,open,ord,pow,property,range,raw_input,reduce,reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,sum,super,tuple,type,unichr,unicode,vars,xrange,zip,apply,buffer,coerce,intern},%
    %
    sensitive=true,%
    morecomment=[l]\#,%
    morestring=[b]',%
    morestring=[b]",%
    %
    morestring=[s]{'''}{'''},% used for documentation text (mulitiline strings)
    morestring=[s]{"""}{"""},% added by Philipp Matthias Hahn
    %
    morestring=[s]{r'}{'},% `raw' strings
    morestring=[s]{r"}{"},%
    morestring=[s]{r'''}{'''},%
    morestring=[s]{r"""}{"""},%
    morestring=[s]{u'}{'},% unicode strings
    morestring=[s]{u"}{"},%
    morestring=[s]{u'''}{'''},%
    morestring=[s]{u"""}{"""},%
    %
    % {replace}{replacement}{lenght of replace}
    % *{-}{-}{1} will not replace in comments and so on
    literate=
    {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1
    {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
    {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1
    {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
    {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1
    {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
    {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
    {Â}{{\^A}}1 {Ê}{{\^E}}1 {Î}{{\^I}}1 {Ô}{{\^O}}1 {Û}{{\^U}}1
    {œ}{{\oe}}1 {Œ}{{\OE}}1 {æ}{{\ae}}1 {Æ}{{\AE}}1 {ß}{{\ss}}1
    {ç}{{\c c}}1 {Ç}{{\c C}}1 {ø}{{\o}}1 {å}{{\r a}}1 {Å}{{\r A}}1
    {€}{{\EUR}}1 {£}{{\pounds}}1
    %
    {^}{{{\color{ipython_purple}\^{}}}}1
    {=}{{{\color{ipython_purple}=}}}1
    %
    {+}{{{\color{ipython_purple}+}}}1
    {*}{{{\color{ipython_purple}$^\ast$}}}1
    {/}{{{\color{ipython_purple}/}}}1
    %
    {+=}{{{+=}}}1
    {-=}{{{-=}}}1
    {*=}{{{$^\ast$=}}}1
    {/=}{{{/=}}}1,
    literate=
    *{-}{{{\color{ipython_purple}-}}}1
     {?}{{{\color{ipython_purple}?}}}1,
    %
    identifierstyle=\color{black}\ttfamily,
    commentstyle=\color{ipython_cyan}\ttfamily,
    stringstyle=\color{ipython_red}\ttfamily,
    keepspaces=true,
    showspaces=false,
    showstringspaces=false,
    %
    rulecolor=\color{ipython_frame},
    frame=single,
    frameround={t}{t}{t}{t},
    framexleftmargin=6mm,
    numbers=left,
    numberstyle=\tiny\color{halfgray},
    %
    %
    backgroundcolor=\color{ipython_bg},
    %   extendedchars=true,
    basicstyle=\scriptsize,
    keywordstyle=\color{ipython_green}\ttfamily,
}

\input{commands}

\begin{document}
\baselineskip=.75cm
\linespread{1.75}
\input{fa_title}
\pagenumbering{alph}
%-----------------------------------------------------------------------------

\input{TOC-TOF-LOT}

\pagenumbering{arabic}
\pagestyle{style1}


%--------------------------------------------------------------------------appendix

\chapterfont{\vspace*{-2em}\centering\LARGE}%

\appendix
\renewcommand{\chaptermark}[1]{\markboth{#1}{}}
\include{appendix1}

\end{document}

Y el apéndice es:

\chapter{کد شبیه‌سازی به زبان $Python$ در بستر $Jupyter$\ref{sec5}}\label{PythonCode}
\begin{lstlisting}[language=iPython]
"""
Initial definitions
"""

KSstrategies=['S','N']
CAstrategies=['R','O','D']
ALLstrategies=['SR','SO','SD','NR','NO','ND']
ALLstrategiesCodes={'SR':0,'SO':1,'SD':2,'NR':3,'NO':4,'ND':5}
Theta = 0.2
s = 0.3333
Lambda = 0.4
Etha = 1.15
l = {'Ent':0.08,'Inc':0.08} #[Ent,Inc]
k = {'Ent':Etha*l['Ent'],'Inc':Etha*l['Inc']} #[Ent,Inc]
n={'Ent':0.27,'Inc':0.12} #[Ent,Inc]
r={'Ent':0.2,'Inc':0.15} #[Ent,Inc]
v={'Ent':0.36,'Inc':0.225} #[Ent,Inc]
rho = {'Ent':1.2,'Inc':0.8} #[Ent,Inc]
omega = {'Ent':0.9,'Inc':1.1} #[Ent,Inc]
delta = {'Ent':1.4,'Inc':0.6} #[Ent,Inc]
phi = {'Ent':0.07,'Inc':0.085} #[Ent,Inc]
tau = {'Ent':0.06,'Inc':0.066} #[Ent,Inc]
c={}
c['Inc']={'R':0.09,'O':0.10,'D':0.20} #c[R,O,D]
c['Ent']={'R':0.11,'O':0.12,'D':0.14} #c[R,O,D]
costToQualityRatio = 2
ksnoise = 0.15

"""
Define functions
"""

import numpy as np
def optimumprofitIncLead(qEnt,qInc,Leader):
    if Leader == 'Incumbent':
        #The Incumbent is the leader in pricing
        if qEnt>qInc:
            priceInc = ((qEnt - qInc)*qInc)/(2*(2*qEnt - qInc))
            profitInc = ((qEnt - qInc)*qInc)/(16*qEnt - 8*qInc)
            priceEnt = ((qEnt - qInc)*(4*qEnt - qInc))/(4*(2*qEnt - qInc))
            profitEnt = ((qEnt - qInc)*(-4*qEnt + qInc)**2)/(16*(-2*qEnt + qInc)**2)
        elif qEnt==qInc:
            priceInc = 'Whatever'
            profitInc = 0
            priceEnt = qEnt/2
            profitEnt = qEnt/4
        elif qEnt<qInc:
            priceInc = ((qInc-qEnt)*qInc)/(2*qInc-qEnt)
            profitInc = ((qEnt - qInc)*qInc)/(2*(qEnt - 2*qInc))
            priceEnt = ((qInc-qEnt)*qEnt)/(2*(2*qInc-qEnt))
            profitEnt = (qEnt*qInc*(-qEnt + qInc))/(4*(qEnt - 2*qInc)**2)
    elif Leader == 'Entrant':
        #The New Entrant is the leader in pricing
        if qEnt>qInc:
            priceInc = ((qInc-qEnt)*qInc)/(2*(qInc-2*qEnt))
            profitInc = (qEnt*qInc*(qEnt-qInc))/(4*((2*qEnt-qInc)**2))
            priceEnt = ((qInc-qEnt)*qEnt)/(qInc-2*qEnt)
            profitEnt = ((qEnt - qInc)*qEnt)/(4*qEnt - 2*qInc)
        elif qEnt==qInc:
            priceInc = qInc/2
            profitInc = qInc/4
            priceEnt = 'Whatever'
            profitEnt = 0
        elif qEnt<qInc:
            priceInc = ((qInc - qEnt)*(4*qInc - qEnt))/(4*(2*qInc - qEnt))
            profitInc = ((qInc - qEnt)*(-4*qInc + qEnt)**2)/(16*(-2*qInc + qEnt)**2)
            priceEnt = ((qInc - qEnt)*qEnt)/(2*(2*qInc - qEnt))
            profitEnt = ((qInc - qEnt)*qEnt)/(16*qInc - 8*qEnt)      
    return priceEnt,profitEnt,priceInc,profitInc

def KSpayoff(strategyEnt,strategyInc):
    global payoffEnt, payoffInc
    if strategyEnt=='S' and strategyInc=='S':
        payoffEnt=(1+Theta)*(r['Ent']+r['Inc']+Lambda*s+l['Ent'])-n['Ent']
        payoffInc=(1+Theta)*(r['Ent']+r['Inc']+(1-Lambda)*s+l['Inc'])-n['Inc']
    elif strategyEnt=='S' and strategyInc=='N':
        payoffEnt=(1+Theta)*(r['Ent']-n['Ent'])
        payoffInc=(1-Theta)*(r['Ent']+r['Inc']+v['Inc']+l['Inc'])
    elif strategyEnt=='N' and strategyInc=='S':
        payoffEnt=(1-Theta)*(r['Ent']+r['Inc']+v['Ent']+l['Ent'])
        payoffInc=(1+Theta)*(r['Inc']-n['Inc'])
    elif strategyEnt=='N' and strategyInc=='N':
        payoffEnt=(1-Theta)*(r['Ent']+v['Ent'])
        payoffInc=(1-Theta)*(r['Inc']+v['Inc'])
    return payoffEnt,payoffInc
def CApayoff(CAstrategyEnt,CAstrategyInc,KSstrategyEnt,KSstrategyInc,qEnt,qInc,Leader):
    global payoffEnt, payoffInc
    receivedknowledge = {}
    if KSstrategyEnt == 'N':
        receivedknowledge['Inc'] = 0
    else:
        receivedknowledge['Inc'] = 1 
    if KSstrategyInc == 'N':
        receivedknowledge['Ent'] = 0
    else:
        receivedknowledge['Ent'] = 1 
        
    if CAstrategyEnt=='R' and CAstrategyInc=='R':
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = rho['Ent']*profitEnt-c['Ent']['R']
        payoffInc = rho['Inc']*profitInc-c['Inc']['R']
    elif CAstrategyEnt=='R' and CAstrategyInc=='O':
        qInc += receivedknowledge['Inc']*k['Inc']+c['Inc']['O']/costToQualityRatio-phi['Inc']
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = rho['Ent']*profitEnt-c['Ent']['R']
        payoffInc = omega['Inc']*profitInc-c['Inc']['O']
    elif CAstrategyEnt=='R' and CAstrategyInc=='D':
        qInc += np.tanh(receivedknowledge['Inc']*k['Inc']+c['Inc']['D']/costToQualityRatio-tau['Inc'])
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = rho['Ent']*profitEnt-c['Ent']['R']
        payoffInc = delta['Inc']*profitInc-c['Inc']['D']
    elif CAstrategyEnt=='O' and CAstrategyInc=='R':
        qEnt += receivedknowledge['Ent']*k['Ent']+c['Ent']['O']/costToQualityRatio-phi['Ent']
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = omega['Ent']*profitEnt-c['Ent']['O']
        payoffInc = rho['Inc']*profitInc-c['Inc']['R']
    elif CAstrategyEnt=='O' and CAstrategyInc=='O':
        qEnt += receivedknowledge['Ent']*k['Ent']+c['Ent']['O']/costToQualityRatio-phi['Ent']
        qInc += receivedknowledge['Inc']*k['Inc']+c['Inc']['O']/costToQualityRatio-phi['Inc']
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = omega['Ent']*profitEnt-c['Ent']['O']
        payoffInc = omega['Inc']*profitInc-c['Inc']['O']
    elif CAstrategyEnt=='O' and CAstrategyInc=='D':
        qEnt += receivedknowledge['Ent']*k['Ent']+c['Ent']['O']/costToQualityRatio-phi['Ent']
        qInc += np.tanh(receivedknowledge['Inc']*k['Inc']+c['Inc']['D']/costToQualityRatio-tau['Inc'])
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = omega['Ent']*profitEnt-c['Ent']['O']
        payoffInc = delta['Inc']*profitInc-c['Inc']['D']
    elif CAstrategyEnt=='D' and CAstrategyInc=='R':
        qEnt += np.tanh(receivedknowledge['Ent']*k['Ent']+c['Ent']['D']/costToQualityRatio-tau['Ent'])
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = delta['Ent']*profitEnt-c['Ent']['D']
        payoffInc = rho['Inc']*profitInc-c['Inc']['R']
    elif CAstrategyEnt=='D' and CAstrategyInc=='O':
        qEnt += np.tanh(receivedknowledge['Ent']*k['Ent']+c['Ent']['D']/costToQualityRatio-tau['Ent'])
        qInc += receivedknowledge['Inc']*k['Inc']+c['Inc']['O']/costToQualityRatio-phi['Inc']
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = delta['Ent']*profitEnt-c['Ent']['D']
        payoffInc = omega['Inc']*profitInc-c['Inc']['O']
    elif CAstrategyEnt=='D' and CAstrategyInc=='D':
        qEnt += np.tanh(receivedknowledge['Ent']*k['Ent']+c['Ent']['D']/costToQualityRatio-tau['Ent'])
        qInc += np.tanh(receivedknowledge['Inc']*k['Inc']+c['Inc']['D']/costToQualityRatio-tau['Inc'])
        priceEnt,profitEnt,priceInc,profitInc = optimumprofitIncLead(qEnt,qInc,Leader)
        payoffEnt = delta['Ent']*profitEnt-c['Ent']['D']
        payoffInc = delta['Inc']*profitInc-c['Inc']['D']
    return payoffEnt,payoffInc,qEnt,qInc



\end{lstlisting}

Hay tres problemas en el resultado (consulte también las imágenes):

  1. ¡Algunas partes persas del archivo que estaban bien antes de agregar el estilo Python ahora se muestran en cuadrados!

ingrese la descripción de la imagen aquí

  1. El código Python para colorear en sí está bien, pero todas las palabras se muestran al revés, como se puede ver en la imagen. Por ejemplo, la palabra defse muestra como fed"rara".

ingrese la descripción de la imagen aquí

  1. Los números se muestran en persa. Esto está bien para el resto del documento, pero aquí desearía que estuvieran en inglés.

Agradecería cualquier consejo. Gracias.

información relacionada