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
-----------------------------------------------------------------

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : https://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : https://contextgarden.net
___________________________________________________________________________________

Reply via email to