All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fix spacing at the beginning of math formulae (PR#333 by
sankantsu). - Fix spacing around
(and)literally written in math formulae (PR#334 bysankantsu). - Slightly improve how to report syntax errors for empty files (PR#330 by
leque).
- Extend
load-imageto support PNG images (PR#329 byleque).
0.0.7 - 2022-04-14
- Fix invalid errors emitted by
--type-check-onlyby making the option extension-sensitive. - Fix the exhaustiveness check (PR#171 by
matsud224). - Fix how to handle digits under
\mathbb(PR#286 byelpinal). - Use images other than Lenna for tests (PR#288 by
nekketsuuu).
- Add primitives
(<<),(>>),bxor,band,bor, andbnotfor bitwise operations (PR#85 bykonn). - Add primitive
read-file : string -> string listfor reading external text files in subdirectories (PR#200 bypuripuri2100). - Allow arbitrary Unicode code points other than few ASCII symbols to occur in the math mode (e.g.
${α + β}). - Add primitive
set-math-char : int -> int -> math-class -> context -> contextfor handling various Unicode code points in the math mode. - Add primitive
register-document-informationfor furnishing document information dictionaries with PDF files (PR#268 bypuripuri2100). - Develop
doc/doc-primitives.saty(PR#281 bypuripuri2100). - Add Web colors to the
colorpackge (PR#282 byyasuo-ozu). - Add primitive
clip-graphics-by-path(PR#280 byyasuo-ozu). - Support negation on float/length literals such as
-1.0,- 3.14,- 2.71828cm, etc. (PR#295 byleque). - Make doc comments about primitives automatically generated by invoking
dune build @doc; dune build @doc-private(PR#285 byleque). - Support
${a'^1_2}and${a'_2^1}for math sub/superscripts (PR#298 byleque).
- Remove the build dependency on Ruby and migrate some build scripts from
Makefiletodune(PR#142 byleque, and PR#226 byna4zagin3). - Remove the build dependency on
depext(PR#289 byna4zagin3). - Build
src/*as a private library (PR#173 byleque). - Improve the parser implementation (PR#175 by
leque).
0.0.6 - 2021-02-06
- Improve how to emit errors when parsing invalid itemized expressions (PR#176 by
hanazuki). - Does not embed null objects as
/DWor/DW2entries in output PDFs (mainly for services that use PDFs but do not support null objects) (PR#180). - Fix how to embed font subsets as to tags (PR#181 by
matsud224). - Fix how to decode types written mainly in signatures (PR#208 by
elpinal, which was encouraged by Issue#184 bynyuichi). - Allow
?*used in math expressions and limit the range of math symbols (encouraged by a report by@t_uemura669101). - Update README about how to install SATySFi on Windows in response to some amendment of
brwrap-related problems (PR#242 bynekketsuuu). - Improve
download-fonts.shas to SHA checksum (PR#253 byna4zagin3). - Fix
doc/math1.saty(PR#178 byy-yu). - Fix how to confirm that given document files are of type
document(resp.string) in the PDF mode (resp. in the text mode) (encouraged by the bug report in Issue#257 byzeptometer).
- Add
--no-default-configoption to suppress using default configuration search paths (PR#212 byna4zagin3). - Add new primitive
linear-transform-graphics : float -> float -> float -> float -> graphics -> graphicsfor the linear transformation of graphics, and new functionsGr.rotate-graphicsandGr.scale-graphicsby using it (PR#241 and PR#254 bymonaqa). - Add string literals of the form
@`…`, which are equipped with their positions on source files and have typeinput-position * stringat stage 0. - Add primitive
get-input-position : input-position -> string * int * intfor extracting filenames, line numbers, column numbers from positions on source files. - Add
--debug-show-overfulloption to visualize overfull or underfull lines. - Add GitHub Actions for the development (PR#250 and PR#256 by
y-yuand PR#255 bypuripuri2100). - Add primitive
page-break-multicolumnfor breaking contents into multiple columns on pages. - Add primitive
hook-page-break-block. - Add primitives
ceilandfloor(PR#190 byelpinal). - Add
font-latin-sansetc. tostdja,stdjareport, andstdjabook(PR#126 bypuripuri2100).
0.0.5 - 2020-07-11
- Fix how to handle font stretch values (a strange behavior due to this bug had first been reported by
zeptometer, and the cause of the bug was suggested bymatsud224). - Support OCaml 4.10 (encouraged by PR#207 by
na4zagin3, PR#3 forgfngfn/camlpdfbyy-yu, and PR#223 byyasuo-ozu). - Uses
yojson-with-position.1.4.2+satysfiinstead ofyojson.1.4.1+satysfiin order to avoid version conflicts withyojsonrequired bymerlinetc. - Improve how listings are typeset by
itemizepackage. - Improve
download-fonts.sh(PR#231 byna4zagin3).
- Add new primitive
string-explode : string -> int list(PR#202 bypuripuri2100). - Add new primitives
log : float -> floatandexp : float -> float. - Extend the syntax and the semantics for allowing code texts directly written in inline texts
{… `…` …}and add new primitiveset-code-text-command : [string] inline-cmd -> context -> context. - Add
List.is-empty,List.map-with-ends, andOption.is-none. - Add a new primitive
transform-pathfor applying linear transformations to paths, and new functions,Gr.rotate-pathandGr.scale-path, which utilize the primitive (PR#218 bymonaqa).
0.0.4 - 2020-01-25
- Rename math command
\centerdotto\cdot(PR#114 bynekketsuuu). - Does not fail when a script value evaluates to
OtherScript(PR#121 byna4zagin3). - Handles
CR+LFcorrectly as one line ending (PR#122 bymatsud224). - Fix how to generate ToUnicodeCMap as to ligatures (PR#140 by
matsud224). - Fix a bug of
\refinstdjareport(PR#135 bymatsud224). - Fix a bug of the signature matching (PR#143 and PR#144 by
elpinal). - Fix a bug of the type inference algorithm about records (PR#148 by
elpinal). - Fix a bug about decoding fonts that have NULL as the DefaultLangSys entry in a Script table.
- Fix (a kind of) bug about decoding fonts that have NULL in a BaseRecord table (PR#164 by
matsud224). - Fix the page breaking algorithm.
- Fix how to detect cyclic synonym type definition(s) (bug reported by
nyuichi). - Fix how to embed fonts (by updating
otfmfromv.0.3.6+satysfitov.0.3.7+satysfi, which was due to a PR bymatsud224).
- Begins to support Markdown inputs.
- Supports PDF hyperlinks (PR#113 by
matsud224). - Supports fixed-length list patterns (PR#123 by
nekketsuuu). - Supports PDF outlines (PR#134 by
matsud224). - Reports detailed error messages when a given image file is invalid (PR#138 by
matsud224). - Provides new primitives
get-leftmost-script : inline-boxes -> script option,get-rightmost-script : inline-boxes -> script option, andscript-guard-both : script -> script -> inline-boxes -> inline-boxes. - Regards
<LIBROOT>/local/packages/as a place for user-defined packages. - Uses
<LIBROOT>/local/hash/fonts.satysfi-hash(as well as<LIBROOT>/dist/fonts.satysfi-hash) for a font fash file (the same holds for<LIBROOT>/local/hash/mathfonts.satysfi-hash). - Supports (non-extensible) record updates, i.e.,
(| <record> with <label> = <new-value> |). - Supports a MetaML-like two-stage computation performed by bracket
& <expr>and escape~ <expr>and equipped with (a somewhat restrictive variant of) cross-stage persistence. - Uses
"$(pwd)/.satysfi/"as one of the library roots, and provides option--config <colon-separated paths>(or-C …) for adding arbitrary paths to the library roots (PR#161 bynyuichi). - Supports the insertion of images by
in Markdown sources (PR#139 byhikalium). - Supports the local import
@import: …for the text-generating mode (i.e. supports importing.satyh-*or.satygfiles). - Provides a new primitive
omit-skip-after. - Provides new options
--debug-show-block-bboxand--debug-show-block-space. - Allows
[](i.e. the empty list) or(| |)(i.e. the empty record) as an expression argument of commands. - Add new primitive
abort-with-message(which is equivalent to OCaml’sfailwith). - Add new primitives
lift-int,lift-string, etc. for lifting basic values in two-stage computation (which may be, however, replaced with a more general single primitive operation based on cross-stage persistence). - Add the MacroML-like notion of macro based on two-stage programming.
- Supports two-column page break.
- The use of
"src-dist":entries in font hash files is deprecated; use"src":instead, which requires a font file’s path relative to<LIBROOT>. An entry of the form"src-dist": "<path/to/font-file>"is now treated equivalently to"src": "dist/fonts/<path/to/font-file>".
0.0.3 - 2018-10-09
- Does NOT insert spacing between different scripts when the line breaking class of the posterior charcter is CL, CP, QU, NS, JLCP (= JLreq cl-02), JLFS (= JLreq cl-06), or JLCM (= JLreq cl-07).
- Supports the application of math commands to optional arguments.
- Provides primitives
set-space-ratio-between-scriptsandget-space-ratio-between-scripts.
0.0.2 - 2018-08-09
- Make the type inference algorithm firmer (mainly about records and optional arguments).
- Conforms to a new operational semantics as to optional arguments.
- Starts reporting errors for duplicated fields in a record expression.
- Improve type error reports about applications of non-function expressions.
- Initial version of SATySFi