summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/lstfiracode
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/lstfiracode
Initial commit
Diffstat (limited to 'macros/latex/contrib/lstfiracode')
-rw-r--r--macros/latex/contrib/lstfiracode/README.md51
-rw-r--r--macros/latex/contrib/lstfiracode/lstfiracode.pdfbin0 -> 54036 bytes
-rw-r--r--macros/latex/contrib/lstfiracode/lstfiracode.sty220
-rw-r--r--macros/latex/contrib/lstfiracode/lstfiracode.tex332
4 files changed, 603 insertions, 0 deletions
diff --git a/macros/latex/contrib/lstfiracode/README.md b/macros/latex/contrib/lstfiracode/README.md
new file mode 100644
index 0000000000..f83f6f31ee
--- /dev/null
+++ b/macros/latex/contrib/lstfiracode/README.md
@@ -0,0 +1,51 @@
+lstfiracode
+===========
+
+The `lstfiracode` package defines `FiraCodeStyle`, to be used as
+`\lstset{style=FiraCodeStyle}` with the [`listings`](https://ctan.org/pkg/listings)
+package. This style contains almost all ligatures in Nikita Prokopov’s
+[Fira Code](https://github.com/tonsky/FiraCode) family of fonts.
+A new key `moreliterate` to `\lstset` is added, allowing additional user ligatures.
+Additional support for source code listings using Fira Code
+in the `verbatim` environment is available.
+
+This package does NOT provide the Fira Code font files.
+The newest version of the font files can be downloaded at the
+[GitHub Fira Code Releases page](https://github.com/tonsky/FiraCode/releases).
+Here is a sample preamble of a document:
+
+ \documentclass{article}
+ \usepackage{fontspec}
+ \setmonofont{FiraCode-Regular.otf}[Contextuals=Alternate]
+ \usepackage{listings}
+ \usepackage[verbatim]{lstfiracode}
+ \lstset{style=FiraCodeStyle,basicstyle=\ttfamily}
+
+Contributing
+------------
+
+This package is maintained at https://github.com/RuixiZhang42/lstfiracode
+
+Issues and pull requests are welcome.
+
+Copyright and Licence
+---------------------
+
+ Copyright (C) 2018 by Ruixi Zhang <ruixizhang42@gmail.com>
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3c
+ of this license or (at your option) any later version.
+ The latest version of this license is in
+ https://www.latex-project.org/lppl.txt
+ and version 1.3c or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Ruixi Zhang.
+
+ This work consists of the files lstfiracode.sty,
+ lstfiracode.tex,
+ README.md (this file)
+ and the derived file lstfiracode.pdf. \ No newline at end of file
diff --git a/macros/latex/contrib/lstfiracode/lstfiracode.pdf b/macros/latex/contrib/lstfiracode/lstfiracode.pdf
new file mode 100644
index 0000000000..3e6cc3ab25
--- /dev/null
+++ b/macros/latex/contrib/lstfiracode/lstfiracode.pdf
Binary files differ
diff --git a/macros/latex/contrib/lstfiracode/lstfiracode.sty b/macros/latex/contrib/lstfiracode/lstfiracode.sty
new file mode 100644
index 0000000000..6901796861
--- /dev/null
+++ b/macros/latex/contrib/lstfiracode/lstfiracode.sty
@@ -0,0 +1,220 @@
+%
+% Copyright (C) 2018 by Ruixi Zhang <ruixizhang42@gmail.com>
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Ruixi Zhang.
+%
+% This work consists of the files lstfiracode.sty,
+% lstfiracode.tex,
+% README.md
+% and the derived file lstfiracode.pdf.
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{lstfiracode}[%
+ 2018/12/24 v0.1c Use Fira Code font for listings]
+
+\RequirePackage{kvoptions}
+\RequirePackage{listings}
+
+\DeclareBoolOption[false]{verbatim}
+\DeclareDefaultOption{%
+ \PackageError{\@currname}{%
+ Unknown option `\CurrentOption'%
+ }{%
+ Available package options are:\MessageBreak
+ \space\space`verbatim=true' and\MessageBreak
+ \space\space`verbatim=false'%
+ }%
+}
+\ProcessKeyvalOptions*
+
+\let\lstfiracode@verbatim@nolig@list\verbatim@nolig@list
+\newcommand*\ActivateVerbatimLigatures{%
+ \def\verbatim@nolig@list{\do\`\do\,\do\'}%
+}
+\newcommand*\DeactivateVerbatimLigatures{%
+ \def\verbatim@nolig@list{%
+ \do\`\do\<\do\>\do\,\do\'\do\-%
+ \do\w\do\*\do\/\do\:\do\=\do\!\do\~\do\[%
+ \do\#\do\(\do\?\do\_\do\.\do\;\do\&\do\|%
+ \do\+\do\$\do\@\do\%\do\]% Do "7B and "7D, impossible?
+ }%
+}
+\newcommand*\RestoreVerbatimBehavior{%
+ \let\verbatim@nolig@list\lstfiracode@verbatim@nolig@list
+}
+
+\iflstfiracode@verbatim
+ \ActivateVerbatimLigatures
+\fi
+
+\def\lstfiracode@lst@Literatekey#1\@nil@{%
+ \let\lst@ifxliterate\lst@if
+ \expandafter\def\expandafter\lst@literate\expandafter{\lst@literate#1}%
+}
+\lst@Key{moreliterate}{}{%
+ \@ifstar{\lst@true \lstfiracode@lst@Literatekey}
+ {\lst@false\lstfiracode@lst@Literatekey}#1\@nil@
+}
+
+\lstdefinestyle{FiraCodeStyle}{
+ basewidth=0.6em,
+ literate=
+ {www}{{www}}3
+ {**}{{**}}2
+ {***}{{***}}3
+% {**/}{{**/}}3 % Removed in Fira Code v1.206
+ {*>}{{*>}}2
+% {*/}{{*/}}2 % Interferes with comment highlighting
+% {\\\\}{{\textbackslash\textbackslash}}2 % Removed in Fira Code v1.206
+% {\\\\\\}{{\textbackslash\textbackslash\textbackslash}}3 % Removed in Fira Code v1.206
+% {\{-}{{\{-}}2 % Removed in Fira Code v1.206
+% {[]}{{[]}}2 % Removed in Fira Code v1.206
+ {::}{{::}}2
+ {:::}{{:::}}3
+ {:=}{{:=}}2
+ {!!}{{!!}}2
+% {!!!}{{!!!}}3 % Removed in Fira Code v1.206
+ {!=}{{!=}}2
+ {!==}{{!==}}3
+% {-\}}{{-\}}}2 % Removed in Fira Code v1.206
+ {--}{{--}}2
+ {---}{{---}}3
+ {-->}{{-->}}3
+ {->}{{->}}2
+ {->>}{{->>}}3
+ {-<}{{-<}}2
+ {-<<}{{-<<}}3
+ {-~}{{-\textasciitilde}}2
+ {\#\{}{{\#\{}}2
+ {\#[}{{\#[}}2
+ {\#\#}{{\#\#}}2
+ {\#\#\#}{{\#\#\#}}3
+ {\#\#\#\#}{{\#\#\#\#}}4
+ {\#(}{{\#(}}2
+ {\#?}{{\#?}}2
+ {\#_}{{\#\_}}2
+ {\#_(}{{\#\_(}}3
+ {.-}{{.-}}2
+ {.=}{{.=}}2
+ {..}{{..}}2
+ {..<}{{..<}}3
+ {...}{{...}}3
+ {?=}{{?=}}2
+ {??}{{??}}2
+% {???}{{???}}3 % Removed in Fira Code v1.206
+% {;;}{{;;}}2 % Interferes with comment highlighting
+% {;;;}{{;;;}}3 % Removed in Fira Code v1.206
+% {/*}{{/*}}2 % Interferes with comment highlighting
+% {/**}{{/**}}3 % Removed in Fira Code v1.206
+ {/=}{{/=}}2
+ {/==}{{/==}}3
+ {/>}{{/>}}2
+% {//}{{//}}2 % Interferes with comment highlighting
+% {///}{{///}}3 % Interferes with comment highlighting
+ {\&\&}{{\&\&}}2
+% {\&\&\&}{{\&\&\&}}3 % Removed in Fira Code v1.206
+ {||}{{||}}2
+% {|||}{{|||}}3 % Removed in Fira Code v1.206
+ {||=}{{||=}}3
+ {|=}{{|=}}2
+ {|>}{{|>}}2
+ {^=}{{\textasciicircum=}}2
+ {$>}{{\$>}}2
+ {++}{{++}}2
+ {+>}{{+>}}2
+ {=:=}{{=:=}}3
+ {==}{{==}}2
+ {===}{{===}}3
+ {==>}{{==>}}3
+ {=>}{{=>}}2
+ {=>>}{{=>>}}3
+% {=<}{{=<}}2 % Removed in Fira Code v1.206
+ {=<<}{{=<<}}3
+% {=~}{{=\textasciitilde}}2 % Removed in Fira Code v1.206
+ {=/=}{{=/=}}3
+ {>-}{{>-}}2
+ {>=}{{>=}}2
+ {>=>}{{>=>}}3
+ {>>}{{>>}}2
+ {>>-}{{>>-}}3
+ {>>=}{{>>=}}3
+ {>>>}{{>>>}}3
+ {<*}{{<*}}2
+ {<*>}{{<*>}}3
+ {<|}{{<|}}2
+ {<|>}{{<|>}}3
+ {<$}{{<\$}}2
+ {<$>}{{<\$>}}3
+ {<!--}{{<!--}}4
+ {<-}{{<-}}2
+ {<--}{{<--}}3
+ {<->}{{<->}}3
+ {<+}{{<+}}2
+ {<+>}{{<+>}}3
+ {<=}{{<=}}2
+ {<==}{{<==}}3
+ {<=>}{{<=>}}3
+ {<=<}{{<=<}}3
+ {<>}{{<>}}2
+ {<<}{{<<}}2
+ {<<-}{{<<-}}3
+ {<<=}{{<<=}}3
+ {<<<}{{<<<}}3
+ {<~}{{<\textasciitilde}}2
+ {<~~}{{<\textasciitilde\textasciitilde}}3
+ {</}{{</}}2
+ {~@}{{\textasciitilde @}}2
+ {~-}{{\textasciitilde-}}2
+ {~=}{{\textasciitilde=}}2
+ {~>}{{\textasciitilde>}}2
+ {~~}{{\textasciitilde\textasciitilde}}2
+ {~~>}{{\textasciitilde\textasciitilde>}}3
+% {~~~}{{\textasciitilde\textasciitilde\textasciitilde}}3 % Removed in Fira Code v1.206
+ {\%\%}{{\%\%}}2
+% {\%\%\%}{{\%\%\%}}3 % Removed in Fira Code v1.206
+ {<==>}{{<==>}}4
+ {<||}{{<||}}3
+ {<|||}{{<|||}}4
+ {|||>}{{|||>}}4
+ {</>}{{</>}}3
+ {<~>}{{<\textasciitilde>}}3
+ {<-<}{{<-<}}3
+ {>->}{{>->}}3
+ {=!=}{{=!=}}3
+ {+++}{{+++}}3
+ {||>}{{||>}}3
+ {_|_}{{\_|\_}}3
+ {..=}{{..=}}3
+ {!!.}{{!!.}}3
+ {::=}{{::=}}3
+ {<:}{{<:}}2
+ {>:}{{>:}}2
+ {|-}{{|-}}2
+ {|]}{{|]}}2
+ {|\}}{{|\}}}2
+ {__}{{\_\_}}2
+ {?.}{{?.}}2
+ {?:}{{?:}}2
+ {.?}{{.?}}2
+ {\#=}{{\#=}}2
+ {\#!}{{\#!}}2
+ {\#:}{{\#:}}2
+ {-|}{{-|}}2
+ {:<}{{:<}}2
+ {:>}{{:>}}2
+ {]\#}{{]\#}}2
+ {[|}{{[|}}2
+ {\{|}{{\{|}}2
+}
+
+\endinput
diff --git a/macros/latex/contrib/lstfiracode/lstfiracode.tex b/macros/latex/contrib/lstfiracode/lstfiracode.tex
new file mode 100644
index 0000000000..e40f1583c7
--- /dev/null
+++ b/macros/latex/contrib/lstfiracode/lstfiracode.tex
@@ -0,0 +1,332 @@
+% !TeX program = XeLaTeX
+% !TeX encoding = UTF-8 Unicode
+%
+\documentclass[11pt]{article}
+\frenchspacing
+\setlength\parskip{1.5pt plus 1pt minus 0.5pt}
+\usepackage{fontspec}
+\setmainfont{TeX Gyre Pagella}
+\linespread{1.05}\selectfont
+\setsansfont{TeX Gyre Heros}[
+ Scale=MatchLowercase
+]
+\setmonofont{Fira Code}[
+ Scale=MatchLowercase,
+ Contextuals=Alternate
+]
+\newfontfamily\LMMono{Latin Modern Mono}[
+ Scale=MatchLowercase
+]
+\usepackage{microtype}
+\usepackage{xcolor}
+
+\usepackage{listings}
+\usepackage[verbatim]{lstfiracode}
+\lstset{
+ language=C++,
+ style=FiraCodeStyle,
+ basicstyle=\ttfamily,
+ commentstyle=\color{orange}
+}
+\makeatletter
+\lstnewenvironment{LaTeXlisting}{%
+ \RestoreVerbatimBehavior
+ \lst@CCPutMacro
+ \lst@ProcessOther {"2D}{\lst@ttfamily{-{}}{-{}}}
+ \@empty\z@\@empty
+ \lstset{
+ style={},
+ literate={},
+ language=[LaTeX]TeX,
+ basicstyle=\small\LMMono,
+ basewidth=0.525em,
+ commentstyle=\itshape
+ }%
+}{}
+\makeatother
+
+\usepackage{booktabs}
+\usepackage{hyperref}
+\hypersetup{
+ colorlinks=true
+}
+\usepackage{geometry}
+\geometry{
+ width=5.7in
+}
+
+\newcommand*\myemail{ruixizhang42@gmail.com}
+\newcommand*\dash{}
+\DeclareRobustCommand\dash{%
+ \unskip\nobreak\thinspace\textemdash\thinspace\ignorespaces
+}
+\newcommand\versionhistory[3]{%
+ % #1: version number, #2: date, #3: description
+ \item[#1]#3\hfill#2%
+}
+\title{The \texttt{lstfiracode} package}
+\author{Ruixi~Zhang\thanks{\href{mailto:\myemail}{\nolinkurl{\myemail}}.}}
+\date{2018/12/24\enskip v0.1c}
+
+\begin{document}
+
+\maketitle
+
+\microtypesetup{protrusion=false}
+\tableofcontents
+\microtypesetup{protrusion=true}
+
+\section{Introduction}
+
+The Fira Code\footnote{See \url{https://github.com/tonsky/FiraCode}.} family
+of fonts, created by Nikita Prokopov, is a monospaced typeface with
+programming ligatures.
+It is attempting for many people, me included, to use Fira Code for source
+code listings.
+However, the \verb|lstlisting| environment from the \verb|listings| package
+does not support ligatures naively. To produce the desired output, one must
+specify all necessary ligatures via the \verb|literate| key
+of \verb|\lstset|, which can be tedious.
+
+The \verb|lstfiracode| package defines a ready-to-use \verb|listings| style,
+\verb|FiraCodeStyle|, which pre-specifies 125 ligatures
+(note that Fira Code v1.206 has 130 ligatures in total).
+You may \emph{append} the remaining 5 ligatures to the \verb|FiraCodeStyle|
+literate list via a new key \verb|moreliterate|, without unintentionally
+erasing all existing ligatures via \verb|literate|.
+
+The \verb|lstfiracode| package also provides a package option,
+\verb|verbatim|, along with three switches
+\verb|\ActivateVerbatimLigatures|, \verb|\DeactivateVerbatimLigatures|
+and \verb|\RestoreVerbatimBehavior|
+to support source code listings using Fira Code
+in the \verb|verbatim| environment.
+
+This package does \emph{not} provide the Fira Code font files.
+The newest version of the fonts can be downloaded at
+\url{https://github.com/tonsky/FiraCode/releases}.
+
+\section{Usage}
+
+To access \verb|FiraCodeStyle|, simply load \verb|lstfiracode| \emph{after}
+\verb|listings|. Here is how you may setup your document:
+\begin{LaTeXlisting}
+ \documentclass{article}
+ \usepackage{fontspec}
+ \setmonofont{FiraCode-Regular.otf}[
+ BoldFont=FiraCode-Bold.otf,
+ Contextuals=Alternate % Activate the calt feature
+ ]
+ \usepackage{xcolor}
+ \usepackage{listings}
+ \usepackage[verbatim]{lstfiracode} % Activate ligatures in verbatim
+ \lstset{
+ language=C++,
+ style=FiraCodeStyle, % Use predefined FiraCodeStyle
+ basicstyle=\ttfamily, % Use \ttfamily for source code listings
+ commentstyle=\color{orange}
+ }
+ \begin{document}
+ \begin{verbatim}
+ A<-www>>=B
+ \end{verbatim}
+ \begin{lstlisting}
+ /* A simple C++ program */
+ int main() {
+ cout << "Hello World"; // prints Hello World
+ return 0;
+ }
+ \end{lstlisting}
+ \end{document}
+\end{LaTeXlisting}
+which produces the following \verb|verbatim| (observe the {\LMMono<-},
+the {\LMMono www} and the {\LMMono>>=} ligatures):
+\begin{verbatim}
+ A<-www>>=B
+\end{verbatim}
+and the following \verb|lstlisting| (observe the {\LMMono++}
+and the {\LMMono<<} ligatures):
+\begin{lstlisting}
+ /* A simple C++ program */
+ int main() {
+ cout << "Hello World"; // prints Hello World
+ return 0;
+ }
+\end{lstlisting}
+
+\section{Package features}
+
+\subsection{Package option and user commands}
+
+The \verb|lstfiracode| package provides one package option and three user
+commands, described below.
+
+You may load the \verb|lstfiracode| package with the option \verb|verbatim|,
+or equivalently \verb|verbatim=true|. This activates all Fira Code ligatures
+in the \verb|verbatim| environment.
+\begin{LaTeXlisting}
+ % Activate Fira Code ligatures in verbatim
+ \usepackage[verbatim]{lstfiracode}
+ % is the same as
+ \usepackage[verbatim=true]{lstfiracode}
+\end{LaTeXlisting}
+Loading the package without any option (the default), or equivalently with
+the option \verb|verbatim=false|, \emph{does not alter} how the
+\verb|verbatim| environment is handled.
+\begin{LaTeXlisting}
+ % Leave verbatim unaltered
+ \usepackage{lstfiracode}
+ % is the same as
+ \usepackage[verbatim=false]{lstfiracode}
+\end{LaTeXlisting}
+
+You may change your mind in the middle of your document, so there are
+three switches for such purpose:
+\begin{description}
+\item[\texttt{\textbackslash ActivateVerbatimLigatures}]
+Activate all Fira Code ligatures in \verb|verbatim|. This is executed
+automatically with the package option \verb|verbatim=true|.
+\item[\texttt{\textbackslash DeactivateVerbatimLigatures}]
+Suppress \emph{almost all} Fira Code ligatures in \verb|verbatim|.
+Currently, it cannot break the {\LMMono\#\{} and the {\LMMono|\}} ligatures.
+You should use Fira Mono if you wish to avoid ligatures altogether.
+\item[\texttt{\textbackslash RestoreVerbatimBehavior}]
+Restore how \verb|verbatim| is originally handled by \LaTeX.
+\end{description}
+These switches can overwrite each other and they act \emph{locally}.
+For instance, the following three \verb|verbatim| environments
+\begin{LaTeXlisting}
+ \begingroup
+ \ActivateVerbatimLigatures
+ \begin{verbatim}
+ A<-www>>=B % Fira Code ligatures activated
+ \end{verbatim}
+ \DeactivateVerbatimLigatures
+ \begin{verbatim}
+ A<-www>>=B % Fira Code ligatures deactivated
+ \end{verbatim}
+ \RestoreVerbatimBehavior
+ \begin{verbatim}
+ A<-www>>=B % Hmm...
+ \end{verbatim}
+ \endgroup
+\end{LaTeXlisting}
+produce, respectively,
+\begingroup
+\ActivateVerbatimLigatures
+\begin{verbatim}
+ A<-www>>=B % Fira Code ligatures activated
+\end{verbatim}
+\DeactivateVerbatimLigatures
+\begin{verbatim}
+ A<-www>>=B % Fira Code ligatures deactivated
+\end{verbatim}
+\RestoreVerbatimBehavior
+\begin{verbatim}
+ A<-www>>=B % Hmm...
+\end{verbatim}
+\endgroup
+
+\subsection{The \texttt{FiraCodeStyle} listings style}
+
+The ligatures of Fira Code are treated as literate programming by the
+\verb|lstfiracode| package. These ligatures are specified via the
+\verb|literate| key in defining \verb|FiraCodeStyle|.
+The definition of \verb|FiraCodeStyle| looks like this:
+\begin{LaTeXlisting}
+ \lstdefinestyle{FiraCodeStyle}{
+ basewidth=0.6em,
+ literate=
+ {www}{{www}}3
+ ... % All other necessary ligatures in Fira Code
+ }
+\end{LaTeXlisting}
+
+Thus, \verb|FiraCodeStyle| specifies \verb|basewidth| explicitly and
+lists \emph{almost all} literate replacements.
+\emph{It does not contain any font changing commands because users may load
+Fira Code according to their preferences.}
+In the case that \verb|\ttfamily| corresponds to Fira Code,
+be sure to specify \verb|basicstyle=\ttfamily| \emph{in addition to}
+\verb|style=FiraCodeStyle|, i.e.,
+\begin{LaTeXlisting}
+ \usepackage{listings}
+ \usepackage{lstfiracode}
+ % Assume that you have set Fira Code via \setmonofont
+ % Then remember to also specify basicstyle
+ \lstset{style=FiraCodeStyle,basicstyle=\ttfamily}
+\end{LaTeXlisting}
+
+\subsection{The missing ligatures and the new key \texttt{moreliterate}}
+
+You may notice that some ligatures in Fira Code are still missing. Well,
+there are 5 such ligatures\dash strictly speaking, they \emph{are} listed
+as literate replacements in the definition of \verb|FiraCodeStyle|,
+but are simply commented out:
+\begin{center}
+\LMMono
+\begin{tabular}{c c c c c}
+\toprule
+\multicolumn{5}{c}{\rmfamily The ``missing'' ligatures} \\
+\midrule
+/* & */ & // & /// & ;; \\
+\bottomrule
+\end{tabular}
+\end{center}
+These particular combinations of characters usually indicate comment mode.
+If they were to be implemented as literate replacements, they would break
+how the \verb|listings| package handles comment highlighting.
+
+Nevertheless, you can still \emph{append} these ligatures to the
+\verb|FiraCodeStyle| literate list.
+Say, you want to activate the {\LMMono;;} ligature in your
+{\LMMono C++} code. \emph{But you cannot simply write}
+{\LMMono\textbackslash lstset\{style=FiraCodeStyle,%
+literate=\{;;\}\{\{;;\}\}2\}}
+\emph{because this will erase all predefined ligatures, leaving only the}
+{\LMMono;;} \emph{ligature}.
+Instead, you should use the new key\dash
+\verb|moreliterate|\dash to add more literate replacements:
+\begin{LaTeXlisting}
+ % Let's add more ligatures
+ \lstset{
+ language=C++,
+ style=FiraCodeStyle,
+ basicstyle=\ttfamily,
+ moreliterate=
+ {;;}{{;;}}2
+ {///}{{///}}3
+ }
+\end{LaTeXlisting}
+
+\section{Troubleshooting}
+
+The \verb|lstfiracode| package is maintained at GitHub. Please make each
+bug report with a \emph{minimal example} at
+\url{https://github.com/RuixiZhang42/lstfiracode/issues}.
+Pull requests are welcome.
+
+\section*{Version history}
+
+\begin{description}
+\versionhistory{v0.1c}{2018/12/24}{%
+ Removed \texttt{Ligatures=Common}
+ from \texttt{README.md} and \texttt{lstfiracode.tex}
+ (see \href{https://github.com/RuixiZhang42/lstfiracode/issues/1}{%
+ \#1}).
+ Re-implemented
+ \texttt{\textbackslash DeactivateVerbatimLigatures}.%
+}
+\versionhistory{v0.1b}{2018/12/20}{%
+ Updated \texttt{FiraCodeStyle} literate list.
+ Added \texttt{\textbackslash RestoreVerbatimBehavior}.
+ Re-implemented
+ \texttt{\textbackslash Activate}/%
+ \texttt{\textbackslash DeactivateVerbatimLigatures}.%
+}
+\versionhistory{v0.1a}{2018/12/16}{%
+ Initial release.%
+}
+\end{description}
+
+\end{document} \ No newline at end of file