Skip to content

Instantly share code, notes, and snippets.

@jnareb
Last active January 29, 2020 17:13
Show Gist options
  • Save jnareb/83e1c15889e1818b4834145f1955be86 to your computer and use it in GitHub Desktop.
Save jnareb/83e1c15889e1818b4834145f1955be86 to your computer and use it in GitHub Desktop.
Konfiguracja pakietu listings: kolorowanie składni, polskie literki, numerowanie linii, itp.
%%% Proszę zwrócić uwagę na komentarze! %%%
%% fonty programistyczne, o stałej szerokości znaków
%% jeden z poniższych
\ifcase 0 % 0-3
% 0
%% użycie domyślnego fontu o stałej szerokości znaków (monospace)
\or % 1
%% dosyć wąski font stałej szerokości Inconsolata, do druku kodu
%% niestety bez czcionki pochyłej w foncie
\usepackage[varqu,scaled=1]{inconsolata} % Inconsolata is a monospaced font designed by Raph Levien.
\or % 2
\usepackage[zerostyle=d,straightquotes,scaled=.97]{newtxtt} % Enhancement of typewriter fonts from newtx
\or % 3
\usepackage[scaled=1]{sourcecodepro} % Adobe’s Source Code Pro typeface for LaTeX
\fi
%% kolor tekstu, tła, itp.
\usepackage{xcolor}
%% kod źródłowy, verbatim, URL itp.
\usepackage{listings}
\makeatletter
\lstset{
language=C++,
%% mniejszy font dla większych fragmentów, by się zmieściły
%basicstyle=\lst@ifdisplaystyle\scriptsize\else\ttfamily\fi,
basicstyle=\lst@ifdisplaystyle\footnotesize\fi\ttfamily,
%basicstyle=\scriptsize\ttfamily,
%% elastyczne formatowanie dla fragmentów inline
%% dostępne wartości: _fixed_, flexible, spaceflexible, fullflexible
columns=\lst@ifdisplaystyle fixed\else flexible\fi,
%columns=fixed,
%% konfiguracja prezentacji znaków odstępów
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
%% konfiguracja znaków rozszerzonych i kodowania
%extendedchars=true,
%inputencoding=utf8,
%% odstępy wokół pełnych listingów, domyślnie \medskipamount
aboveskip=0pt,
belowskip=0pt,
%% dodatkowe kolorowanie
%% - CUDA
emph={__host__,__device__,__global__},
%% - C++
morekeywords={decltype},
}
\makeatother
%% przykład używania: \begin{lstlisting}[style=color]
\lstdefinestyle{color}{ % kolory do kolorowania składni
%% formatowanie składni: kolor i styl
%% - keywords,comments,strings,directives,identifiers
keywordstyle=\color[rgb]{0.13,0.29,0.53}\bfseries,
stringstyle=\color[rgb]{0.31,0.60,0.02},
commentstyle=\color[rgb]{0.56,0.35,0.01}\itshape,
%keywordstyle=\color{blue}\bfseries,
%stringstyle=\color{brown!50!black},
emphstyle=\color[rgb]{0.10,0.50,0.50}\bfseries,
}
%% http://tex.stackexchange.com/q/57141/5886
\usepackage{accsupp} % wsparcie dostępności w PDF
%\renewcommand{\thelstnumber}{ % drukowanie numeru linii w listings
% \protect\BeginAccSupp{ActualText={}}\arabic{lstnumber}\protect\EndAccSupp{}%
%}
%% alternatywne rozwiązanie, wspierające linki do numerów wersji z hyperref
%% wymaga zdefiniowania numberstyle=<styl>\emptyaccsupp,
\newcommand{\emptyaccsupp}[1]{\BeginAccSupp{ActualText={}}#1\EndAccSupp{}}
\lstdefinestyle{lineno}{ % numerowanie linii, bez ich kopiowania
numbers=left,
numbersep=1em,
numberstyle=\color[rgb]{0.2,0.3,0.3}\tiny\emptyaccsupp,
stepnumber=1,
}
\lstdefinestyle{nonumbers}{%
numbers=none,
}
\lstdefinestyle{pl}{ % użycie polskich liter poza komentarzami z texcl=true
extendedchars=true,
inputencoding=utf8,
% każdy element składa się z {tekst}{tekst zastępczy}{długość}
% elementy nie są oddzielane przecinkami, a każde dłuższe polecenie
% generujące jeden znak musi być otoczone nawiasami klamrowymi
literate=%
{ą}{{\k{a}}}1 {Ą}{{\k{A}}}1%
{ć}{{\'{c}}}1 {Ć}{{\'{C}}}1%
{ę}{{\k{e}}}1 {Ę}{{\k{E}}}1%
{ł}{{\l}}1 {Ł}{{\L}}1%
{ń}{{\'{n}}}1 {Ń}{{\'{N}}}1%
{ó}{{\'{o}}}1 {Ó}{{\'{O}}}1%
{ś}{{\'{s}}}1 {Ś}{{\'{S}}}1%
{ż}{{\.{z}}}1 {Ż}{{\.{Z}}}1%
{ź}{{\'{z}}}1 {Ź}{{\'{Z}}}1%
}
%% przetestowany w slajdach ('beamer')
\lstdefinestyle{wide}{%
xleftmargin=-0.03\textwidth,
linewidth=1.06\textwidth,
%% automatyczne dzielenie długich linii
breaklines=true,
breakatwhitespace=true,
breakautoindent=true,
basewidth=0.5em,
}
%% użycie poniższego polecenia w lstlistings wymaga wyjścia do LaTeX-a,
%% za pomocą texcl, escapechar, escapeinside, escapebegin / escapeend
\newcommand*{\lstmark}[1][yellow!80]{\makebox[0pt]{\color{#1}\rule[-0.7ex]{90em}{2.6ex}}}
%\newcommand*{\lstmark}{\makebox[0pt]{\color{yellow}\rule[-0.1ex]{80em}{2ex}}}
%% różne
\usepackage{url} % dostaarcza m.in. polecenia \url{...}
%% long URLs spanning multiple lines
\makeatletter
\g@addto@macro\UrlSpecials{\do\!{%
\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}}%
\newline%
\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookrightarrow\space}}%
}}
\makeatother
@jnareb
Copy link
Author

jnareb commented Oct 24, 2019

Uwaga: Jeśli podczas kompilacji używając dystrybucji MikTeX pojawi się błąd o niemożliwości uruchomienia miktex-fontmf itp., to aby go rozwiązać (MikTeX próbuje wygenerować fonty bitmapowe i mu się nie udaje, zamiast korzystać z fontów OTF/Type1/TTF), należy z poziomu konsoli wykonać polecenie

updmap --admin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment