diff options
-rw-r--r-- | Master/texmf-dist/doc/lualatex/lua-typo/README.md | 28 | ||||
-rw-r--r-- | Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-demo.pdf | bin | 16859 -> 16859 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-fr.pdf | bin | 107474 -> 107762 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/lualatex/lua-typo/lua-typo.pdf | bin | 217771 -> 215391 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/lualatex/lua-typo/lua-typo.dtx | 121 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.cfg | 5 | ||||
-rw-r--r-- | Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.sty | 35 |
7 files changed, 119 insertions, 70 deletions
diff --git a/Master/texmf-dist/doc/lualatex/lua-typo/README.md b/Master/texmf-dist/doc/lualatex/lua-typo/README.md index 8f974434faa..801a2603af7 100644 --- a/Master/texmf-dist/doc/lualatex/lua-typo/README.md +++ b/Master/texmf-dist/doc/lualatex/lua-typo/README.md @@ -80,31 +80,35 @@ Changes - debugging stuff added. * v.0.61: - - bug fixes and documentation enhanced. + - bug fixes and documentation enhanced; - colours `mygrey` and `myred` renamed as `LTgrey` and `LTred`. * v.0.65: - new option `ShortFinalWord` to detect short end-of-sentence word - on top of next page. + on top of next page; - code cleaning. * v.0.70: - - Options handled via `ltkeys` instead of `kvoptions`. + - options handled via `ltkeys` instead of `kvoptions`; - Code cleaning, bug fixes. * v.0.80: - - Config file `lua-typo.cfg` changed (new colours added, all colour - numbers are shifted by 1). - - Colours no longer override each other, a special colour has been - added for lines affected by multiple flaws (f.i. widow+overfull). - - Bug fix (file `.typo`): in footnotes, line numbers for homeoarchy + - config file `lua-typo.cfg` changed (new colours added, all colour + numbers are shifted by 1); + - colours no longer override each other, a special colour has been + added for lines affected by multiple flaws (f.i. widow+overfull); + - bug fix (file `.typo`): in footnotes, line numbers for homeoarchy were not reset. * v.0.85: - - A warning is issued if some pages fail to be checked properly. - - Margin notes checking added (over/underfull lines, position). - - Code cleaning, bug fixes. + - a warning is issued if some pages fail to be checked properly; + - margin notes checking added (over/underfull lines, position); + - code cleaning, bug fixes. + +* v.0.86: + - corrected typo in the `signature` function; + - compatibility with package `stfloats` added. -- -Copyright 2020--2023 Daniel Flipo +Copyright 2020--2024 Daniel Flipo E-mail: daniel (dot) flipo (at) free (dot) fr diff --git a/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-demo.pdf b/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-demo.pdf Binary files differindex e82b355c627..08c34301236 100644 --- a/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-demo.pdf +++ b/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-demo.pdf diff --git a/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-fr.pdf b/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-fr.pdf Binary files differindex b117378ac8a..92a1ad5d4ee 100644 --- a/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-fr.pdf +++ b/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo-fr.pdf diff --git a/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo.pdf b/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo.pdf Binary files differindex be36b78a7e3..234889f6735 100644 --- a/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo.pdf +++ b/Master/texmf-dist/doc/lualatex/lua-typo/lua-typo.pdf diff --git a/Master/texmf-dist/source/lualatex/lua-typo/lua-typo.dtx b/Master/texmf-dist/source/lualatex/lua-typo/lua-typo.dtx index 7809a013774..0fdb2395f83 100644 --- a/Master/texmf-dist/source/lualatex/lua-typo/lua-typo.dtx +++ b/Master/texmf-dist/source/lualatex/lua-typo/lua-typo.dtx @@ -12,7 +12,7 @@ % % Lua-Typo package for LaTeX version 2e % -% Copyright © 2020-2023 by Daniel Flipo +% Copyright © 2020-2024 by Daniel Flipo % % Please report errors to: daniel (dot) flipo (at) free (dot) fr % @@ -166,11 +166,15 @@ % ne va pas provoquer d’autres désordres bien plus graves.\\ % b) Inversement, il n’est pas exclu que \pkg{lua-typo} comporte % des bogues l’empêchant de détecter des lignes potentiellement -% imparfaites. +% imparfaites. Depuis la version~0.85, le fichier \file{.typo} +% fournit, s’il y a lieu, une liste de pages « suspectes », celles où +% aucune ligne de texte n’a été trouvée. L’avertissement peut être +% anodin (page contenant uniquement des illustrations par exemple) ou +% révéler un défaut de détection. % % \pkg{lua-typo} est largement configurable et devrait pouvoir -% s’adapter aux exigences variables des auteurs ou correcteurs : voir -% ci-dessous la liste des options et le fichier de configuration +% s’adapter aux exigences variables des auteurs ou correcteurs : +% voir ci-dessous la liste des options et le fichier de configuration % \file{lua-typo.cfg}. % % \pkg{lua-typo} ne corrigeant aucun des « défauts » relevés, quels @@ -489,7 +493,10 @@ % Moreover, correcting a potential issue somewhere may result in % other much more serious flaws somewhere else …\\ % b) Conversely, possible bugs in \pkg{lua-typo} might hide issues -% that should normally be highlighted. +% that should normally be highlighted. Starting with version~0.85, +% the \file{<jobname>.typo} file lists, if any, the pages on which +% no text line could be found. The warning may be irrelevant (page +% only composed of figures) or point out a possible bug. % % \pkg{lua-typo} is highly configurable in order to meet the % variable expectations of authors and correctors: see the options’ @@ -579,12 +586,12 @@ % please note that \opt{All} has to be the first one, as options are % taken into account as they are read \emph{i.e.} from left to right. % +% \newpage % The list of all available options is printed to the \file{.log} % file when option \opt{ShowOptions} is passed to \pkg{lua-typo}, % this option provides an easy way to get their names without having % to look into the documentation. % -% \newpage % With option \opt{None}, \pkg{lua-typo} \emph{does absolutely % nothing}, all checks are disabled as the main function is not added % to any LuaTeX callback. It not quite equivalent to commenting out @@ -745,7 +752,7 @@ %<+scan>\ProvidesPackage{scan-page} %<+dtx>\ProvidesFile{lua-typo.dtx} %<*dtx|sty|scan> - [2023-09-13 v.0.85 Daniel Flipo] + [2024-01-12 v.0.86 Daniel Flipo] %</dtx|sty|scan> %<*sty> % \fi @@ -1426,6 +1433,8 @@ end % \changes{v0.65}{2023/03/02}{All ligatures are now split using the % node’s `components’ field rather than a table.} % +% \changes{v0.86}{2024/01/10}{Typo corrected in the signature function.} +% % The first function adds a (non-nil) node to a signature of type % string, nil nodes are ignored. % It returns the augmented string and its length @@ -1469,7 +1478,7 @@ local signature = function (node, string, swap) local c2 = "" if pre and pre.char then if pre.components then - for nn in traverse_id(GLYPH, post.components) do + for nn in traverse_id(GLYPH, pre.components) do c1 = c1 .. utf8.char(nn.char) end else @@ -2174,11 +2183,14 @@ end % \changes{v0.50}{2021/05/02}{New function `get\_pagebody’ required for % callback `pre\_shipout\_filter’.} % +% \changes{v0.86}{2024/01/10}{Package `stfloats’ adds 1sp to the +% external \cs{vbox}. Be less picky regarding height test.} +% % \begin{macrocode} local get_pagebody = function (head) local textht = tex.getdimen("textheight") local fn = head.list - local body = nil + local body repeat fn = fn.next until fn.id == VLIST and fn.height > 0 @@ -2189,9 +2201,17 @@ local get_pagebody = function (head) %<dbg> texio.write(' ht=' .. ht .. ' dp=' .. dp) first = fn.list for n in traverse_id(VLIST,first) do - if n.subtype == 0 and n.height == textht then +% \end{macrocode} +% Package `stfloats’ seems to add 1sp to the external \cs{vbox} +% for each float found on the page. +% Add $\pm8$sp tolerance when comparing |n.height| to +% |\textheight|. +% \begin{macrocode} + if n.subtype == 0 and n.height >= textht-1 and + n.height <= textht+8 then %<dbg> local ht = string.format("%.1fpt", n.height/65536) %<dbg> texio.write_nl('BODY found: ht=' .. ht) +%<dbg> texio.write_nl(', ' .. n.height .. 'sp') %<dbg> texio.write_nl(' ') body = n break @@ -2199,13 +2219,17 @@ local get_pagebody = function (head) %<dbg> texio.write_nl('Skip short VLIST:') %<dbg> local ht = string.format("%.1fpt", n.height/65536) %<dbg> local dp = string.format("%.1fpt", n.depth/65536) -%<dbg> texio.write(' ht=' .. ht .. ' dp=' .. dp) - first = n.list - for n in traverse_id(VLIST,first) do - if n.subtype == 0 and n.height == textht then -%<dbg> local ht = string.format("%.1fpt", n.height/65536) -%<dbg> texio.write_nl(' BODY: ht=' .. ht) - body = n +%<dbg> texio.write('ht=' .. ht .. ', ' .. n.height .. 'sp') +%<dbg> texio.write('; dp=' .. dp) + local ff = n.list + for nn in traverse_id(VLIST,ff) do +%<dbg> ht = string.format("%.1fpt", nn.height/65536) +%<dbg> texio.write_nl(' VLIST: ht=' .. ht) +%<dbg> texio.write(', ' .. nn.height .. 'sp') + if nn.subtype == 0 and nn.height >= textht-1 and + nn.height <= textht+8 then +%<dbg> texio.write(' got BODY!') + body = nn break end end @@ -2697,7 +2721,7 @@ check_vtop = function (top, colno, vpos) % \begin{macrocode} page_bottom, body_bottom = check_EOP (nextnode) % \end{macrocode} -% Let’s check for an ``Overfull box’’. For a displayed equation +% Let’s check for an `Overfull box’. For a displayed equation % it is straightforward. A set of aligned equations all have the % same (maximal) width; in order to avoid highlighting the whole % set, we have to look for glues at the end of embedded @@ -2855,22 +2879,25 @@ end % % \begin{macrocode} luatypo.check_page = function (head) - local textwd = tex.getdimen("textwidth") - local textht = tex.getdimen("textheight") - local checked, boxed, n2, n3, col, colno - local body = get_pagebody(head) local pageno = tex.getcount("c@page") + local body = get_pagebody(head) + local textwd, textht, checked, boxed + local top, first, next + local n2, n3, col, colno local vpos = 0 local footnote = false - local top = body - local first = body.list - local next local count = 0 -%<dbg> texio.write_nl('Body=' .. tostring(node.type(top.id))) -%<dbg> texio.write('-' .. tostring(top.subtype)) -%<dbg> texio.write('; First=' .. tostring(node.type(first.id))) -%<dbg> texio.write('-' .. tostring(first.subtype)) -%<dbg> texio.write_nl(' ') + if body then + top = body + first = body.list + textwd = tex.getdimen("textwidth") + textht = tex.getdimen("textheight") +%<dbg> texio.write_nl('Body=' .. tostring(node.type(top.id))) +%<dbg> texio.write('-' .. tostring(top.subtype)) +%<dbg> texio.write('; First=' .. tostring(node.type(first.id))) +%<dbg> texio.write('-' .. tostring(first.subtype)) +%<dbg> texio.write_nl(' ') + end if ((first and first.id == HLIST and first.subtype == BOX) or (first and first.id == VLIST and first.subtype == 0)) and (first.width == textwd and first.height > 0 and not boxed) then @@ -2880,12 +2907,13 @@ luatypo.check_page = function (head) % \begin{macrocode} %<dbg> local boxwd = string.format("%.1fpt", first.width/65536) %<dbg> texio.write_nl('One step down: boxwd=' .. boxwd) +%<dbg> texio.write_nl('Glue order=' .. tostring(first.glue_order)) %<dbg> texio.write_nl(' ') top = body.list % \end{macrocode} % A float on top of a page is a VLIST-0 included in a VLIST-0 (body), % it should not trigger this step down. Workaround: the body will be -% read again. +% scanned again. % \begin{macrocode} if first.id == VLIST then boxed = body @@ -3131,8 +3159,9 @@ return luatypo.check_page %% Language specific settings (example for French): %% short words (two letters max) to be avoided at end of lines. -%%\luatypoOneChar{french}{"À Ô Y"} -%%\luatypoTwoChars{french}{"Je Tu Il On Au De"} +%%\luatypoOneChar{french}{"A À Ô Y"} +%%\luatypoTwoChars{french}{"Ah Au Ça Çà Ce De Il Je La Là Le Ma Me Ne Ni +%% Oh On Or Ou Où Sa Se Si Ta Tu Va Vu"} % \end{macrocode} % % \iffalse @@ -3258,7 +3287,7 @@ local is_glyph = node.is_glyph local get_pagebody = function (head) local textht = tex.getdimen("textheight") local fn = head.list - local body = nil + local body repeat fn = fn.next until fn.id == VLIST and fn.height > 0 @@ -3267,9 +3296,11 @@ local get_pagebody = function (head) local dp = string.format("%.1fpt", fn.depth/65536) texio.write_nl("SKIP vlist: ht=" .. ht .. " dp=" .. dp) for n in traverse_id(VLIST,first) do - if n.subtype == 0 and n.height == textht then + if n.subtype == 0 and n.height >= textht-1 and + n.height <= textht+8 then local ht = string.format("%.1fpt", n.height/65536) - texio.write_nl(' BODY: ' .. ht) + texio.write_nl(' BODY found: ' .. ht) + texio.write(', ' .. n.height .. 'sp') texio.write_nl(' ') body = n break @@ -3277,13 +3308,15 @@ local get_pagebody = function (head) local ht = string.format("%.1fpt", n.height/65536) local dp = string.format("%.1fpt", n.depth/65536) texio.write_nl(' SKIP vlist: ht=' .. ht .. ' dp=' .. dp) - first = n.list - for n in traverse_id(VLIST,first) do - if n.subtype == 0 and n.height == textht then - ht = string.format("%.1fpt", n.height/65536) + local ff = n.list + for nn in traverse_id(VLIST,ff) do + if nn.subtype == 0 and nn.height >= textht-1 and + nn.height <= textht+8 then + ht = string.format("%.1fpt", nn.height/65536) texio.write_nl(' BODY: ' .. ht) + texio.write(', ' .. nn.height .. 'sp') texio.write_nl(' ') - body = n + body = nn break end end @@ -3360,6 +3393,12 @@ local scanvlist = function (head) texio.write(tostring(node.type(body.id))) texio.write('-') texio.write(tostring(body.subtype)) + else + texio.write_nl('Function get_pagebody returned NIL!') + texio.write_nl('=> Scanning whole page: node type ') + texio.write(tostring(node.type(head.id))) + texio.write('-') + texio.write(tostring(head.subtype)) end while head do texio.write_nl(tostring(node.type(head.id))) diff --git a/Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.cfg b/Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.cfg index 32f6ade6cf8..4ba5229ca37 100644 --- a/Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.cfg +++ b/Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.cfg @@ -55,8 +55,9 @@ %% Language specific settings (example for French): %% short words (two letters max) to be avoided at end of lines. -%%\luatypoOneChar{french}{"À Ô Y"} -%%\luatypoTwoChars{french}{"Je Tu Il On Au De"} +%%\luatypoOneChar{french}{"A À Ô Y"} +%%\luatypoTwoChars{french}{"Ah Au Ça Çà Ce De Il Je La Là Le Ma Me Ne Ni +%% Oh On Or Ou Où Sa Se Si Ta Tu Va Vu"} %% %% %% End of file `lua-typo.cfg'. diff --git a/Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.sty b/Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.sty index 92f1c05ba18..e4a008a4ff6 100644 --- a/Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.sty +++ b/Master/texmf-dist/tex/lualatex/lua-typo/lua-typo.sty @@ -11,7 +11,7 @@ %% \NeedsTeXFormat{LaTeX2e}[2021/06/01] \ProvidesPackage{lua-typo} - [2023-09-13 v.0.85 Daniel Flipo] + [2024-01-12 v.0.86 Daniel Flipo] \DeclareRelease{v0.4}{2021-01-01}{lua-typo-2021-04-18.sty} \DeclareRelease{v0.65}{2023-03-08}{lua-typo-2023-03-08.sty} \DeclareCurrentRelease{}{2023-09-13} @@ -506,7 +506,7 @@ local signature = function (node, string, swap) local c2 = "" if pre and pre.char then if pre.components then - for nn in traverse_id(GLYPH, post.components) do + for nn in traverse_id(GLYPH, pre.components) do c1 = c1 .. utf8.char(nn.char) end else @@ -990,20 +990,22 @@ end local get_pagebody = function (head) local textht = tex.getdimen("textheight") local fn = head.list - local body = nil + local body repeat fn = fn.next until fn.id == VLIST and fn.height > 0 first = fn.list for n in traverse_id(VLIST,first) do - if n.subtype == 0 and n.height == textht then + if n.subtype == 0 and n.height >= textht-1 and + n.height <= textht+8 then body = n break else - first = n.list - for n in traverse_id(VLIST,first) do - if n.subtype == 0 and n.height == textht then - body = n + local ff = n.list + for nn in traverse_id(VLIST,ff) do + if nn.subtype == 0 and nn.height >= textht-1 and + nn.height <= textht+8 then + body = nn break end end @@ -1396,17 +1398,20 @@ check_vtop = function (top, colno, vpos) return head, done end luatypo.check_page = function (head) - local textwd = tex.getdimen("textwidth") - local textht = tex.getdimen("textheight") - local checked, boxed, n2, n3, col, colno - local body = get_pagebody(head) local pageno = tex.getcount("c@page") + local body = get_pagebody(head) + local textwd, textht, checked, boxed + local top, first, next + local n2, n3, col, colno local vpos = 0 local footnote = false - local top = body - local first = body.list - local next local count = 0 + if body then + top = body + first = body.list + textwd = tex.getdimen("textwidth") + textht = tex.getdimen("textheight") + end if ((first and first.id == HLIST and first.subtype == BOX) or (first and first.id == VLIST and first.subtype == 0)) and (first.width == textwd and first.height > 0 and not boxed) then |