Changes

Jump to navigation Jump to search
4,924 bytes added ,  18:52, 23 January 2023
minor corrections
: ''For hyphens in compound words, see [[Compound words]].''
 
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 ===
To allow breaking at hyphens, slashes, etc., write {{cmd|setbreakpoints|[compound]}} at the start of your document.
=== Specify how to break a manual breakpoint globally word ===
Write {{cmd|hyphenation|{po-ly-syl-lab-ic}|}} at the start of your document. (This will not be remembered across documents.)
=== Specify a manual breakpoint locally ===
Use the {{cmd|-}} command. {{code|poly\-syllabic}}.
 
To never break a word, write {{cmd|hyphenation|{polysyllabic}|}}.
=== Prevent hyphenation locally ===
FIXMEThere are two ways to prevent a word from being hyphenated: the traditional {{tex|hbox}} and the more natural command {{cmd|unhyphenated}}.<texcode>\hbox{myfragileword} % old-fashioned\unhyphenated{myfragileword} % MkIV, since 2013-04-21</texcode>
=== Tune the auto-hyphenation algorithm ===
Use the [[Command/setupalign#Nicer_justification_and_microtypography|{{cmd|setupalign|link=no}}parameters]] parameters concerning justification and hyphenation.
=== Penalize consecutive hyphens ===
=== 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} \blankx $\pi = \hyphenateddigits[\unknown]{3.141592653589793238462643383279502884197169399375105}$ \blankx $\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

Navigation menu