Liam Huang submitted an update to the

                  xecjk

package.

Version:  3.10.4
License:  lppl1.3c

Summary description:  Typeset CJK in XeLaTeX

Announcement text:
------------------------------------------------------------------------

 This release introduces a unified command-boundary capture/register
 framework that replaces numerous ad-hoc mechanisms for handling
 inter-character spacing around boxes, color changes, hyperlinks,
 and third-party commands.
 It also fixes several boundary and glue-handling bugs.

 NEW FEATURES

 - New command-boundary capture/register framework that determines
   the visible head/tail character class of boxes, opaque node streams,
   and commands with no visible output, and restores inter-character
   boundaries accordingly (#992).
 - New experimental `experiment/boundary-register` interface allowing
   expert users to register custom commands into the unified
   command-boundary framework (#1010).
 - New dedicated inline-math boundary class that separately handles
   end-of-formula spacing and post-formula source spaces in argument
   contexts, enabling registered commands to restore left/right
   boundaries with correct direct-formula source-space semantics (#1002).
 - New `\@@_glue_check_expire_stale:` routine: when the top-level
   recovery chain finds an empty node list, it clears stale pending
   state, preventing `\g_@@_glue_check_pending_bool` from surviving
   across `\hbox`/`\setbox` boundaries (#996).
 - `siunitx` compatibility: `\unit`, `\qty`, `\num` and v2 legacy names
   `\si`, `\SI` are registered as fixed Default head/tail stream captures,
   fixing space loss at unit-command boundaries in CJK context (#1000).

 BUG FIXES

 - Fixed range parsing of default endpoints in `\@@_check_num_range:nnNN`.
 - Boundary-to-CJK source-space check now uses the same
   `\@@_skip_if_interword:N` test as the Default direction;
   explicit glue whose natural width differs from the current
   inter-word space is no longer replaced by `\CJKglue` (#996).
 - box/wrapped-box capture now rebuilds boundaries as Default head/tail
   when a box has emitted visible content (non-zero width, non-zero
   height or depth, with a terminal char/rule/math/kern node) but
   no character class was observed. Math and `\vrule` etc. that do
   not trigger interchar transitions are no longer misidentified
   as "no visible output" (#998).
 - Default marker replay now synchronises `\spacefactor` with the
   outer list; post-transparent processing also relocates the marker
   together with its candidate glue, fixing right-boundary spacing
   when `xCJKecglue` is enabled and a trailing uppercase letter or
   `\null` inside a box obscures the boundary suffix (#1003).
 - Invisible nodes separating a real space from a marker in a
   normal stream now cause the marker to expire (direct-formula
   semantics) and preserve the original ordering of intermediate
   glue and nodes (#1002).
 - Fixed nested `ulem`/xeCJKfntef underline commands: only the
   outermost invocation now starts a stream capture, preventing
   per-nesting state leakage on the capture stack (#992).

 DOCUMENTATION

 - Clarified that `xCJKecglue` also controls source spaces adjacent
   to inline math (#1002).
 - Documented in the user manual that TeX cannot distinguish source
   spaces from certain explicit glue, and provided a zero-width
   `\kern` workaround (#992).
 - Added Boundary→CJK direction note: certain explicit glue may
   also be replaced by `CJKglue` (#996).

 INTERNAL CHANGES

 - Allowed the Boundary-to-Default recovery path to tentatively
   remove trailing source inter-word glue that has no infinite-order
   stretch but does have shrink; if a CJK marker is found beneath,
   it is replaced by `\CJKecglue`, completing symmetric command-boundary
   handling with the Default-to-CJK direction (#992).
 - Command-boundary framework now manages `xeCJKfntef`, box commands,
   and color commands; removed the legacy fallback that guessed
   hlist/whatsit categories via a global tl.
   The glue branch now only accepts immediately adjacent
   xeCJK markers (#992).
 - Removed the dedicated color pending boolean; color push/pop and
   box output are now handled by transparent/wrapped-box capture (#992).
 - Wrapped the kernel-private `\@imakebox` and `\@iframebox` `[#1][#2]#3`
   signatures to register `\makebox`/`\framebox`; this wrapper must
   be updated if the kernel changes that signature (#992).
 - Migrated link-annotation entry saving and tail-anchor replay to
   unified stream capture, restoring boundaries on both sides
   according to the link's actual visible head/tail class (#992).
 - Registered `\set@color` and `\reset@color` as transparent captures;
   removed the dedicated color push/pop marker save/replay branch (#992).
 - Registered `l3color` color push/pop entries as transparent captures;
   removed the corresponding dedicated marker protection branch (#992).
 - Migrated `\HD@target` to unified transparent capture, restoring
   marker and source-space state on both sides (#992).
 - Wrapped `\Url@z`'s full formatting phase in a fixed Default
   head/tail stream capture; removed the #880 dedicated drain (#992).
 - Migrated `\verb` from the entry drain (which assumed Western output)
   to unified stream capture, restoring boundaries according to
   verbatim's actual head/tail class (#992).
 - Registered `\eqref` as fixed Default head/tail and `\cs` as fixed
   Default head-only stream captures; codedoc/doc meta internal
   adapters now directly wrap a fixed Default stream, removing the
   dedicated drain and covering all its public call sites (#992).
 - Registered kernel `\@setref` (or `hyperref`-saved `\real@setref`)
   as auto stream capture, replacing the #991 dedicated saved-node/replay
   patch with the unified framework.
 - Changed `\blx@pagetracker` from a one-way state drain to transparent
   capture, making write whatsits transparent to the actual visible
   boundaries on both sides (#992).
 - Integrated xeCJKfntef underline commands, native `ulem` entries
   (e.g. `\uline`), `\xeCJKfntefon`, and standalone symbol commands
   into stream capture; internal pending is now published through
   the framework's unified helper; removed fntef-specific tail-state
   restoration and pending setup (#992).
 - Measurement-time box isolation for decorative symbols now uses
   the framework's nestable pause zones, simultaneously saving and
   restoring marker and pending state (#992).
 - Connected `\lstinline`'s delimiter, active-character, and brace
   scanning paths to auto stream capture, making all four source-space
   combinations around color switches consistent with direct input (#992).

 Source code: https://github.com/CTeX-org/ctex-kit
 Issue tracker: https://github.com/CTeX-org/ctex-kit/issues

------------------------------------------------------------------------

The package’s Catalogue entry can be viewed at
   https://ctan.org/pkg/xecjk

The package’s files themselves can be inspected at
   https://mirrors.ctan.org/macros/xetex/latex/xecjk/

------------------------------------------------------------------------

   Thanks for the upload.

     For the CTAN Team
    Petra Rübe-Pugliese

------------------------------------------------------------------------

CTAN is run entirely by volunteers and supported by TeX user groups.
Please join a user group or donate to one, see https://ctan.org/lugs
_______________________________________________
ctan-ann mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to