Releases: gpoore/minted
latex/v3.1.0
-
All timestamp comparisons that are part of communicating with the
latexmintedPython executable now use timestamps that have been processed
with\detokenize(#405). -
Option processing now wraps values in curly braces to prevent escaping
issues when options are passed on to other packages for further processing
(#407). -
Fixed compatibility with
dvilualatex(#406). -
Temporary files with common file extensions are now automatically detected
and processed correctly regardless ofhighlightmode(#401). Previously,
highlightmode=immediatewas needed for working with temp files that are
overwritten or deleted during compilation; the default
highlightmode=fastfirstgave an error message during the first compile
but worked correctly during subsequent compiles. -
Fixed bug when
cache=false. When caching is disabled,highlightmodeis
now set toimmediate. -
The minimum supported
latexmintedversion is now 0.2.0. The new
latexmintedsubcommandcleantempis now used instead ofcleanwhen
the cache does not require cleaning. This prevents errors when
cache=false. -
Fixed docs for
breakbeforeinrunandbreakafterinrun(#408). These had
not been properly updated afterfvextrarenamed the options.
[python] latexminted v0.1.0
- Initial release.
[latex] minted v3.0.0
-
Backward compatibility: The new
minted2package provides the features of
mintedv2.9, the final release before v3. No additional v2 releases are
planned; no changes to theminted2package are expected. -
mintedv3 is a complete rewrite from v2.9.mintedv3 includes
significant changes frommintedv2 on the LaTeX side, and also uses a new
minted-specific Python executable calledlatexmintedto 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-escapeand its attendant
security vulnerabilities.Syntax highlighting is still performed with Pygments, but the
pygmentize
executable included with Pygments is no longer used. -
Installing the
mintedpackage now also installs thelatexmintedPython
executable and all required Python libraries, including Pygments, within
your TeX distribution. These require Python >= 3.8. If the default Python
version onPATHis < 3.8, then thelatexmintedPython 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.
latexmintedis available from the
Python Package Index (PyPI). Then
install plugin packages for Pygments within the same Python installation. -
The new
latexmintedPython executable is designed to be compatible with
the security requirements for restricted shell escape, so that in the
future TeX distributions can enablelatexmintedwithout 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_commandsfrom 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
latexmintedto the end of theshell_escape_commandslist. The
location of thetexmf.cnffiles can be determined by running
kpsewhich -all texmf.cnf. -
MiKTeX: Add a line
AllowedShellCommands[] = latexmintedto 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.mintedcontaining Python traceback
information is created in some cases when errors cannot be fully reported
within LaTeX or more details may be needed. -
latex2pydatais 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
mintedis installed. -
On the LaTeX side, all syntax highlighting settings are now serialized in
Python literal format usinglatex2pydataand 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
pygmentizeaccumulates some options that are used multiple times rather
than overwriting earlier values with later values (#258, #337). -
Options are now handled with
pgfkeysandpgfopts, instead of
keyvalandkvoptions. -
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
\jobnameis 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 beerrlogwhen 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>.pygand<jobname>.out.pygfiles. -
Several package options are no longer supported and result in errors or
warnings.-
finalizecache: No longer needed. Thefrozencachepackage option now
uses the regular cache, rather than requiring a new, special cache
containing files with sequentially numbered names (#342). When using
frozencachewith-output-directory, thecachedirpackage 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-directoryin the environment variable
TEXMF_OUTPUT_DIRECTORY.
The environment variableTEXMF_OUTPUT_DIRECTORYcan be set manually in
other cases. -
kpsewhich: No longer needed.kpsewhichis now automatically
invoked as necessary by thelatexmintedPython executable in locating
files. -
draftandfinal: 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 thatdraftmode 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 optionsplaceholderandverbatimoffer alternatives when
maximum compilation speed is needed or thelatexmintedPython
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\inputof
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).immediateshould 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
fastor
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 thelatexmintedPython executable. This is not
guaranteed to be an accurate representation of the code, since some
features such asautogobblerequire Python.
-
-
bgcolornow uses the newbgcoloroption fromfvextrav1.8, rather
thansnugshade*fromframed. This resolves incompatibilities between
bgcolorandxleftmargin/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
mintedv2.x. If so, it will
then become the new packageminted2for 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
fvextraversion is less than 1.5.
v2.8
-
Under non-Windows operating systems, detect executables with
command -v
rather thanwhichto provide better cross-platform support (#345). -
Added new package option
inputlanglinenos. This extends the existing
langlinenosto cover\inputmintedas well (#361). -
Improved and updated Pygments documentation (#339).
-
Improved
\mintinlinedocumentation to address packages that redefine
\section(#368). -
Added support for
fvextraoptionsbreakafterinrunand
breakbeforeinrun(#358). Infvextraversion 1.5,breakaftergroup
andbreakbeforegroupwere renamed tobreakafterinrunand
breakbeforeinrunto avoid naming ambiguity with new options. The old
optionsbreakaftergroupandbreakbeforegroupare no longer supported. -
Added
DEPENDS.txt(#331). -
Removed unnecessary dependency on
calcpackage (#313). -
Added documentation in FAQ about copy and paste limitations (#302).
-
Added note on
textlexer to documentation (#274).
v2.7
-
Reimplemented
\mintinlineto usefvextra's argument reading and
processing macros, and to usefvextra's\Verbinternally.
\mintinlinenow 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
\newmintinlinebased on new\mintinline. -
Reimplemented
\mintto 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\mintto be indented (#218). -
Reimplemented
\newmintbased on new\mint. Commands created with
\newmintcan now use curly braces as delimiters, just like\mint
(#254). -
Settings passed to
pygmentizeas command-line options are now quoted.
This preventsescapeinsidecharacters from being interpreted as special
shell characters (#179, #262). -
Fixed bug with
autogobblethat produced incorrect dedent when using
lastlinewith the lines beyondlastlinehaving less indentation than
the selected range (#326). -
Fixed unintended line breaks after hyphens under LuaTeX (#263).
-
Added warning to documentation of
\inputmintedregarding filenames
and shell command execution (#338).
v2.6
-
autogobbleautomatically usespythonorpython3executables,
depending on availability, instead of requiringpython. A custom
executable can be specified by redefining\MintedPython(#277, #287). -
Fixed
autogobblecompatibility withfancyvrb4.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 withinmintedcommands and environments,
rather than globally. Pygments macros now always use a\PYGprefix
regardless of style, rather than a prefix of the form\PYG<style>(for
example, what was previously\PYGdefaultis now simply\PYG). -
Removed Python-based MD5 hashing for XeTeX, which was necessary before
XeTeX added\mdfivesumin 2017. -
The default for
stripnlis nowfalse, so that original code is
preserved exactly by default (#198). -
Added support for
fontencodingoption fromfvextra(#208). -
Added note to FAQ about getting
texi2pdfto work withmintedgiven
texi2pdf's assumptions about temp files (#186). -
Reimplemented
bgcoloroption to be compatible withcolorpackage.
v2.5
-
The default placement for the
listingfloat is nowtbpinstead ofh,
to parallelfigureandtableand also avoid warnings caused byh
(#165). The documentation now contains information about changing default
placement. Thefloatpackage is no longer loaded when thenewfloat
package option is used. -
Added support for
*ncharsoptions fromfvextrav1.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
beameroverlays withbeameroverlaysoption (#155). -
Comments in the Pygments LaTeX style files no longer appear as literal
text whenmintedis used in.dtxfiles (#161). -
autogobblenow works with package optionkpsewhich(#151). Under
Windows, thekpsewhichoption no longer requires PowerShell. -
Fixed a bug that prevented
finalizecachefrom working withoutputdir
(#149). -
Fixed a bug with
firstlineandlastlinethat prevented them from
working with themintedenvironment (#145). -
Added note on
breqnconflicts to FAQ (#163).