Open main menu

Changes

4,566 bytes added ,  18:52, 23 January 2023
minor corrections
When a word extends beyond the end of a line, it can be broken in the middle and written on two lines, with a hyphen to indicate the breakoff. This is called '''hyphenation'''. ConTeXt has a great many facilities for dealing with hyphenation, both automatically and manually; they are gathered on this page.
 
=== Define the language for the whole document ===
 
{{cmd|mainlanguage|[nl]}} would be the way to set the language for the whole document to Dutch.
 
The default language is US English.
=== Change the hyphenation language ===
 
Use {{cmd|language|[de]}}. NB: this will also alter the marks used for {{cmd|quotation}}, etc.
 
A shortcut for German would be {{cmd|de}}. Italian has no shortcut in {{cmd|it}} (which is reserved for italics) and Finnish has no shortcut for {{cmd|fi}} is the command to end conditionals.
 
Another way of marking a passage would be {{cmd|startlanguage|[es]}} and {{cmd|stoplanguage}}.
 
=== Display languages and hyphenation points ===
 
{{cmd|currentmainlanguage}} prints the main language and {{cmd|currentlanguage}} displays the language in use (which may not be the same as the main language).
 
{{cmd|hyphenatedword}} prints the hyphenation points given the current language patterns.
 
<context source="yes">
{\tt\currentlanguage}: \hyphenatedword{language}\\
\uk{\tt\currentlanguage}: \hyphenatedword{language}\\
\de{\tt\currentlanguage}: \hyphenatedword{language}\\
\nl{\tt\currentlanguage}: \hyphenatedword{language}\\
\es{\tt\currentlanguage}: \hyphenatedword{language}
</context>
 
=== Minimum length for hyphenation ===
 
Hyphenation works in each language because it has defined the minimum number of letters to apply a hyphenation pattern. It applies at the word start ({{code|lefthyphemin}}) or at the word end ({{code|righthyphemin}}).
 
There is a third option to set the minimal number of letters the word needs to be hyphenated ({{code|hyphemin}}).
 
You can set that with {{cmd|setuplanguage}}, such as in {{cmd|setuplanguage|2=[es][hyphenmin=5]}}. This would enable some hyphenations and prevent others.
 
<context source="yes">
\mainlanguage[es]
\hyphenatedword{coda}\\
\hyphenatedword{comida}\\
\setuplanguage[es][hyphenmin=5]
\hyphenatedword{coda}\\
\hyphenatedword{comida}\\
</context>
 
This seems to be very useful in German:
 
<context source="yes">
\mainlanguage[de]
\hyphenatedword{dazu}\\
\hyphenatedword{darum}\\
\hyphenatedword{wovon}\\
\hyphenatedword{Erarbeiten}\\
\setuplanguage[de][lefthyphenmin=2,righthyphenmin=3]
\hyphenatedword{dazu}\\
\hyphenatedword{darum}\\
\hyphenatedword{wovon}\\
\hyphenatedword{Erarbeiten}\\
\setuplanguage[de][lefthyphenmin=2,righthyphenmin=3, hyphenmin=6]
\hyphenatedword{dazu}\\
\hyphenatedword{darum}\\
\hyphenatedword{wovon}\\
\hyphenatedword{Erarbeiten}\\
</context>
=== Allow breaking at existing hyphens ===
=== Prevent hyphenation locally ===
There are two ways to prevent a word from being hyphenated: the traditional {{tex|hbox}} and the more natural command {{cmd|nothyphenatedunhyphenated}}.
<texcode>
\hbox{myfragileword} % old-fashioned
\nothyphenatedunhyphenated{myfragileword} % MkIV, since 2013-04-21
</texcode>
=== Mark hyphenated lines for review ===
See the article on [[Reviewing hyphenation|reviewing hyphenation]].
 
=== Hyphenate numbers and other non-words ===
Use {{cmd|hyphenateddigits}}; it works in text and math mode and is available since 2021-01-28 (i.e. not yet in the wiki at the time of writing).
 
<context source=yes>
\pi\ = \hyphenateddigits[\unknown]{3.141592653589793238462643383279502884197169399375105} \blank
\pi\ = \hyphenateddigits{3.141592653589793238462643383279502884197169399375105} \blank
x $\pi = \hyphenateddigits[\unknown]{3.141592653589793238462643383279502884197169399375105}$ \blank
x $\pi = \hyphenateddigits{3.141592653589793238462643383279502884197169399375105}$ \blank
</context>
 
=== Underscore Hyphenation for SHA ===
 
The following sample deals with underscore hyphenation for SHA output (works with ConTeXt versions from 2021.05.15 22:45).
 
<context mode="lmtx" source=yes>
\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]
 
\sethyphenationfeatures[sha]
\setuphyphenation[method=traditional]
 
\ctxlua{require("util-sha")}
\def\hashfivefile#1{%
\ctxlua{context(utilities.sha2.hash512("#1"))}}
 
\starttext
\startTEXpage[offset=1em, width=15em]
\hashfivefile{ConTeXt}
\stopTEXpage
\stoptext
</context>
 
=== See also ===
{{Hyphenation see also}}
 
[[Category:Basics]]
139

edits