Last active
January 29, 2020 17:13
-
-
Save jnareb/83e1c15889e1818b4834145f1955be86 to your computer and use it in GitHub Desktop.
Konfiguracja pakietu listings: kolorowanie składni, polskie literki, numerowanie linii, itp.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%%% 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 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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