Releases: gpoore/minted
[python] latexminted v0.1.0
- Initial release.
[latex] minted v3.0.0
-
Backward compatibility: The new
minted2
package provides the features of
minted
v2.9, the final release before v3. No additional v2 releases are
planned; no changes to theminted2
package are expected. -
minted
v3 is a complete rewrite from v2.9.minted
v3 includes
significant changes fromminted
v2 on the LaTeX side, and also uses a new
minted
-specific Python executable calledlatexminted
to perform syntax
highlighting. This executable is specifically designed to meet the
security requirements for restricted shell escape programs. Once it has
passed a security review and is accepted by TeX distributions, it will be
possible to highlight code without-shell-escape
and its attendant
security vulnerabilities.Syntax highlighting is still performed with Pygments, but the
pygmentize
executable included with Pygments is no longer used. -
Installing the
minted
package now also installs thelatexminted
Python
executable and all required Python libraries, including Pygments, within
your TeX distribution. These require Python >= 3.8. If the default Python
version onPATH
is < 3.8, then thelatexminted
Python executable will
attempt to locate a more recent version and run itself with that version in
a subprocess.Manually installing Python libraries is only necessary if you want to use
plugin packages for Pygments. In that case, install thelatexminted
Python package in a Python installation. This automatically installs
latex2pydata
,latexrestricted
, and Pygments as dependencies.
latexminted
is available from the
Python Package Index (PyPI). Then
install plugin packages for Pygments within the same Python installation. -
The new
latexminted
Python executable is designed to be compatible with
the security requirements for restricted shell escape, so that in the
future TeX distributions can enablelatexminted
without requiring
-shell-escape
. It is possible to benefit from these enhanced security
capabilities immediately and avoid the need for-shell-escape
.-
TeX Live: Copy the variable
shell_escape_commands
from the
distributiontexmf.cnf
(typically something like
<tex_distro>/texmf-dist/web2c/texmf.cnf
) into the usertexmf.cnf
(typically something like<tex_distro>/texmf.cnf
), and then add
latexminted
to the end of theshell_escape_commands
list. The
location of thetexmf.cnf
files can be determined by running
kpsewhich -all texmf.cnf
. -
MiKTeX: Add a line
AllowedShellCommands[] = latexminted
to the
existing list of allowed commands inmiktex.ini
. You may want to
modify the user-scoped configuration instead of the system-wide
configuration. See the
MiKTeX documentation
for more details, particularlyinitexmf --edit-config-file <file>
.
-
-
Errors and warnings that occur within Python are now reported as
minted
package errors and warnings within LaTeX in nearly all cases. It should no
longer be necessary to look through the compile log for Python errors and
warnings. A temp file*.errlog.minted
containing Python traceback
information is created in some cases when errors cannot be fully reported
within LaTeX or more details may be needed. -
latex2pydata
is now required
for passing data from LaTeX to Python and then processing it within Python.
This consists of a LaTeX package, available from
CTAN, and a Python package, available
from PyPI. The LaTeX package can
typically be installed with your TeX distribution's package manager. The
Python package is automatically installed within your TeX distribution when
minted
is installed. -
On the LaTeX side, all syntax highlighting settings are now serialized in
Python literal format usinglatex2pydata
and then saved to a temp file,
which is loaded on the Python side. Settings are no longer passed to the
Python side using command-line arguments. Temp files for passing data to
Python are now named using MD5 hashes, instead of using a sanitized version
of document\jobname
. This eliminates an entire class of security issues
and bugs related to escaping and quoting command-line arguments (#180,
#276, #298, #322, #338, #354). It also eliminates bugs related to
processing settings as a sequence of command-line options, since
pygmentize
accumulates some options that are used multiple times rather
than overwriting earlier values with later values (#258, #337). -
Options are now handled with
pgfkeys
andpgfopts
, instead of
keyval
andkvoptions
. -
Temporary files are no longer created unless the cache needs to be updated
(or caching is disabled). All MD5 hashing of code now takes place in
memory instead of using one temp file per command/environment.All temporary files are cleaned up automatically when compiling completes
without interruption. All temporary files now have names of the form
_<hash>.<role>.minted
.<hash>
is an MD5 hash of\jobname
(if
\jobname
is wrapped in double or single quotation marks, these are
stripped before the MD5 is computed).<role>
is the role of the temp
file:data
(data passed to Python),config
(detected system
configuration),style
(highlighting style definition),highlight
(highlighted code), ormessage
(message passed back to LaTeX by Python
executable).<role>
can also beerrlog
when the Python executable
encounters an unexpected error that it is not designed to report to the
LaTeX side; this is not automatically cleaned up. There are no more
<jobname>.pyg
and<jobname>.out.pyg
files. -
Several package options are no longer supported and result in errors or
warnings.-
finalizecache
: No longer needed. Thefrozencache
package option now
uses the regular cache, rather than requiring a new, special cache
containing files with sequentially numbered names (#342). When using
frozencache
with-output-directory
, thecachedir
package option
should be used to specify a full relative path to the cache (for
example,cachedir=./<output_directory>/_minted
). -
outputdir
: No longer needed (#268). TeX Live 2024+ saves a custom
output directory from-output-directory
in the environment variable
TEXMF_OUTPUT_DIRECTORY
.
The environment variableTEXMF_OUTPUT_DIRECTORY
can be set manually in
other cases. -
kpsewhich
: No longer needed.kpsewhich
is now automatically
invoked as necessary by thelatexminted
Python executable in locating
files. -
draft
andfinal
: These no longer have any effect and result in a
warning. They will soon be removed altogether. Improvements in caching
have largely eliminated the overhead thatdraft
mode was designed to
avoid, while new features that are implemented purely within Python have
made it impossible in some cases to typeset code using only LaTeX. The
new package optionsplaceholder
andverbatim
offer alternatives when
maximum compilation speed is needed or thelatexminted
Python
executable is unavailable.
-
-
New package options:
-
debug
: Keep temp files from highlighting to aid in debugging. Also
write current file name and line number to log before\input
of
highlighted code (#348). -
highlightmode
: Determines when code is highlighted. The default is
fastfirst
. If a cache for the document exists, then code is
highlighted immediately. If a cache for the document does not exist,
then typeset a placeholder instead of code and highlight all code at the
end of the document. This will require a second compile before code is
typeset, but because all code is highlighted at once, there is less
overhead and the total time required can be significantly less for
documents that include many code snippets. The alternatives arefast
(always highlight at end of document, requiring a second compile) and
immediate
(always highlight immediately, so no second compile is
needed).immediate
should be used when typesetting code in external
temp files that are overwritten during compilation.When code is highlighted at the end of the document with
fast
or
fastfirst
, any error and warning messages will refer to a location at
the end of the document rather than the original code location, since
highlighting occurred at the end of the document. In this case, messages
are supplemented with original LaTeX source file names and line numbers
to aid in debugging. -
placeholder
: Instead of typesetting code, insert a placeholder. This
is enabled automatically when working with PGF/TikZ externalization. -
verbatim
: Instead of highlighting code, attempt to typeset it verbatim
without using thelatexminted
Python executable. This is not
guaranteed to be an accurate representation of the code, since some
features such asautogobble
require Python.
-
-
bgcolor
now uses the newbgcolor
option fromfvextra
v1.8, rather
thansnugshade*
fromframed
. This resolves incompatibilities between
bgcolor
andxleftmargin
/xrightmargin
(#214), eliminates unneeded
whitespace before/after the background (#220), prevents text from
overflowing the background (#278), and provides uniform ...
v2.9
-
This is expected to be the last release of
minted
v2.x. If so, it will
then become the new packageminted2
for backward compatibility. -
Added new option
ignorelexererrors
. When lexer errors are shown in
highlighted output (default), they are typically displayed as red boxes
that surround the relevant text. When lexer errors are ignored, the
literal text that caused lexer errors is shown but there is no indication
that it caused errors (#374). -
There is now a warning if
fvextra
version is less than 1.5.
v2.8
-
Under non-Windows operating systems, detect executables with
command -v
rather thanwhich
to provide better cross-platform support (#345). -
Added new package option
inputlanglinenos
. This extends the existing
langlinenos
to cover\inputminted
as well (#361). -
Improved and updated Pygments documentation (#339).
-
Improved
\mintinline
documentation to address packages that redefine
\section
(#368). -
Added support for
fvextra
optionsbreakafterinrun
and
breakbeforeinrun
(#358). Infvextra
version 1.5,breakaftergroup
andbreakbeforegroup
were renamed tobreakafterinrun
and
breakbeforeinrun
to avoid naming ambiguity with new options. The old
optionsbreakaftergroup
andbreakbeforegroup
are no longer supported. -
Added
DEPENDS.txt
(#331). -
Removed unnecessary dependency on
calc
package (#313). -
Added documentation in FAQ about copy and paste limitations (#302).
-
Added note on
text
lexer to documentation (#274).
v2.7
-
Reimplemented
\mintinline
to usefvextra
's argument reading and
processing macros, and to usefvextra
's\Verb
internally.
\mintinline
now works with all line breaking options supported by
fvextra
's\Verb
, includingbreakanywhere
(#329, #340). It now
gives better results when used inside other commands, since it uses
fvextra
's retokenization macros. It is now compatible withhyperref
for PDF strings such as bookmarks. -
Reimplemented
\newmintinline
based on new\mintinline
. -
Reimplemented
\mint
to usefvextra
's argument reading and processing
macros. It now gives better results when used inside other commands,
since it usesfvextra
's retokenization macros. Fixed a bug that caused
a continued paragraph after\mint
to be indented (#218). -
Reimplemented
\newmint
based on new\mint
. Commands created with
\newmint
can now use curly braces as delimiters, just like\mint
(#254). -
Settings passed to
pygmentize
as command-line options are now quoted.
This preventsescapeinside
characters from being interpreted as special
shell characters (#179, #262). -
Fixed bug with
autogobble
that produced incorrect dedent when using
lastline
with the lines beyondlastline
having less indentation than
the selected range (#326). -
Fixed unintended line breaks after hyphens under LuaTeX (#263).
-
Added warning to documentation of
\inputminted
regarding filenames
and shell command execution (#338).
v2.6
-
autogobble
automatically usespython
orpython3
executables,
depending on availability, instead of requiringpython
. A custom
executable can be specified by redefining\MintedPython
(#277, #287). -
Fixed
autogobble
compatibility withfancyvrb
4.0+ (#315, #316). -
Pygments style names may now contain arbitrary non-whitespace characters.
Previously, style names containing digits and some punctuation characters
were incompatible (#210, #294, #299, #317). Pygments macros are now only
defined just before use locally withinminted
commands and environments,
rather than globally. Pygments macros now always use a\PYG
prefix
regardless of style, rather than a prefix of the form\PYG<style>
(for
example, what was previously\PYGdefault
is now simply\PYG
). -
Removed Python-based MD5 hashing for XeTeX, which was necessary before
XeTeX added\mdfivesum
in 2017. -
The default for
stripnl
is nowfalse
, so that original code is
preserved exactly by default (#198). -
Added support for
fontencoding
option fromfvextra
(#208). -
Added note to FAQ about getting
texi2pdf
to work withminted
given
texi2pdf
's assumptions about temp files (#186). -
Reimplemented
bgcolor
option to be compatible withcolor
package.
v2.5
-
The default placement for the
listing
float is nowtbp
instead ofh
,
to parallelfigure
andtable
and also avoid warnings caused byh
(#165). The documentation now contains information about changing default
placement. Thefloat
package is no longer loaded when thenewfloat
package option is used. -
Added support for
*nchars
options fromfvextra
v1.3 that allow setting
breaklines
-related indentation in terms of a number of characters, rather
than as a fixed dimension. -
Fixed incompatibility with
babel magyar
(#158). -
Added support for
beamer
overlays withbeameroverlays
option (#155). -
Comments in the Pygments LaTeX style files no longer appear as literal
text whenminted
is used in.dtx
files (#161). -
autogobble
now works with package optionkpsewhich
(#151). Under
Windows, thekpsewhich
option no longer requires PowerShell. -
Fixed a bug that prevented
finalizecache
from working withoutputdir
(#149). -
Fixed a bug with
firstline
andlastline
that prevented them from
working with theminted
environment (#145). -
Added note on
breqn
conflicts to FAQ (#163).
v2.4.1
v2.4
v2.3
- The
fvextra
package is now required.fvextra
extends and patches
fancyvrb
, and includes improved versions offancyvrb
extensions that
were formerly inminted
. - As part of
fvextra
, theupquote
package is always loaded.fvextra
brings the new optioncurlyquotes
, which allows curly single quotation
marks instead of the literal backtick and typewriter single quotation mark
produced byupquote
. This allows the defaultupquote
behavior to be
disabled when desired. - Thanks to
fvextra
, the optionsbreakbefore
,breakafter
, and
breakanywhere
are now compatible with non-ASCII characters under
pdfTeX (#123). - Thanks to
fvextra
,obeytabs
no longer causes lines in multi-line
comments or strings to vanish (#88), and is now compatible with
breaklines
(#99).obeytabs
will now always give correct results with
tabs used for indentation. However, tab stops are not guaranteed to be
correct for tabs in the midst of text. fvextra
brings the new optionsspace
,spacecolor
,tab
, and
tabcolor
that allow these characters and their colors to be redefined
(#98). The tab may now be redefined to a flexible-width character such
as\rightarrowfill
. The visible tab will now always be black by default,
instead of changing colors depending on whether it is part of indentation
for a multiline string or comment.fvextra
brings the new optionshighlightcolor
andhighlightlines
,
which allow single lines or ranges of lines to be highlighted based on line
number (#124).fvextra
brings the new optionsnumberfirstline
,stepnumberfromfirst
,
andstepnumberoffsetvalues
that provide better control over line
numbering whenstepnumber
is not 1.- Fixed a bug from v2.2.2 that prevented
upquote
from working.