Можно ли использовать специальные пакеты для некоторых частей документа LaTeX или как устранить возможные помехи между английским и персидским стилями?

Можно ли использовать специальные пакеты для некоторых частей документа LaTeX или как устранить возможные помехи между английским и персидским стилями?

Я пытаюсь создать свою докторскую диссертацию в шаблоне, который был изначально настроен на персидский язык. Шаблон прекрасен, когда все на персидском. Но есть проблема. Мне нужно добавить свой Pythonкод в приложения. Я нашел ссылку здесь, вtex.stackexchange.comчто делает его точно таким же, как в Jupyterокружающей среде, и это прекрасно.

Но когда я добавляю этот стиль в свой файл, некоторые части выходного файла LaTeX нарушаются.

Основной код LaTeX:

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

А приложение такое:

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

В выводе есть три проблемы (см. также изображения):

  1. Некоторые части файла на персидском языке, которые были в порядке до добавления стиля Python, теперь отображаются в квадратах!!!

введите описание изображения здесь

  1. Код раскраски Python сам по себе хорош, но все слова отображаются наоборот, как можно увидеть на изображении. Например, слово defотображается как fed, что странно.

введите описание изображения здесь

  1. Цифры отображаются на персидском языке. Это нормально для остальной части документа, но здесь я хотел бы, чтобы они были на английском языке.

Буду благодарен за любой совет. Спасибо.

Связанный контент