Changes

Jump to navigation Jump to search
3,717 bytes added ,  08:46, 24 April 2020
Create page
Very long continuous strings (such as SHA512 keys or DNA sequences) might have to be broken after any character irrespective of the current hyphenation scheme.

== Example SHA512 ==
This is Hans' trick from the list for SHA512 keys

<texcode>
\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}

\showframe

\starttext

\setupalign[tolerant,stretch]

\dorecurse {10} {%
some sha
\sha{8b2f3c087046c3943ace0dc4f958ef2138e58a51b40e%
ef6fab6fa1aeb845cc257a410ab1b914bc399b4293f%
31c76fc2c73e5be5ea4d329f9e6820984688efec2} and
}

\stoptext
</texcode>

== Example DNA sequences ==

This is an adoption from Wolfang using Lua:
<context source="yes">
\startluacode

local shared = {
start = 1,
length = 1,
before = nil,
after = nil,
left = false,
right = false,
}

local all = table.setmetatableindex({ }, function(t,k)
return shared
end)

languages.hyphenators.traditional.installmethod("dna",
function(dictionary,word,n)
return all
end
)
\stopluacode

\definehyphenationfeatures
[dna]
[characters=all,
alternative=dna]

\starttext

\startframedtext[width=6cm,style=mono]
\sethyphenationfeatures[dna]
\setuphyphenation[method=traditional]
GATTGCTTACTCCTGGTTGGTGGGGCTTACATTCTGTCGCCTCAAAACTACTAGAGCCGGCATATTCTAGAAGGGCCGCCTTCATGTGG
\stopframedtext

\stoptext
</context>

And a solution using a bit of plain TeX by Rik:
<context source="yes">
\define[1]\DNA{\handletokens #1\with\DNAspacer}
\define[1]\DNAspacer{#1\hskip 2.3pt plus .1pt}

\starttext

\startframedtext[width=6cm,style=mono]
\DNA{GATTGCTTACTCCTGGTTGGTGGGGCTTACATTCTGTCGCCTCAAAACTACTAGAGCCGGCATATTCTAGAAGGGCCGCCTTCATGTGG}
\stopframedtext

\stoptext
</context>


== See also ==
{{Hyphenation see also}}

== Help from ConTeXt-Mailinglist/Forum ==
All issues with:
{{Forum|SHA512}}
{{Forum|Linebreak after x characters}}
57

edits

Navigation menu