0

Does anybody know how to set the packages "listings" and "pythonhighlight" for displaying one blank space before (this already works) and after an "=" (and maybe other operation-symbols for future usage)?

I have an appendix section as .tex file:

\subsection{DALAtomObjectService}
\label{app:DALAtomObjectService} % chktex 24
Beispiel für die ``Object\_Service\_Atom''-Klasse im Data-Access-Layer (Ausschnitt):

\begin{python}
    class Object_Service_Atom(Object_Service_Abstract):

    def __init__(self):
        self.url = ATOM_BINDING_URL        

    def createDocument(self, repositoryId, properties, **kwargs):
        service = inspect.stack()[0][3]
        kwargs['service'] = service        
        url = self.url + "/" + repositoryId + "/children"
        data = Atom_Properties_Post(
            properties['name'], properties['objectTypeId']).getAtomProperty()
        params = {}
        if 'folderId' in kwargs:
            params['id'] = kwargs['folderId']
        create_response = RS().post(url, params=params, data=data, **kwargs)
        return create_response    
\end{python}

This is displayed in the created PDF like this:

    1 class Object_Service_Atom(Object_Service_Abstract):
    2
    3    def __init__(self):
    4       self.url =ATOM_BINDING_URL
    5
    6    def createDocument(self, repositoryId, properties, **kwargs):
    7       service =inspect.stack()[0][3]
    8       kwargs[’service’] =service
    9       url =self.url +"/" + repositoryId +"/children"
    10      data =Atom_Properties_Post(
    11         properties[’name’], properties[’objectTypeId’]).getAtomProperty()
    12      params ={}
    13      if ’folderId’ in kwargs:
    14         params[’id’] =kwargs[’folderId’]
    15      create_response =RS().post(url, params=params, data=data, **kwargs)
    16      return create_response```

But I don't want the assignments like

self.url =ATOM_BINDING_URL

but simply like that:

self.url = ATOM_BINDING_URL

.

In the Packages.tex file in the Section "Allgemein" (General) I have the following settings for the "listings" and "pythonhighlight" packages:

% zum Einbinden von Programmcode -----------------------------------------------
\usepackage[utf8]{inputenc}
\usepackage{listings}
\usepackage{pythonhighlight}
\usepackage{xcolor}
\definecolor{hellgelb}{rgb}{1,1,0.9}
\definecolor{colKeys}{rgb}{0,0,1}
\definecolor{colIdentifier}{rgb}{0,0,0}
\definecolor{colComments}{rgb}{0,0.5,0}
\definecolor{colString}{rgb}{1,0,0}
\lstset{
    float=hbp,
    basicstyle=\footnotesize,
    identifierstyle=\color{colIdentifier},
    keywordstyle=\color{colKeys},
    stringstyle=\color{colString},
    commentstyle=\color{colComments},
    backgroundcolor=\color{hellgelb},
    columns=flexible,
    tabsize=2,
    frame=single,
    extendedchars=true,
    showspaces=false,
    showstringspaces=false,
    numbers=left,
    numberstyle=\tiny,
    breaklines=true,
    breakautoindent=true,
    captionpos=b,
    showstringspaces=false
}
\lstdefinelanguage{cs}{
    sensitive=false,
    morecomment=[l]{//},
    morecomment=[s]{/*}{*/},
    morestring=[b]", % chktex 18
    morekeywords={
        abstract,event,new,struct,as,explicit,null,switch
        base,extern,object,this,bool,false,operator,throw,
        break,finally,out,true,byte,fixed,override,try,
        case,float,params,typeof,catch,for,private,uint,
        char,foreach,protected,ulong,checked,goto,public,unchecked,
        class,if,readonly,unsafe,const,implicit,ref,ushort,
        continue,in,return,using,decimal,int,sbyte,virtual,
        default,interface,sealed,volatile,delegate,internal,short,void,
        do,is,sizeof,while,double,lock,stackalloc,
        else,long,static,enum,namespace,string},
}
\lstdefinelanguage{natural}{
    sensitive=false,
    morecomment=[l]{/*},
    morestring=[b]", % chktex 18
    morestring=[b]',
    alsodigit={-,*},
    morekeywords={
        DEFINE,DATA,LOCAL,END-DEFINE,WRITE,CALLNAT,PARAMETER,USING,
        IF,NOT,END-IF,ON,*ERROR-NR,ERROR,END-ERROR,ESCAPE,ROUTINE,
        PERFORM,SUBROUTINE,END-SUBROUTINE,CONST,END-FOR,END,FOR,RESIZE,
        ARRAY,TO,BY,VALUE,RESET,COMPRESS,INTO,EQ},
}
\lstdefinelanguage{php}{
    sensitive=false,
    morecomment=[l]{/*},
    morestring=[b]", % chktex 18
    morestring=[b]',
    alsodigit={-,*},
    morekeywords={
        abstract,and,array,as,break,case,catch,cfunction,class,clone,const,
        continue,declare,default,do,else,elseif,enddeclare,endfor,endforeach,
        endif,endswitch,endwhile,extends,final,for,foreach,function,global,
        goto,if,implements,interface,instanceof,namespace,new,old_function,or,
        private,protected,public,static,switch,throw,try,use,var,while,xor
        die,echo,empty,exit,eval,include,include_once,isset,list,require,
        require_once,return,print,unset},
}
\lstset{language=python,texcl=true}
\lstset{literate=
  {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ú}{{\'u}}1 % chktex 7
  {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ú}{{\'U}}1
  {à}{{\`a}}1 {è}{{\`e}}1 {ì}{{\`i}}1 {ò}{{\`o}}1 {ù}{{\`u}}1 % chktex 7
  {À}{{\`A}}1 {È}{{\'E}}1 {Ì}{{\`I}}1 {Ò}{{\`O}}1 {Ù}{{\`U}}1
  {ä}{{\"a}}1 {ë}{{\"e}}1 {ï}{{\"i}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 % chktex 7
  {Ä}{{\"A}}1 {Ë}{{\"E}}1 {Ï}{{\"I}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1
  {â}{{\^a}}1 {ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1 % chktex 7
  {Â}{{\^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
}

I'm using a template, only the two last "\lsets" and the "showstringspaces=false" were later added by me.

There is probably a simple solution, but I have not yet managed to find something with Google that corresponds to what I want. LaTeX is new to me, otherwise I might be able to search more purposefully.

Thanks for help with examples or hints where to look!

2

1 Answer 1

0

To get your spaces back, you can add keepspaces or use columns=fixed instead of columns=flexible.

From the listings manual:

2.10 Fixed and flexible columns
The first thing a reader notices—except different styles for keywords, etc.—is the column alignment.
[...]
Currently four column formats are provided: fixed, flexible, space-flexible, and full flexible.
[...]
In the abstract one can say: The fixed column format ruins the spacing intended by the font designer, while the flexible formats ruin the column alignment (possibly) intended by the programmer.

and

keepspaces=true tells the package not to drop spaces to fix column alignment and always converts tabulators to spaces.

1
  • 1
    Perfect, 'columns=fixed' works and seems to be the best solution for me. I don't need them to be 'flexible' on this. Thank you very much!
    – DieTho
    May 1 at 15:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.