Bug in verbatim wrapping examples on wiki
On this page of the wiki there is an example for wrapping long words, like long hexadecimal strings: https://wiki.contextgarden.net/Wrapping This example is buggy because it deletes one character at the point that it is wrapped. In the example given, running context turns '257a410' into '257410'. The DNA example below it exhibits the same problem. Anyone have a solution?
On 2/4/23 07:49, Hugo Landau via ntg-context wrote:
On this page of the wiki there is an example for wrapping long words, like long hexadecimal strings:
https://wiki.contextgarden.net/Wrapping
This example is buggy because it deletes one character at the point that it is wrapped.
Anyone have a solution?
Many thanks for your report, Hugo. I use this code from time to time and I totally overlooked this. Have you checked all options that the sample contains? Many thanks for your help, Pablo
On 2/4/23 10:37, Pablo Rodriguez via ntg-context wrote:
On 2/4/23 07:49, Hugo Landau via ntg-context wrote:
On this page of the wiki there is an example for wrapping long words, like long hexadecimal strings:
https://wiki.contextgarden.net/Wrapping
This example is buggy because it deletes one character at the point that it is wrapped.
Anyone have a solution?
Many thanks for your report, Hugo.
I use this code from time to time and I totally overlooked this.
Have you checked all options that the sample contains?
Hans, I have just checked that these line breakings loose a character in all options. The next sample displays the issue clearly: \startluacode --local shared = { -- start = 1, -- length = 1, -- left = false, -- right = false, --} local shared = { start = 1, length = 1, before = utf.char(0xB7), after = nil, left = false, right = false, } -- languages.hyphenators.traditional.installmethod("sha", -- function(dictionary,word,n) -- local t = { } -- for i=1,#word do -- t[i] = shared -- end -- return t -- end -- ) -- or more efficient when used often: -- local all = { } -- for i=1,512 do -- all[i] = shared -- end -- languages.hyphenators.traditional.installmethod("sha", -- function(dictionary,word,n) -- return all -- end -- ) -- or more obscure: -- local all = table.setmetatableindex({ }, function(t,k) -- t[k] = shared -- return shared -- end) -- -- languages.hyphenators.traditional.installmethod("sha", -- function(dictionary,word,n) -- return all -- end -- ) -- or just (lua is fast enough anyway) local all = table.setmetatableindex({ }, function(t,k) return shared end) languages.hyphenators.traditional.installmethod("sha", function(dictionary,word,n) return all end ) \stopluacode \definehyphenationfeatures [sha] [characters=all, alternative=sha] \unexpanded\def\sha#1% {\begingroup \sethyphenationfeatures[sha]% #1% \endgroup} \setuphyphenation[method=traditional] % % \unexpanded\def\sha#1% % {\begingroup % \sethyphenationfeatures[sha]% % \setuphyphenation[method=traditional]% % #1% % \endgroup} \starttext \hyphenatedword{\sha{8b2f3c087046c3943ace0dc4f958ef2138e58a51b40e% ef6fab6fa1aeb845cc257a410ab1b914bc399b4293f% 31c76fc2c73e5be5ea4d329f9e6820984688efec2}} \stoptext Are we missing something or is this a bug? Many thanks for your help, Pablo
On 05/02/2023 12:32, Pablo Rodriguez via ntg-context wrote:
Are we missing something or is this a bug?
If you add a \tt at the beginning, the lines have different length. not sure why, but there is a reason to it... \startTEXpage[offset=3em] \tt \setupalign[tolerant,stretch] \dorecurse {10} {% some sha \sha{8b2f3c087046c3943ace0dc4f958ef2138e58a51b40e% ef6fab6fa1aeb845cc257a410ab1b914bc399b4293f% 31c76fc2c73e5be5ea4d329f9e6820984688efec2} and } \stopTEXpage
On 2/5/2023 12:32 PM, Pablo Rodriguez via ntg-context wrote:
On 2/4/23 10:37, Pablo Rodriguez via ntg-context wrote:
On 2/4/23 07:49, Hugo Landau via ntg-context wrote:
On this page of the wiki there is an example for wrapping long words, like long hexadecimal strings:
https://wiki.contextgarden.net/Wrapping
This example is buggy because it deletes one character at the point that it is wrapped.
Anyone have a solution?
Many thanks for your report, Hugo.
I use this code from time to time and I totally overlooked this.
Have you checked all options that the sample contains?
Hans,
I have just checked that these line breakings loose a character in all options.
The next sample displays the issue clearly:
\startluacode
--local shared = { -- start = 1, -- length = 1, -- left = false, -- right = false, --}
local shared = { start = 1, length = 1, before = utf.char(0xB7), after = nil, left = false, right = false, }
-- languages.hyphenators.traditional.installmethod("sha", -- function(dictionary,word,n) -- local t = { } -- for i=1,#word do -- t[i] = shared -- end -- return t -- end -- )
-- or more efficient when used often:
-- local all = { } -- for i=1,512 do -- all[i] = shared -- end -- languages.hyphenators.traditional.installmethod("sha", -- function(dictionary,word,n) -- return all -- end -- )
-- or more obscure:
-- local all = table.setmetatableindex({ }, function(t,k) -- t[k] = shared -- return shared -- end) -- -- languages.hyphenators.traditional.installmethod("sha", -- function(dictionary,word,n) -- return all -- end -- )
-- or just (lua is fast enough anyway)
local all = table.setmetatableindex({ }, function(t,k) return shared end)
languages.hyphenators.traditional.installmethod("sha", function(dictionary,word,n) return all end ) \stopluacode
\definehyphenationfeatures [sha] [characters=all, alternative=sha]
\unexpanded\def\sha#1% {\begingroup \sethyphenationfeatures[sha]% #1% \endgroup}
\setuphyphenation[method=traditional] % % \unexpanded\def\sha#1% % {\begingroup % \sethyphenationfeatures[sha]% % \setuphyphenation[method=traditional]% % #1% % \endgroup}
\starttext \hyphenatedword{\sha{8b2f3c087046c3943ace0dc4f958ef2138e58a51b40e% ef6fab6fa1aeb845cc257a410ab1b914bc399b4293f% 31c76fc2c73e5be5ea4d329f9e6820984688efec2}} \stoptext
Are we missing something or is this a bug? what do you expect as result? (maybe try \righthyphenmin=1)
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 2/5/23 13:13, Hans Hagen via ntg-context wrote:
On 2/5/2023 12:32 PM, Pablo Rodriguez via ntg-context wrote:
[...] Are we missing something or is this a bug? what do you expect as result? (maybe try \righthyphenmin=1)
Line breaks are removing characters. In the sample below, output from \hsize\zeropoint \sha{a1b2c3d4} reads: a _ _ _ _ 3d4 I’m afraid \righthyphenmin=-1 prevents hyphenation (it seems to do it everywhere). Sorry, but I don’t get what is wrong here. Many thanks for your help, Pablo \startluacode function document.addfunnyhyphen(tfmdata) local underscore = utf.byte("_") local char = tfmdata.characters[underscore] if not char then return end tfmdata.characters[0xFE000] = { width = 0, height = 0, depth = 0, commands = { { "right", -char.width }, { "down", char.depth }, { "slot", 1, underscore }, } } end utilities.sequencers.appendaction("aftercopyingcharacters", "after","document.addfunnyhyphen") local shared = { start = 1, length = 1, before = utf.char(0xFE000), after = nil, left = false, right = false, } local all = table.setmetatableindex({ }, function(t,k) return shared end) languages.hyphenators.traditional.installmethod("sha", function(dictionary,word,n) return all end ) \stopluacode \definehyphenationfeatures [sha] [characters=all, alternative=sha, righthyphenchar="FE000] \unexpanded\def\sha#1% {\begingroup\tt \righthyphenmin=-1 \sethyphenationfeatures[sha]% \setuphyphenation[method=traditional]% #1% \endgroup} \starttext \startTEXpage[width=6em, offset=.25em] \hsize\zeropoint \sha{a1b2c3d4} extraordinary linguistics \righthyphenmin=-1 extraordinary linguistics \stopTEXpage \stoptext
On 2/5/2023 4:52 PM, Pablo Rodriguez via ntg-context wrote:
On 2/5/23 13:13, Hans Hagen via ntg-context wrote:
On 2/5/2023 12:32 PM, Pablo Rodriguez via ntg-context wrote:
[...] Are we missing something or is this a bug? what do you expect as result? (maybe try \righthyphenmin=1)
Line breaks are removing characters.
In the sample below, output from
\hsize\zeropoint \sha{a1b2c3d4}
reads:
a _ _ _ _ 3d4
I’m afraid \righthyphenmin=-1 prevents hyphenation (it seems to do it everywhere). This
\unexpanded\def\sha#1% {\begingroup \sethyphenationfeatures[sha]% \showglyphs \righthyphenmin1 #1% \endgroup} gives a· · · · · · 4 ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
On 2/4/23 07:49, Hugo Landau via ntg-context wrote:
On this page of the wiki there is an example for wrapping long words, like long hexadecimal strings:
https://wiki.contextgarden.net/Wrapping
This example is buggy because it deletes one character at the point that it is wrapped.
Hugo, I have just updated the wiki with another way of line breaking SHA sums: https://wiki.contextgarden.net/Wrapping#Line_breaking_with_SHA512_sums It avoids the issue you encountered and it is an easy workaround. Just in case it might help, Pablo
participants (4)
-
Floris van Manen
-
Hans Hagen
-
Hugo Landau
-
Pablo Rodriguez