Ich versuche, meine Doktorarbeit in einer Vorlage zu erstellen, die grundsätzlich auf Persisch eingestellt ist. Die Vorlage ist wunderbar, wenn alles persisch ist. Aber es gibt ein Problem. Ich muss meinen Python
Code den Anhängen hinzufügen. Ich habe hier einen Link gefunden intex.stackexchange.comDadurch passt es genau in die Jupyter
Umgebung und ist wunderschön.
Aber wenn ich diese Formatierung zu meiner Datei hinzufüge, werden einige Teile der LaTeX-Ausgabedatei gestört.
Der wichtigste LaTeX-Code ist:
\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}
Und der Anhang lautet:
\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}
Es gibt drei Probleme in der Ausgabe (siehe auch die Bilder):
- Einige persische Teile der Datei, die vor dem Hinzufügen des Python-Stils in Ordnung waren, werden jetzt in Quadraten angezeigt!!!
- Der Python-Code zum Einfärben selbst ist in Ordnung, aber alle Wörter werden umgekehrt angezeigt, wie im Bild zu sehen ist. Beispielsweise
def
wird das Wort so angezeigt,fed
was seltsam ist.
- Die Zahlen werden auf Persisch angezeigt. Für den Rest des Dokuments ist das in Ordnung, aber hier wünschte ich, sie wären auf Englisch.
Wäre für jeden Rat dankbar. Danke.