Einführung in LaTeX / Introduction into LaTeX
14.2
Reading and writing files
\documentclass{article}\usepackage[T1]{fontenc}\usepackage[scaled=0.82]{beramono}\usepackage{blindtext}\usepackage{fancyvrb}\usepackage{listings}\newlength\CodeWidth\makeatletter\newenvironment{ShowCode}[2][]{\lstset{#1}\VerbatimEnvironment%\global\CodeWidth=#2%\begin{VerbatimOut}{\jobname.vrb}}{\end{VerbatimOut}%\noindent%\minipage[t]{\CodeWidth}\vspace{0pt}\input{\jobname.vrb}\endminipage%\minipage[t]{\dimexpr\linewidth-\CodeWidth-2\fboxsep-2\fboxrule\relax}\vspace{0pt}\lstinputlisting{\jobname.vrb}\endminipage}\makeatother\begin{document}\begin{ShowCode}[language={[LaTeX]TeX},frame=single,columns=fixed,basicstyle=\small\ttfamily,breaklines,postbreak=\mbox{$\hookrightarrow$},keywordstyle=\bfseries]{0.6\linewidth}\begin{itemize}\item Thisisaitemwithnosenseinitstext\item anotherone\end{itemize}\end{ShowCode}\end{document}
Writing files with umlauts
\documentclass[border=5mm]{standalone}\usepackage[utf8]{inputenx}\usepackage{fancyvrb}\begin{document}\begin{VerbatimOut}[codes={\InputEncoding{verbatim}}]{test.tex}==äööÄÄÄÖÖ==\end{VerbatimOut}\VerbatimInput[]{test}\end{document}
Sinnvoller ist die Anwendung von lualatex:
% !TEX lualatex\documentclass[a5paper,12pt]{article}\usepackage{fancyvrb}\begin{document}\begin{VerbatimOut}{test.tex}==äööÄÄÄÖÖ==\end{VerbatimOut}\VerbatimInput{test}\end{document}
14.3
Special listings
% !TEX lualatex\documentclass{article}\usepackage{fontspec}\usepackage[Scale=MatchLowercase,FakeStretch=0.82]{AnonymousPro}\usepackage{pst-solides3d,lstlinebgrd,xcolor}\pagestyle{empty}\lstset{linebackgroundcolor={\ifodd\value{lstnumber}\color{black!20}\fi},linebackgroundsep=3pt,linebackgroundwidth={\dimexpr\linewidth + (\lst@linebgrdsep)*2 \relax},frame=lr,xleftmargin=15pt,xrightmargin=5pt,framexleftmargin=0pt,framexrightmargin=0pt,basicstyle=\ttfamily\small}\begin{document}\begin{lstlisting}\begin{pspicture}[solidmemory](-6,-4)(6,4)\psset{viewpoint=30 0 15 rtp2xyz,Decran=30,lightsrc=viewpoint}\psSolid[object=tore,r1=5,r0=1,ngrid=36 36,opacity=0.5,fillcolor=blue!30,action=none,name=Torus]%%\axesIIID(4.5,4.5,0)(5,5,4)\codejps{/R1 5 def /RL 0.01 def /R0 1.05 def /k 25 def}%\defFunction[algebraic]{helix}(u,v){(R1 + (R0 +RL*sin(u))*sin(k*v))*cos(v)-RL*cos(u)*sin(v)}{(R1 + (R0 +RL*sin(u))*sin(k*v))*sin(v)+RL*cos(u)*cos(v)}{(R0 + RL*sin(u))*cos(k*v)}\psSolid[object=surfaceparametree,base=0 6.2831853 0 6.2831853,linecolor=blue,linewidth=0.01,fillcolor=yellow,ngrid=0.8 0.01,function=helix,action=none,name=Helix]%\psSolid[object=fusion,base=Torus Helix,grid=false,opacity=0.5]%\gridIIID[Zmin=-3,Zmax=3,showAxes=false](-2,2)(-2,2)\end{pspicture}\end{lstlisting}\end{document}
Listings with tcolorbox
\documentclass[parskip=half-]{scrbook}\usepackage[most]{tcolorbox}\definecolor{codegreen}{rgb}{0,0.6,0}\definecolor{codegray}{rgb}{0.5,0.5,0.5}\definecolor{codepurple}{rgb}{0.58,0,0.82}\definecolor{backcolour}{rgb}{0.95,0.95,0.92}\lstdefinestyle{mystyle}{commentstyle=\color{codegreen},keywordstyle=\color{magenta},numberstyle=\tiny\color{codegray},stringstyle=\color{codepurple},basicstyle=\ttfamily\footnotesize,breakatwhitespace=false,breaklines=true,captionpos=b,keepspaces=true,numbers=left,numbersep=5pt,showspaces=false,showstringspaces=false,showtabs=false,tabsize=2}% texdoc tcolorbox% https://tex.stackexchange.com/questions/305387/adding-a-caption-to-a-tcolorbox-tcblisting% https://tex.stackexchange.com/questions/343105/reverse-caption-number-and-text-order-in-special-listing\renewcommand*\thelstnumber{\makebox[3em][r]{%\ifnum\value{lstnumber}<10 0\fi\the\value{lstnumber}}}\AtBeginDocument{%\newtcblisting[blend into=listings]{PythonCode}[1][]{breakable,listing only,%colframe = blue!50!black,colback = backcolour,frame hidden,left=0mm,right=0mm,top=0mm,bottom=0mm,enhanced,sharp corners,listing remove caption=false,coltitle=black,attach boxed title to top center={yshift=\belowcaptionskip},boxed title style={colback=white, sharp corners, frame hidden},listing options={style=mystyle,language=Python},hbox,#1}}\begin{document}\lstlistoflistings\noindent\rule{\textwidth}{1mm}\centering\begin{PythonCode}[list text={A Python Program},title={A Python Function}]import numpy as npdef incmatrix(genl1,genl2):m = len(genl1)n = len(genl2)M = None #to become the incidence matrixVT = np.zeros((n*m,1), int) #dummy variable#compute the bitwise xor matrixM1 = bitxormatrix(genl1)M2 = np.triu(bitxormatrix(genl2),1)for i in range(m-1):for j in range(i+1, m):[r,c] = np.where(M2 == M1[i,j])for k in range(len(r)):VT[(i)*n + r[k]] = 1;VT[(i)*n + c[k]] = 1;VT[(j)*n + r[k]] = 1;VT[(j)*n + c[k]] = 1;if M is None:M = np.copy(VT)else:M = np.concatenate((M, VT), 1)VT = np.zeros((n*m,1), int)return M\end{PythonCode}\noindent\rule{\textwidth}{1mm}\end{document}
Zurück zur Hauptseite/Back to main page
Copyright $Id: chapter14.html 2 2022-12-28 16:38:18Z voss $