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-image
to support PNG images (PR#329 byleque
).
0.0.7 - 2022-04-14
- Fix invalid errors emitted by
--type-check-only
by 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
, andbnot
for bitwise operations (PR#85 bykonn
). - Add primitive
read-file : string -> string list
for 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 -> context
for handling various Unicode code points in the math mode. - Add primitive
register-document-information
for furnishing document information dictionaries with PDF files (PR#268 bypuripuri2100
). - Develop
doc/doc-primitives.saty
(PR#281 bypuripuri2100
). - Add Web colors to the
color
packge (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
Makefile
todune
(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
/DW
or/DW2
entries 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.sh
as 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-config
option to suppress using default configuration search paths (PR#212 byna4zagin3
). - Add new primitive
linear-transform-graphics : float -> float -> float -> float -> graphics -> graphics
for the linear transformation of graphics, and new functionsGr.rotate-graphics
andGr.scale-graphics
by 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 * string
at stage 0. - Add primitive
get-input-position : input-position -> string * int * int
for extracting filenames, line numbers, column numbers from positions on source files. - Add
--debug-show-overfull
option to visualize overfull or underfull lines. - Add GitHub Actions for the development (PR#250 and PR#256 by
y-yu
and PR#255 bypuripuri2100
). - Add primitive
page-break-multicolumn
for breaking contents into multiple columns on pages. - Add primitive
hook-page-break-block
. - Add primitives
ceil
andfloor
(PR#190 byelpinal
). - Add
font-latin-sans
etc. 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/camlpdf
byy-yu
, and PR#223 byyasuo-ozu
). - Uses
yojson-with-position.1.4.2+satysfi
instead ofyojson.1.4.1+satysfi
in order to avoid version conflicts withyojson
required bymerlin
etc. - Improve how listings are typeset by
itemize
package. - Improve
download-fonts.sh
(PR#231 byna4zagin3
).
- Add new primitive
string-explode : string -> int list
(PR#202 bypuripuri2100
). - Add new primitives
log : float -> float
andexp : 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-path
for applying linear transformations to paths, and new functions,Gr.rotate-path
andGr.scale-path
, which utilize the primitive (PR#218 bymonaqa
).
0.0.4 - 2020-01-25
- Rename math command
\centerdot
to\cdot
(PR#114 bynekketsuuu
). - Does not fail when a script value evaluates to
OtherScript
(PR#121 byna4zagin3
). - Handles
CR
+LF
correctly as one line ending (PR#122 bymatsud224
). - Fix how to generate ToUnicodeCMap as to ligatures (PR#140 by
matsud224
). - Fix a bug of
\ref
instdjareport
(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
otfm
fromv.0.3.6+satysfi
tov.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.satyg
files). - Provides a new primitive
omit-skip-after
. - Provides new options
--debug-show-block-bbox
and--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-scripts
andget-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