Releases: cpitclaudel/alectryon
Alectryon 1.4.0
Version 1.4.0
-
JSON recordings (produced by
--backend json) can now be used as inputs to generate webpages or highlighted snippets. [c69b08e] -
Alectryon's cache format has changed to support documents with multiple languages. Caches created with previous versions of Alectryon can still be read and do not need to be regenerated. [d376077]
-
Alectryon can now compile Coq documents without running proofs nor recording Coq's output. This is useful for quick experimentation. [GH-52] [6f4ae20]
-
Alectryon can now compile Coq documents with
coqcinstead ofSerAPI. The results do not include goals or messages. This is useful when trying out a version of Coq that SerAPI does not support yet. [GH-60] [735e72b] -
Per-document Coq syntax-highlighting rules added to the docinfo section at the beginning of each document are now prefixed with
alectryon/pygments/coq/instead ofalectryon/pygments/(the legacy prefix is still supported). [3a9ffe6] -
A new extension of the marker-placement mini-language allows authors to attach properties to parts of a proof; for example,
.. coq:: .s(Extraction).msg[lang]=haskellhighlights all messages produced byExtractioncommands using the Haskell lexer instead of the usual Coq lexer. [409fa6c] -
A new
massertdirective silently provides a simple form of unit-testing by silently checking a collection of marker-placement references, thus confirming that the prover's output matches user-provided search patterns. [bc2d8a4] [GH-63] -
A new
mquotedirective complements themquoterole by allowing authors to quote parts of a proof as a block (themquoterole generates inline text). [e0c9eda] -
Alectryon now accepts a
--pygments-styleflag to chose which Pygments code-highlighting style to use. It also honors the Sphinx configuration optionpygments_style. [GH-58] [63539ed] -
Alectryon now exits with an informative error code (
10+ the level of the most severe Docutils error). [GH-57] [dffde22]
Breaking changes
-
Multiple APIs have been generalized to allow working with languages other than Coq and drivers other than SerAPI. In particular,
docutils.AlectryonTransform.SERTOP_ARGSis nowdocutils.AlectryonTransform.DRIVER_ARGS['sertop'][735e72b];transforms.DEFAULT_TRANSFORMSis nowtransforms.DEFAULT_TRANSFORMS["coq"][370b820]; docinfo headers for custom highlighting now use the prefixalectryon/pygments/coq/instead ofalectryon/pygments/[a58a044] (backwards-compatible); caches are now partitioned by language [d376077] (backwards-compatible);html.gen_bannernow takes a list ofDriverInfoinstances (renamed fromGeneratorInfoin [2ce6c0a]) instead of a single one [d376077];--backend jsonnow writes files named.v.io.jsoninstead of.io.json; and--frontend jsonis now--frontend coq.json[] (backwards-compatible). -
SerAPI-specific parts of the
coremodule have been moved to a newserapimodule. [91058a6] -
The Pygments stylesheets generated by Alectryon were renamed from
tango_subtle.styandtango_subtle.csstopygments.styandpygments.cssto reflect the fact that the style is not hardcoded any more. [9c15544] Instead, these stylesheets are now generated dynamically based on the style chosen using the--pygments-styleflag or thepygments_styleoption indocutils.conf. [63539ed] The filesassets/tango_subtle.*have been removed. [cea4ed4]
Bug fixes
- Alectryon will now copy assets (CSS and STY files) in the directory of the output file (rather than that of the input file) when no
--output-directoryis specified. This only matters if an output file is specified using-o(otherwise, the directory of the output file is the same as the input file, so the new behavior matches the old one). [6a35af2]
Alectryon 1.3.1
Alectryon 1.3.0
Version 1.3.0
-
EXPERIMENTAL A new mini-language lets authors show or hide specific sentences, hypotheses, and goals within a fragment of Coq code. The same language can be used in conjunction with a new
:mref:role to place markers and create references to a subpart of a goal, and with a new:mquote:role to replicate subparts of a goal inline. [8a02bce, 14f45b7, 4f91484] [GH-36, GH-2] -
Alectryon's LaTeX preamble has been rewritten to improve line breaking between and within hypotheses. [3325d55]
-
.. coq::directives now accept:class:and:name:arguments. [df6ff35, 7cf03d6] -
A new
--long-line-thresholdflag controls the line length over which Alectryon will issue “long line” warnings. [0286051] -
A new
--cache-compressionflag enables compression of generated cache files. This typically yields space savings of over 95%. [GH-35] -
A new
--html-minificationflag enables the generation of more compact HTML files. Minified HTML files use backreferences to refer to repeated goals and hypotheses (these backreferences are resolved at display time using Javascript) and more succinct markup (full markup is rebuilt dynamically at page load). This typically saves 70-90% of the generated file size, and nearly as much on HTML generation time on page load times. [GH-35] -
HTML5, XeLaTeX and LuaLaTeX outputs are now supported (
--latex-dialect,--html-dialect). [c576ae8]
Bug fixes
- Fix parsing of reST docinfo fields for custom highlighting (
:alectryon/pygments/…:). [33df0f2]
Breaking changes
-
Improvements to goals rendering in HTML may cause very slight alignment changes. Use
.alectryon-io .goal-separator { height: calc(1em + 1px); }to revert to the previous alignment (modulo rounding errors). -
The LaTeX markup of hypotheses has changed:
alectryon@hypis now a macro, not an environment. -
Docutils option
"syntax_highlight"now defaults to"short"when using Alectryon's CLI or its custom HTML writer. That is, inline:coq:roles now produce short-form CSS Pygments class names when processed usingalectryon.docutilsor the CLI. [72749bd] -
The HTML markup for
alectryon-ioblocks has been simplified to save space in generated files (may affect third-party stylesheets). Specifically, the.highlightclass is now applied to whole.alectryon-ioblocks;.hyp-body-blockand.hyp-type-blockare now.hyp-bodyand.hyp-type; and the following classes have been removed:.goal-hyp(use.goal-hyps > span),.hyp-name(use.goal-hyps var),.hyp-body(use.hyp-body > span),.hyp-type(use.hyp-type > span),.hyp-punct(use.goal-hyps bor.hyp-type > band.hyp-body > b),.alectryon-output-stycky-wrapper(use.alectryon-output > div),.alectryon-extra-goal-label(use.alectryon-extra-goals > .goal-separator). [59563f1, dc4b128, 28a004e] -
json.Cachein modulealectryon.jsonnow takes arbitrarymetadatainstead ofsertop_args. [56ca103] -
json_of_annotatedandannotated_of_jsonin modulealectryon.jsonare nowPlainSerializer.encodeandPlainSerializer.decode. [c1076cc]
Alectryon 1.2.1
- Fix an API breakage introduced by the implementation LaTeX export (
AlectryonPostTransformwas only registered for Docutils and Sphinx, but not for other document processors like Pelican; the updated implementation registers it unconditionally).
Alectryon 1.2
Alectryon 1.1
v1.1 alectryon: Tag version 1.1
Alectryon 1.0
v1.0 alectryon: Tag version 1.0