Typo
[latex2e.git] / latex2e-20150101 / required / babel / slovak.dtx
blobd2d0c00a79b48d39061a96b36ce6dcc01167dbd5
1 % \iffalse meta-comment
3 % Copyright 1989-2008 Johannes L. Braams and any individual authors
4 % listed elsewhere in this file.  All rights reserved.
5
6 % This file is part of the Babel system.
7 % --------------------------------------
8
9 % It may be distributed and/or modified under the
10 % conditions of the LaTeX Project Public License, either version 1.3
11 % of this license or (at your option) any later version.
12 % The latest version of this license is in
13 %   http://www.latex-project.org/lppl.txt
14 % and version 1.3 or later is part of all distributions of LaTeX
15 % version 2003/12/01 or later.
16
17 % This work has the LPPL maintenance status "maintained".
18
19 % The Current Maintainer of this work is Johannes Braams.
20
21 % The list of all files belonging to the Babel system is
22 % given in the file `manifest.bbl. See also `legal.bbl' for additional
23 % information.
24
25 % The list of derived (unpacked) files belonging to the distribution
26 % and covered by LPPL is defined by the unpacking scripts (with
27 % extension .ins) which are part of the distribution.
28 % \fi
29 % \CheckSum{1382}
30 % \iffalse
31 %    Tell the \LaTeX\ system who we are and write an entry on the
32 %    transcript.
33 %<*dtx>
34 \ProvidesFile{slovak.dtx}
35 %</dtx>
36 %<+code>\ProvidesLanguage{slovak}
37 %\fi
38 %\ProvidesFile{slovak.dtx}
39         [2008/07/06 v3.1a Slovak support from the babel system]
40 %\iffalse
41 %% File `slovak.dtx' 
42 %% Babel package for LaTeX version 2e
43 %% Copyright (C) 1989 - 2008
44 %%           by Johannes Braams, TeXniek
46 %% Slovak Language Definition File
47 %% Copyright (C) 1989 - 2001
48 %%           by Jana Chlebikova
49 %            Department of Artificial Intelligence
50 %            Faculty of Mathematics and Physics
51 %            Mlynska dolina
52 %            84215 Bratislava
53 %            Slovakia
54 %            (42)(7) 720003 l. 835
55 %            (42)(7) 725882
56 %            chlebikj at mff.uniba.cs (Internet)
57 %            and Johannes Braams, TeXniek
59 %% Copyright (C) 2002-2005
60 %%           by Tobias Schlemmer
61 %            Braunsdorfer Stra\ss e 101
62 %            01159 Dresden
63 %            Deutschland
64 %            Tobias.Schlemmer at web.de
66 %% Copyright (C) 2005-2008
67 %%           by Petr Tesa\v r\'ik (babel at tesarici.cz)
69 % This file is also based on CSLaTeX
70 %                       by Ji\v r\'i Zlatu\v ska, Zden\v ek Wagner,
71 %                          Jaroslav \v Snajdr and Petr Ol\v s\'ak.
73 %% Please report errors to: Petr Tesa\v r\'ik
74 %%                          babel at tesarici.cz
76 %    This file is part of the babel system, it provides the source
77 %    code for the Slovak language definition file.
78 %<*filedriver>
79 \documentclass{ltxdoc}
80 \newcommand*\TeXhax{\TeX hax}
81 \newcommand*\babel{\textsf{babel}}
82 \newcommand*\langvar{$\langle \it lang \rangle$}
83 \newcommand*\note[1]{}
84 \newcommand*\Lopt[1]{\textsf{#1}}
85 \newcommand*\file[1]{\texttt{#1}}
86 \begin{document}
87  \DocInput{slovak.dtx}
88 \end{document}
89 %</filedriver>
90 %\fi
92 % \def\CS{$\cal C\kern-.1667em
93 %   \lower.5ex\hbox{$\cal S$}\kern-.075em$}
95 % \GetFileInfo{slovak.dtx}
97 % \changes{slovak-1.0}{1992/07/15}{First version}
98 % \changes{slovak-1.2}{1994/02/27}{Update for \LaTeXe}
99 % \changes{slovak-1.2d}{1994/06/26}{Removed the use of \cs{filedate}
100 %    and moved identification after the loading of \file{babel.def}}
101 % \changes{slovak-1.2i}{1996/10/10}{Replaced \cs{undefined} with
102 %    \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
103 %    with \LaTeX, moved the definition of \cs{atcatcode} right to the
104 %    beginning.}
105 % \changes{slovak-1.3a}{2004/02/20}{Added contributed shorthand
106 %    definitions} 
107 % \changes{slovak-3.0}{2005/09/10}{Implemented the functionality of
108 %    \CS\LaTeX's slovak.sty.  The version number was bumped to 3.0
109 %    to minimize confusion by being higher than the last version
110 %    of \CS\LaTeX.}
112 %  \section{The Slovak language}
114 %    The file \file{\filename}\footnote{The file described in this
115 %    section has version number \fileversion\ and was last revised on
116 %    \filedate.  It was originally written by Jana Chlebikova
117 %    (\texttt{chlebik@euromath.dk}) and modified by Tobias Schlemmer
118 %    (\texttt{Tobias.Schlemmer@web.de}). It was then rewritten by
119 %    Petr Tesa\v r\'ik (\texttt{babel@tesarici.cz}).} defines all the
120 %    language-specific macros for the Slovak language.
122 %    For this language the macro |\q| is defined. It was used with the
123 %    letters (\texttt{t}, \texttt{d}, \texttt{l}, and \texttt{L}) and
124 %    adds a \texttt{'} to them to simulate a `hook' that should be
125 %    there.  The result looks like t\kern-2pt\char'47. Since the the T1
126 %    font encoding has the corresponding characters it is mapped to |\v|.
127 %    Therefore we recommend using T1 font encoding. If you don't want to
128 %    use this encoding, please, feel free to redefine |\q| in your file.
129 %    I think babel will honour this |;-)|.
131 %    For this language the characters |"|, |'| and |^| are made
132 %    active. In table~\ref{tab:slovak-quote} an overview is given of
133 %    its purpose. Also the vertical placement of the
134 %    umlaut can be controlled this way.
136 %    \begin{table}[htb]
137 %     \begin{center}
138 %     \begin{tabular}{lp{8cm}}
139 %      |"a| & |\"a|, also implemented for the other
140 %                  lowercase and uppercase vowels.                 \\
141 %      |^d| & |\q d|, also implemented for l, t and L.             \\
142 %      |^c| & |\v c|, also implemented for C, D, N, n, T, Z and z. \\
143 %      |^o| & |\^o|, also implemented for O.                       \\
144 %      |'a| & |\'a|, also implemented for the other lowercase and
145 %                    uppercase l, r, y and vowels.                 \\
146 %      \verb="|= & disable ligature at this position.              \\
147 %      |"-| & an explicit hyphen sign, allowing hyphenation
148 %             in the rest of the word.                             \\
149 %      |""| & like |"-|, but producing no hyphen sign
150 %             (for compund words with hyphen, e.g.\ |x-""y|).      \\
151 %      |"~| & for a compound word mark without a breakpoint.       \\
152 %      |"=| & for a compound word mark with a breakpoint, allowing
153 %             hyphenation in the composing words.                  \\
154 %      |"`| & for German left double quotes (looks like ,,).       \\
155 %      |"'| & for German right double quotes.                      \\
156 %      |"<| & for French left double quotes (similar to $<<$).     \\
157 %      |">| & for French right double quotes (similar to $>>$).    \\
158 %     \end{tabular}
159 %     \caption{The extra definitions made
160 %              by \file{slovak.ldf}}\label{tab:slovak-quote}
161 %     \end{center}
162 %    \end{table}
164 %    The quotes in table~\ref{tab:slovak-quote} can also be typeset by
165 %    using the commands in table~\ref{tab:smore-quote}.
166 %    \begin{table}[htb]
167 %     \begin{center}
168 %     \begin{tabular}{lp{8cm}}
169 %      |\glqq| & for German left double quotes (looks like ,,).   \\
170 %      |\grqq| & for German right double quotes (looks like ``).  \\
171 %      |\glq|  & for German left single quotes (looks like ,).    \\
172 %      |\grq|  & for German right single quotes (looks like `).   \\
173 %      |\flqq| & for French left double quotes (similar to $<<$). \\
174 %      |\frqq| & for French right double quotes (similar to $>>$).\\
175 %      |\flq|  & for (French) left single quotes (similar to $<$).  \\
176 %      |\frq|  & for (French) right single quotes (similar to $>$). \\
177 %      |\dq|   & the original quotes character (|"|).        \\
178 %      |\sq|   & the original single quote (|'|).            \\
179 %     \end{tabular}
180 %     \caption{More commands which produce quotes, defined
181 %              by \file{slovak.ldf}}\label{tab:smore-quote}
182 %     \end{center}
183 %    \end{table}
185 %  \subsection{Compatibility}
187 %    Great care has been taken to ensure backward compatibility with
188 %    \CS\LaTeX.  In particular, documents which load this file with
189 %    |\usepackage{slovak}| should produce identical output with no
190 %    modifications to the source.  Additionally, all the \CS\LaTeX{}
191 %    options are recognized:
193 %    \label{tab:slovak-options}
194 %    \begin{list}{}
195 %     {\def\makelabel#1{\sbox0{\Lopt{#1}}%
196 %        \ifdim\wd0>\labelwidth
197 %          \setbox0\vbox{\box0\hbox{}} \wd0=0pt \fi
198 %        \box0\hfil}
199 %      \setlength{\labelwidth}{2\parindent}
200 %      \setlength{\leftmargin}{2\parindent}
201 %      \setlength{\rightmargin}{\parindent}}
202 %     \item[IL2, T1, OT1]
203 %       These options set the default font encoding.  Please note
204 %       that their use is deprecated. You should use the |fontenc|
205 %       package to select font encoding.
207 %     \item[split, nosplit]
208 %       These options control whether hyphenated words are
209 %       automatically split according to Slovak typesetting rules.
210 %       With the \Lopt{split} option ``je-li'' is hyphenated as
211 %       ``je-/-li''. The \Lopt{nosplit} option disables this behavior.
213 %       The use of this option is strongly discouraged, as it breaks
214 %       too many common things---hyphens cannot be used in labels,
215 %       negative arguments to \TeX{} primitives will not work in
216 %       horizontal mode (use \cs{minus} as a workaround), and there are
217 %       a few other peculiarities with using this mode.
219 %     \item[nocaptions]
221 %       This option was used in \CS\LaTeX{} to set up Czech/Slovak
222 %       typesetting rules, but leave the original captions and dates.
223 %       The recommended way to achieve this is to use English as the main
224 %       language of the document and use the environment |otherlanguage*|
225 %       for Czech text.
227 %     \item[olduv]
228 %       There are two version of \cs{uv}.  The older one allows the use
229 %       of \cs{verb} inside the quotes but breaks any respective kerning
230 %       with the quotes (like that in \CS{} fonts).  The newer one honors
231 %       the kerning in the font but does not allow \cs{verb} inside the
232 %       quotes.
234 %       The new version is used by default in \LaTeXe{} and the old version
235 %       is used with plain \TeX.  You may use \Lopt{olduv} to override the
236 %       default in \LaTeXe.
237 %       
238 %     \item[cstex]
239 %       This option was used to include the commands \cs{csprimeson} and
240 %       \cs{csprimesoff}.  Since these commands are always included now,
241 %       it has been removed and the empty definition lasts for compatibility.
242 %    \end{list}
244 % \StopEventually{}
246 %  \subsection{Implementation}
248 %    The macro |\LdfInit| takes care of preventing that this file is
249 %    loaded more than once, checking the category code of the
250 %    \texttt{@} sign, etc.
251 % \changes{slovak-1.2i}{1996/11/03}{Now use \cs{LdfInit} to perform
252 %    initial checks} 
253 %    \begin{macrocode}
254 %<*code>
255 \LdfInit\CurrentOption{date\CurrentOption}
256 %    \end{macrocode}
258 %    When this file is read as an option, i.e. by the |\usepackage|
259 %    command, \texttt{slovak} will be an `unknown' language in which
260 %    case we have to make it known. So we check for the existence of
261 %    |\l@slovak| to see whether we have to do something here.
263 % \changes{slovak-1.2d}{1994/06/26}{Now use \cs{@nopatterns} to
264 %    produce the warning}
265 %    \begin{macrocode}
266 \ifx\l@slovak\@undefined
267     \@nopatterns{Slovak}
268     \adddialect\l@slovak0\fi
269 %    \end{macrocode}
271 %    We need to define these macros early in the process.
273 %    \begin{macrocode}
274 \def\cs@iltw@{IL2}
275 \newif\ifcs@splithyphens
276 \cs@splithyphensfalse
277 %    \end{macrocode}
279 %    If Babel is not loaded, we provide compatibility with \CS\LaTeX.
280 %    However, if macro \cs{@ifpackageloaded} is not defined, we assume
281 %    to be loaded from plain and provide compatibility with csplain.
282 %    Of course, this does not work well with \LaTeX$\:$2.09, but I
283 %    doubt anyone will ever want to use this file with \LaTeX$\:$2.09.
285 %    \begin{macrocode}
286 \ifx\@ifpackageloaded\@undefined
287   \let\cs@compat@plain\relax
288   \message{csplain compatibility mode}
289 \else
290   \@ifpackageloaded{babel}{}{%
291     \let\cs@compat@latex\relax
292     \message{cslatex compatibility mode}}
294 \ifx\cs@compat@latex\relax
295   \ProvidesPackage{slovak}[2008/07/06 v3.1a CSTeX Slovak style]
296 %    \end{macrocode}
298 %    Declare \CS\LaTeX{} options (see also the descriptions on page
299 %    \pageref{tab:slovak-options}).
301 %    \begin{macrocode}
302   \DeclareOption{IL2}{\def\encodingdefault{IL2}}
303   \DeclareOption {T1}{\def\encodingdefault {T1}}
304   \DeclareOption{OT1}{\def\encodingdefault{OT1}}
305   \DeclareOption{nosplit}{\cs@splithyphensfalse}
306   \DeclareOption{split}{\cs@splithyphenstrue}
307   \DeclareOption{nocaptions}{\let\cs@nocaptions=\relax}
308   \DeclareOption{olduv}{\let\cs@olduv=\relax}
309   \DeclareOption{cstex}{\relax}
310 %    \end{macrocode}
312 %    Make |IL2| encoding the default.  This can be overriden with
313 %    the other font encoding options.
314 %    \begin{macrocode}
315   \ExecuteOptions{\cs@iltw@}
316 %    \end{macrocode}
318 %    Now, process the user-supplied options.
319 %    \begin{macrocode}
320   \ProcessOptions
321 %    \end{macrocode}
323 %    Standard \LaTeXe{} does not include the IL2 encoding in the format.
324 %    The encoding can be loaded later using the fontenc package, but
325 %    \CS\LaTeX{} included IL2 by default.  This means existing documents
326 %    for \CS\LaTeX{} do not load that package, so load the encoding
327 %    ourselves in compatibility mode.
329 %    \begin{macrocode}
330   \ifx\encodingdefault\cs@iltw@
331     \input il2enc.def
332   \fi
333 %    \end{macrocode}
335 %    Restore the definition of \cs{CurrentOption}, clobbered by processing
336 %    the options.
338 %    \begin{macrocode}
339   \def\CurrentOption{slovak}
341 %    \end{macrocode}
343 %    The next step consists of defining commands to switch to (and
344 %    from) the Slovak language.
346 %  \begin{macro}{\captionsslovak}
347 %    The macro \cs{captionsslovak} defines all strings used in the four
348 %    standard documentclasses provided with \LaTeX.
349 % \changes{slovak-1.2g}{1995/07/04}{Added \cs{proofname} for
350 %    AMS-\LaTeX}
351 % \changes{slovak-1.2k}{1999/02/28}{Repaired a few spelling mistakes}
352 % \changes{slovak-1.2l}{2000/09/20}{Added \cs{glossaryname}}
353 % \changes{slovak-3.0}{2005/12/22}{Updated some translations.  Former
354 %    translations were: `\'Uvod' for \cs{prefacename}, `Referencie' for
355 %    \cs{refname}, `Index' for \cs{indexname}, `Obr\'azok' for
356 %    \cs{figurename}, `Pr\'ilohy' for \cs{enclname}, `CC' for \cs{ccname},
357 %    `Komu' for \cs{headtoname}, `Strana' for \cs{pagename}}
358 %    \begin{macrocode}
359 \@namedef{captions\CurrentOption}{%
360   \def\prefacename{Predhovor}%
361   \def\refname{Literat\'ura}%
362   \def\abstractname{Abstrakt}%
363   \def\bibname{Literat\'ura}%
364   \def\chaptername{Kapitola}%
365   \def\appendixname{Dodatok}%
366   \def\contentsname{Obsah}%
367   \def\listfigurename{Zoznam obr\'azkov}%
368   \def\listtablename{Zoznam tabuliek}%
369   \def\indexname{Register}%
370   \def\figurename{Obr.}%
371   \def\tablename{Tabu\v{l}ka}%
372   \def\partname{\v{C}as\v{t}}%
373   \def\enclname{Pr\'{\i}loha}%
374   \def\ccname{cc.}%
375   \def\headtoname{Pre}%
376   \def\pagename{Str.}%
377   \def\seename{vi\v{d}}%
378   \def\alsoname{vi\v{d} tie\v{z}}%
379   \def\proofname{D\^okaz}%
380   \def\glossaryname{Slovn\'{\i}k}%
381   }%
382 %    \end{macrocode}
383 %  \end{macro}
385 %  \begin{macro}{\dateslovak}
386 %    The macro \cs{dateslovak} redefines the command \cs{today}
387 %    to produce Slovak dates.
388 % \changes{slovak-1.2j}{1997/10/01}{Use \cs{edef} to define
389 %    \cs{today} to save memory}
390 % \changes{slovak-1.2j}{1998/03/28}{use \cs{def} instead of \cs{edef}}
391 % \changes{slovak-1.2k}{1999/02/28}{Repaired a spelling mistake}
392 %    \begin{macrocode}
393 \@namedef{date\CurrentOption}{%
394   \def\today{\number\day.~\ifcase\month\or
395     janu\'ara\or febru\'ara\or marca\or apr\'{\i}la\or m\'aja\or
396     j\'una\or j\'ula\or augusta\or septembra\or okt\'obra\or
397     novembra\or decembra\fi
398     \space \number\year}}
399 %    \end{macrocode}
400 %  \end{macro}
402 %  \begin{macro}{\extrasslovak}
403 %  \begin{macro}{\noextrasslovak}
404 %    The macro \cs{extrasslovak} will perform all the extra definitions
405 %    needed for the Slovak language. The macro \cs{noextrasslovak} is
406 %    used to cancel the actions of \cs{extrasslovak}.
408 %    For Slovak texts \cs{frenchspacing} should be in effect.  Language
409 %    group for shorthands is also set here.
410 % \changes{slovak-3.0}{1995/04/21}{now use \cs{bbl@frenchspacing} and
411 %    \cs{bbl@nonfrenchspacing}}
412 % \changes{slovak-3.1}{2006/10/07}{move \cs{languageshorthands} here,
413 %    so that the language group is always initialized correctly}
414 %    \begin{macrocode}
415 \expandafter\addto\csname extras\CurrentOption\endcsname{%
416   \bbl@frenchspacing
417   \languageshorthands{slovak}}
418 \expandafter\addto\csname noextras\CurrentOption\endcsname{%
419   \bbl@nonfrenchspacing}
420 %    \end{macrocode}
422 % \changes{slovak-1.2e}{1995/05/28}{Use \LaTeX's \cs{v} accent
423 %    command}
424 %    \begin{macrocode}
425 \expandafter\addto\csname extras\CurrentOption\endcsname{%
426   \babel@save\q\let\q\v}
427 %    \end{macrocode}
429 %    For Slovak three characters are used to define shorthands, they
430 %    need to be made active.
431 % \changes{slovak-1.3a}{2004/02/20}{Make three characters available
432 %    for shorthands}
433 %    \begin{macrocode}
434 \ifx\cs@compat@latex\relax\else
435   \initiate@active@char{^}
436   \addto\extrasslovak{\bbl@activate{^}}
437   \addto\noextrasslovak{\bbl@deactivate{^}}
438   \initiate@active@char{"}
439   \addto\extrasslovak{\bbl@activate{"}\umlautlow}
440   \addto\noextrasslovak{\bbl@deactivate{"}\umlauthigh}
441   \initiate@active@char{'}
442   \@ifpackagewith{babel}{activeacute}{%
443     \addto\extrasslovak{\bbl@activate{'}}
444     \addto\noextrasslovak{\bbl@deactivate{'}}%
445     }{}
447 %    \end{macrocode}
448 %  \end{macro}
449 %  \end{macro}
451 %  \begin{macro}{\sq}
452 %  \begin{macro}{\dq}
453 %    We save the original single and double quote characters in
454 %    \cs{sq} and \cs{dq} to make them available later.  The math
455 %    accent |\"| can now be typed as |"|.
456 %    \begin{macrocode}
457 \begingroup\catcode`\"=12\catcode`\'=12
458 \def\x{\endgroup
459   \def\sq{'}
460   \def\dq{"}}
462 %    \end{macrocode}
463 %  \end{macro}
464 %  \end{macro}
466 % \changes{slovak-1.2b}{1994/06/04}{Added setting of left- and
467 %    righthyphenmin}
469 %    The slovak hyphenation patterns should be used with
470 %    |\lefthyphenmin| set to~2 and |\righthyphenmin| set to~3.
471 % \changes{slovak-1.2e}{1995/05/28}{Now use \cs{slovakhyphenmins}}
472 % \changes{slovak-1.2l}{2000/09/22}{Now use \cs{providehyphenmins} to
473 %    provide a default value}
474 % \changes{slovak-3.0}{2005/12/22}{Changed default \cs{righthyphenmin}
475 %    to 3 characters.}
476 %    \begin{macrocode}
477 \providehyphenmins{\CurrentOption}{\tw@\thr@@}
478 %    \end{macrocode}
480 %    In order to prevent problems with the active |^| we add a
481 %    shorthand on system level which expands to a `normal |^|.
482 %    \begin{macrocode}
483 \ifx\cs@compat@latex\relax\else
484   \declare@shorthand{system}{^}{\csname normal@char\string^\endcsname}
485 %    \end{macrocode}
487 %    Now we can define the doublequote macros: the umlauts,
488 %    \begin{macrocode}
489   \declare@shorthand{slovak}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}}
490   \declare@shorthand{slovak}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}}
491   \declare@shorthand{slovak}{"u}{\textormath{\"{u}\allowhyphens}{\ddot u}}
492   \declare@shorthand{slovak}{"A}{\textormath{\"{A}\allowhyphens}{\ddot A}}
493   \declare@shorthand{slovak}{"O}{\textormath{\"{O}\allowhyphens}{\ddot O}}
494   \declare@shorthand{slovak}{"U}{\textormath{\"{U}\allowhyphens}{\ddot U}}
495 %    \end{macrocode}
496 %    tremas,
497 %    \begin{macrocode}
498   \declare@shorthand{slovak}{"e}{\textormath{\"{e}\allowhyphens}{\ddot e}}
499   \declare@shorthand{slovak}{"E}{\textormath{\"{E}\allowhyphens}{\ddot E}}
500   \declare@shorthand{slovak}{"i}{\textormath{\"{\i}\allowhyphens}%
501                                 {\ddot\imath}}
502   \declare@shorthand{slovak}{"I}{\textormath{\"{I}\allowhyphens}{\ddot I}}
503 %    \end{macrocode}
504 %    other slovak characters
505 %    \begin{macrocode}
506   \declare@shorthand{slovak}{^c}{\textormath{\v{c}\allowhyphens}{\check{c}}}
507   \declare@shorthand{slovak}{^d}{\textormath{\q{d}\allowhyphens}{\check{d}}}
508   \declare@shorthand{slovak}{^l}{\textormath{\q{l}\allowhyphens}{\check{l}}}
509   \declare@shorthand{slovak}{^n}{\textormath{\v{n}\allowhyphens}{\check{n}}}
510   \declare@shorthand{slovak}{^o}{\textormath{\^{o}\allowhyphens}{\hat{o}}}
511   \declare@shorthand{slovak}{^s}{\textormath{\v{s}\allowhyphens}{\check{s}}}
512   \declare@shorthand{slovak}{^t}{\textormath{\q{t}\allowhyphens}{\check{t}}}
513   \declare@shorthand{slovak}{^z}{\textormath{\v{z}\allowhyphens}{\check{z}}}
514   \declare@shorthand{slovak}{^C}{\textormath{\v{C}\allowhyphens}{\check{C}}}
515   \declare@shorthand{slovak}{^D}{\textormath{\v{D}\allowhyphens}{\check{D}}}
516   \declare@shorthand{slovak}{^L}{\textormath{\q{L}\allowhyphens}{\check{L}}}
517   \declare@shorthand{slovak}{^N}{\textormath{\v{N}\allowhyphens}{\check{N}}}
518   \declare@shorthand{slovak}{^O}{\textormath{\^{O}\allowhyphens}{\hat{O}}}
519   \declare@shorthand{slovak}{^S}{\textormath{\v{S}\allowhyphens}{\check{S}}}
520   \declare@shorthand{slovak}{^T}{\textormath{\v{T}\allowhyphens}{\check{T}}}
521   \declare@shorthand{slovak}{^Z}{\textormath{\v{Z}\allowhyphens}{\check{Z}}}
522 %    \end{macrocode}
523 %     acute accents,
524 %    \begin{macrocode}
525   \@ifpackagewith{babel}{activeacute}{%
526     \declare@shorthand{slovak}{'a}{\textormath{\'a\allowhyphens}{^{\prime}a}}
527     \declare@shorthand{slovak}{'e}{\textormath{\'e\allowhyphens}{^{\prime}e}}
528     \declare@shorthand{slovak}{'i}{\textormath{\'\i{}\allowhyphens}{^{\prime}i}}
529     \declare@shorthand{slovak}{'l}{\textormath{\'l\allowhyphens}{^{\prime}l}}
530     \declare@shorthand{slovak}{'o}{\textormath{\'o\allowhyphens}{^{\prime}o}}
531     \declare@shorthand{slovak}{'r}{\textormath{\'r\allowhyphens}{^{\prime}r}}
532     \declare@shorthand{slovak}{'u}{\textormath{\'u\allowhyphens}{^{\prime}u}}
533     \declare@shorthand{slovak}{'y}{\textormath{\'y\allowhyphens}{^{\prime}y}}
534     \declare@shorthand{slovak}{'A}{\textormath{\'A\allowhyphens}{^{\prime}A}}
535     \declare@shorthand{slovak}{'E}{\textormath{\'E\allowhyphens}{^{\prime}E}}
536     \declare@shorthand{slovak}{'I}{\textormath{\'I\allowhyphens}{^{\prime}I}}
537     \declare@shorthand{slovak}{'L}{\textormath{\'L\allowhyphens}{^{\prime}l}}
538     \declare@shorthand{slovak}{'O}{\textormath{\'O\allowhyphens}{^{\prime}O}}
539     \declare@shorthand{slovak}{'R}{\textormath{\'R\allowhyphens}{^{\prime}R}}
540     \declare@shorthand{slovak}{'U}{\textormath{\'U\allowhyphens}{^{\prime}U}}
541     \declare@shorthand{slovak}{'Y}{\textormath{\'Y\allowhyphens}{^{\prime}Y}}
542     \declare@shorthand{slovak}{''}{%
543       \textormath{\textquotedblright}{\sp\bgroup\prim@s'}}
544     }{}
545   %    \end{macrocode}
546 %    and some additional commands:
547 %    \begin{macrocode}
548   \declare@shorthand{slovak}{"-}{\nobreak\-\bbl@allowhyphens}
549   \declare@shorthand{slovak}{"|}{%
550     \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}%
551                 \bbl@allowhyphens}{}}
552   \declare@shorthand{slovak}{""}{\hskip\z@skip}
553   \declare@shorthand{slovak}{"~}{\textormath{\leavevmode\hbox{-}}{-}}
554   \declare@shorthand{slovak}{"=}{\cs@splithyphen}
556 %    \end{macrocode}
558 %  \begin{macro}{\v}
559 %    \LaTeX's normal |\v| accent places a caron over the letter that
560 %    follows it (\v{o}). This is not what we want for the letters d,
561 %    t, l and L; for those the accent should change shape. This is
562 %    acheived by the following.
563 %    \begin{macrocode}
564 \AtBeginDocument{%
565   \DeclareTextCompositeCommand{\v}{OT1}{t}{%
566     t\kern-.23em\raise.24ex\hbox{'}}
567   \DeclareTextCompositeCommand{\v}{OT1}{d}{%
568     d\kern-.13em\raise.24ex\hbox{'}}
569   \DeclareTextCompositeCommand{\v}{OT1}{l}{\lcaron{}}
570   \DeclareTextCompositeCommand{\v}{OT1}{L}{\Lcaron{}}}
571 %    \end{macrocode}
573 %  \begin{macro}{\lcaron}
574 %  \begin{macro}{\Lcaron}
575 %    For the letters \texttt{l} and \texttt{L} we want to disinguish
576 %    between normal fonts and monospaced fonts.
577 %    \begin{macrocode}
578 \def\lcaron{%
579   \setbox0\hbox{M}\setbox\tw@\hbox{i}%
580   \ifdim\wd0>\wd\tw@\relax
581     l\kern-.13em\raise.24ex\hbox{'}\kern-.11em%
582   \else
583     l\raise.45ex\hbox to\z@{\kern-.35em '\hss}%
584   \fi}
585 \def\Lcaron{%
586   \setbox0\hbox{M}\setbox\tw@\hbox{i}%
587   \ifdim\wd0>\wd\tw@\relax
588     L\raise.24ex\hbox to\z@{\kern-.28em'\hss}%
589   \else
590     L\raise.45ex\hbox to\z@{\kern-.40em '\hss}%
591   \fi}
592 %    \end{macrocode}
593 %  \end{macro}
594 %  \end{macro}
595 %  \end{macro}
597 %    Initialize active quotes.  \CS\LaTeX{} provides a way of
598 %    converting English-style quotes into Slovak-style ones.  Both
599 %    single and double quotes are affected, i.e. |``text''| is
600 %    converted to something like |,,text``| and |`text'| is converted
601 %    to |,text`|.  This conversion can be switched on and off with
602 %    \cs{csprimeson} and \cs{csprimesoff}.\footnote{By the way, the
603 %    names of these macros are misleading, because the handling of
604 %    primes in math mode is rather marginal, the most important thing
605 %    being the handling of quotes\ldots}
607 %    These quotes present various troubles, e.g. the kerning is broken,
608 %    apostrophes are converted to closing single quote, some primitives
609 %    are broken (most notably the |\catcode`\|\meta{char} syntax will
610 %    not work any more), and writing them to \file{.aux} files cannot
611 %    be handled correctly.  For these reasons, these commands are only
612 %    available in \CS\LaTeX{} compatibility mode.
614 %    \begin{macrocode}
615 \ifx\cs@compat@latex\relax
616   \let\cs@ltxprim@s\prim@s
617   \def\csprimeson{%
618     \catcode``\active \catcode`'\active \let\prim@s\bbl@prim@s}
619   \def\csprimesoff{%
620     \catcode``12 \catcode`'12 \let\prim@s\cs@ltxprim@s}
621   \begingroup\catcode``\active
622   \def\x{\endgroup
623     \def`{\futurelet\cs@next\cs@openquote}
624     \def\cs@openquote{%
625       \ifx`\cs@next \expandafter\cs@opendq
626       \else \expandafter\clq
627       \fi}%
628   }\x
629   \begingroup\catcode`'\active
630   \def\x{\endgroup
631     \def'{\textormath{\futurelet\cs@next\cs@closequote}
632                      {^\bgroup\prim@s}}
633     \def\cs@closequote{%
634       \ifx'\cs@next \expandafter\cs@closedq
635       \else \expandafter\crq
636       \fi}%
637   }\x
638   \def\cs@opendq{\clqq\let\cs@next= }
639   \def\cs@closedq{\crqq\let\cs@next= }
640 %    \end{macrocode}
642 %    The way I recommend for typesetting quotes in Slovak documents
643 %    is to use shorthands similar to those used in German.
644 %    
645 % \changes{3.0}{2006/04/21}{|"`| and |"'| changed from German quotes
646 %   to Slovak quotes}
647 %    \begin{macrocode}
648 \else
649   \declare@shorthand{slovak}{"`}{\clqq}
650   \declare@shorthand{slovak}{"'}{\crqq}
651   \declare@shorthand{slovak}{"<}{\flqq}
652   \declare@shorthand{slovak}{">}{\frqq}
654 %    \end{macrocode}
656 %  \begin{macro}{\clqq}
657 %    This is the CS opening quote, which is similar to the German
658 %    quote (\cs{glqq}) but the kerning is different.
660 %    For the OT1 encoding, the quote is constructed from the right
661 %    double quote (i.e. the ``Opening quotes'' character) by moving
662 %    it down to the baseline and shifting it to the right, or to the
663 %    left if italic correction is positive.
665 %    For T1, the ``German Opening quotes'' is used.  It is moved to
666 %    the right and the total width is enlarged.  This is done in an
667 %    attempt to minimize the difference between the OT1 and T1
668 %    versions.
670 % \changes{3.0}{2006/04/20}{Added \cs{leavevmode} to allow an opening
671 %   quote at the beginning of a paragraph}
672 %    \begin{macrocode}
673 \ProvideTextCommand{\clqq}{OT1}{%
674   \set@low@box{\textquotedblright}%
675   \setbox\@ne=\hbox{l\/}\dimen\@ne=\wd\@ne
676   \setbox\@ne=\hbox{l}\advance\dimen\@ne-\wd\@ne
677   \leavevmode
678   \ifdim\dimen\@ne>\z@\kern-.1em\box\z@\kern.1em
679     \else\kern.1em\box\z@\kern-.1em\fi\allowhyphens}
680 \ProvideTextCommand{\clqq}{T1}
681   {\kern.1em\quotedblbase\kern-.0158em\relax}
682 \ProvideTextCommandDefault{\clqq}{\UseTextSymbol{OT1}\clqq}
683 %    \end{macrocode}
684 %  \end{macro}
686 %  \begin{macro}{\crqq}
687 %    For OT1, the CS closing quote is basically the same as
688 %    \cs{grqq}, only the \cs{textormath} macro is not used, because
689 %    as far as I know, \cs{grqq} does not work in math mode anyway.
691 %    For T1, the character is slightly wider and shifted to the
692 %    right to match its OT1 counterpart.
694 %    \begin{macrocode}
695 \ProvideTextCommand{\crqq}{OT1}
696   {\save@sf@q{\nobreak\kern-.07em\textquotedblleft\kern.07em}}
697 \ProvideTextCommand{\crqq}{T1}
698   {\save@sf@q{\nobreak\kern.06em\textquotedblleft\kern.024em}}
699 \ProvideTextCommandDefault{\crqq}{\UseTextSymbol{OT1}\crqq}
700 %    \end{macrocode}
701 %  \end{macro}
703 %  \begin{macro}{\clq}
704 %  \begin{macro}{\crq}
706 %    Single CS quotes are similar to double quotes (see the
707 %    discussion above).
709 %    \begin{macrocode}
710 \ProvideTextCommand{\clq}{OT1}
711   {\set@low@box{\textquoteright}\box\z@\kern.04em\allowhyphens}
712 \ProvideTextCommand{\clq}{T1}
713   {\quotesinglbase\kern-.0428em\relax}
714 \ProvideTextCommandDefault{\clq}{\UseTextSymbol{OT1}\clq}
715 \ProvideTextCommand{\crq}{OT1}
716   {\save@sf@q{\nobreak\textquoteleft\kern.17em}}
717 \ProvideTextCommand{\crq}{T1}
718   {\save@sf@q{\nobreak\textquoteleft\kern.17em}}
719 \ProvideTextCommandDefault{\crq}{\UseTextSymbol{OT1}\crq}
720 %    \end{macrocode}
721 %  \end{macro}
722 %  \end{macro}
724 %  \begin{macro}{\uv}
725 %    There are two versions of \cs{uv}.  The older one opens a group
726 %    and uses \cs{aftergroup} to typeset the closing quotes.  This
727 %    version allows using \cs{verb} inside the quotes, because the
728 %    enclosed text is not passed as an argument, but unfortunately
729 %    it breaks any kerning with the quotes.  Although the kerning
730 %    with the opening quote could be fixed, the kerning with the
731 %    closing quote cannot.
733 %    The newer version is defined as a command with one parameter.
734 %    It preserves kerning but since the quoted text is passed as an
735 %    argument, it cannot contain \cs{verb}.
737 %    Decide which version of \cs{uv} should be used.  For sake
738 %    of compatibility, we use the older version with plain \TeX{}
739 %    and the newer version with \LaTeXe.
740 %    \begin{macrocode}
741 \ifx\cs@compat@plain\@undefined\else\let\cs@olduv=\relax\fi
742 \ifx\cs@olduv\@undefined
743   \DeclareRobustCommand\uv[1]{{\leavevmode\clqq#1\crqq}}
744 \else
745   \DeclareRobustCommand\uv{\bgroup\aftergroup\closequotes
746     \leavevmode\clqq\let\cs@next=}
747   \def\closequotes{\unskip\crqq\relax}
749 %    \end{macrocode}
750 %  \end{macro}
752 %  \begin{macro}{\cs@wordlen}
753 %    Declare a counter to hold the length of the word after the
754 %    hyphen.
756 %    \begin{macrocode}
757 \newcount\cs@wordlen
758 %    \end{macrocode}
759 %  \end{macro}
761 %  \begin{macro}{\cs@hyphen}
762 %  \begin{macro}{\cs@endash}
763 %  \begin{macro}{\cs@emdash}
764 %    Store the original hyphen in a macro. Ditto for the ligatures.
766 % \changes{slovak-3.1}{2006/10/07}{ensure correct catcode for the
767 %    saved hyphen}
768 %    \begin{macrocode}
769 \begingroup\catcode`\-12
770 \def\x{\endgroup
771   \def\cs@hyphen{-}
772   \def\cs@endash{--}
773   \def\cs@emdash{---}
774 %    \end{macrocode}
775 %  \end{macro}
776 %  \end{macro}
777 %  \end{macro}
779 %  \begin{macro}{\cs@boxhyphen}
780 %    Provide a non-breakable hyphen to be used when a compound word
781 %    is too short to be split, i.e. the second part is shorter than
782 %    \cs{righthyphenmin}.
784 %    \begin{macrocode}
785   \def\cs@boxhyphen{\hbox{-}}
786 %    \end{macrocode}
787 %  \end{macro}
789 %  \begin{macro}{\cs@splithyphen}
790 %    The macro \cs{cs@splithyphen} inserts a split hyphen, while
791 %    allowing both parts of the compound word to be hyphenated at
792 %    other places too.
794 %    \begin{macrocode}
795   \def\cs@splithyphen{\kern\z@
796     \discretionary{-}{\char\hyphenchar\the\font}{-}\nobreak\hskip\z@}
798 %    \end{macrocode}
799 %  \end{macro}
801 %  \begin{macro}{-}
802 %    To minimize the effects of activating the hyphen character,
803 %    the active definition expands to the non-active character
804 %    in all cases where hyphenation cannot occur, i.e. if not
805 %    typesetting (check \cs{protect}), not in horizontal mode,
806 %    or in inner horizontal mode.
808 %    \begin{macrocode}
809 \initiate@active@char{-}
810 \declare@shorthand{slovak}{-}{%
811   \ifx\protect\@typeset@protect
812     \ifhmode
813       \ifinner
814         \bbl@afterelse\bbl@afterelse\bbl@afterelse\cs@hyphen
815       \else
816         \bbl@afterfi\bbl@afterelse\bbl@afterelse\cs@firsthyphen
817       \fi
818     \else
819       \bbl@afterfi\bbl@afterelse\cs@hyphen
820     \fi
821   \else
822     \bbl@afterfi\cs@hyphen
823   \fi}
824 %    \end{macrocode}
825 %  \end{macro}
827 %  \begin{macro}{\cs@firsthyphen}
828 %  \begin{macro}{\cs@firsthyph@n}
829 %  \begin{macro}{\cs@secondhyphen}
830 %  \begin{macro}{\cs@secondhyph@n}
831 %    If we encounter a hyphen, check whether it is followed
832 %    by a second or a third hyphen and if so, insert the
833 %    corresponding ligature.
835 %    If we don't find a hyphen, the token found will be placed
836 %    in \cs{cs@token} for further analysis, and it will also stay
837 %    in the input.
839 %    \begin{macrocode}
840 \begingroup\catcode`\-\active
841 \def\x{\endgroup
842   \def\cs@firsthyphen{\futurelet\cs@token\cs@firsthyph@n}
843   \def\cs@firsthyph@n{%
844     \ifx -\cs@token
845       \bbl@afterelse\cs@secondhyphen
846     \else
847       \bbl@afterfi\cs@checkhyphen
848     \fi}
849   \def\cs@secondhyphen ##1{%
850     \futurelet\cs@token\cs@secondhyph@n}
851   \def\cs@secondhyph@n{%
852     \ifx -\cs@token
853       \bbl@afterelse\cs@emdash\@gobble
854     \else
855       \bbl@afterfi\cs@endash
856     \fi}
858 %    \end{macrocode}
859 %  \end{macro}
860 %  \end{macro}
861 %  \end{macro}
862 %  \end{macro}
864 %  \begin{macro}{\cs@checkhyphen}
865 %    Check that hyphenation is enabled, and if so, start analyzing
866 %    the rest of the word, i.e. initialize \cs{cs@word} and \cs{cs@wordlen}
867 %    and start processing input with \cs{cs@scanword}.
869 %    \begin{macrocode}
870 \def\cs@checkhyphen{%
871   \ifnum\expandafter\hyphenchar\the\font=`\-
872     \def\cs@word{}\cs@wordlen\z@
873     \bbl@afterelse\cs@scanword
874   \else
875     \cs@hyphen
876   \fi}
877 %    \end{macrocode}
878 %  \end{macro}
880 %  \begin{macro}{\cs@scanword}
881 %  \begin{macro}{\cs@continuescan}
882 %  \begin{macro}{\cs@gettoken}
883 %  \begin{macro}{\cs@gett@ken}
884 %    Each token is first analyzed with \cs{cs@scanword}, which expands
885 %    the token and passes the first token of the result to
886 %    \cs{cs@gett@ken}. If the expanded token is not identical to the
887 %    unexpanded one, presume that it might be expanded further and
888 %    pass it back to \cs{cs@scanword} until you get an unexpandable
889 %    token. Then analyze it in \cs{cs@examinetoken}.
891 %    The \cs{cs@continuescan} macro does the same thing as
892 %    \cs{cs@scanword}, but it does not require the first token to be
893 %    in \cs{cs@token} already.
895 %    \begin{macrocode}
896 \def\cs@scanword{\let\cs@lasttoken= \cs@token\expandafter\cs@gettoken}
897 \def\cs@continuescan{\let\cs@lasttoken\@undefined\expandafter\cs@gettoken}
898 \def\cs@gettoken{\futurelet\cs@token\cs@gett@ken}
899 \def\cs@gett@ken{%
900   \ifx\cs@token\cs@lasttoken \def\cs@next{\cs@examinetoken}%
901   \else \def\cs@next{\cs@scanword}%
902   \fi \cs@next}
903 %    \end{macrocode}
904 %  \end{macro}
905 %  \end{macro}
906 %  \end{macro}
907 %  \end{macro}
909 %  \begin{macro}{cs@examinetoken}
910 %    Examine the token in \cs{cs@token}:
912 %    \begin{itemize}
913 %    \item
914 %      If it is a letter (catcode 11) or other (catcode 12), add it
915 %      to \cs{cs@word} with \cs{cs@addparam}.
917 %    \item
918 %      If it is the \cs{char} primitive, add it with \cs{cs@expandchar}.
920 %    \item
921 %      If the token starts or ends a group, ignore it with
922 %      \cs{cs@ignoretoken}.
924 %    \item
925 %      Otherwise analyze the meaning of the token with
926 %      \cs{cs@checkchardef} to detect primitives defined with
927 %      \cs{chardef}.
929 %    \end{itemize}
931 %    \begin{macrocode}
932 \def\cs@examinetoken{%
933   \ifcat A\cs@token
934     \def\cs@next{\cs@addparam}%
935   \else\ifcat 0\cs@token
936     \def\cs@next{\cs@addparam}%
937   \else\ifx\char\cs@token
938     \def\cs@next{\afterassignment\cs@expandchar\let\cs@token= }%
939   \else\ifx\bgroup\cs@token
940     \def\cs@next{\cs@ignoretoken\bgroup}%
941   \else\ifx\egroup\cs@token
942     \def\cs@next{\cs@ignoretoken\egroup}%
943   \else\ifx\begingroup\cs@token
944     \def\cs@next{\cs@ignoretoken\begingroup}%
945   \else\ifx\endgroup\cs@token
946     \def\cs@next{\cs@ignoretoken\endgroup}%
947   \else
948     \def\cs@next{\expandafter\expandafter\expandafter\cs@checkchardef
949       \expandafter\meaning\expandafter\cs@token\string\char\end}%
950   \fi\fi\fi\fi\fi\fi\fi\cs@next}
951 %    \end{macrocode}
952 %  \end{macro}
954 %  \begin{macro}{\cs@checkchardef}
955 %    Check the meaning of a token and if it is a primitive defined
956 %    with \cs{chardef}, pass it to \cs{\cs@examinechar} as if it were
957 %    a \cs{char} sequence. Otherwise, there are no more word characters,
958 %    so do the final actions in \cs{cs@nosplit}.
960 %    \begin{macrocode}
961 \expandafter\def\expandafter\cs@checkchardef
962   \expandafter#\expandafter1\string\char#2\end{%
963     \def\cs@token{#1}%
964     \ifx\cs@token\@empty
965       \def\cs@next{\afterassignment\cs@examinechar\let\cs@token= }%
966     \else
967       \def\cs@next{\cs@nosplit}%
968     \fi \cs@next}
969 %    \end{macrocode}
970 %  \end{macro}
972 %  \begin{macro}{\cs@ignoretoken}
973 %    Add a token to \cs{cs@word} but do not update the \cs{cs@wordlen}
974 %    counter. This is mainly useful for group starting and ending
975 %    primitives, which need to be preserved, but do not affect the word
976 %    boundary.
978 %    \begin{macrocode}
979 \def\cs@ignoretoken#1{%
980   \edef\cs@word{\cs@word#1}%
981   \afterassignment\cs@continuescan\let\cs@token= }
982 %    \end{macrocode}
983 %  \end{macro}
985 %  \begin{macro}{cs@addparam}
986 %    Add a token to \cs{cs@word} and check its lccode. Note that
987 %    this macro can only be used for tokens which can be passed as
988 %    a parameter.
990 %    \begin{macrocode}
991 \def\cs@addparam#1{%
992   \edef\cs@word{\cs@word#1}%
993   \cs@checkcode{\lccode`#1}}
994 %    \end{macrocode}
995 %  \end{macro}
997 %  \begin{macro}{\cs@expandchar}
998 %  \begin{macro}{\cs@examinechar}
999 %    Add a \cs{char} sequence to \cs{cs@word} and check its lccode.
1000 %    The charcode is first parsed in \cs{cs@expandchar} and then the
1001 %    resulting \cs{chardef}-defined sequence is analyzed in
1002 %    \cs{cs@examinechar}.
1004 %    \begin{macrocode}
1005 \def\cs@expandchar{\afterassignment\cs@examinechar\chardef\cs@token=}
1006 \def\cs@examinechar{%
1007   \edef\cs@word{\cs@word\char\the\cs@token\space}%
1008   \cs@checkcode{\lccode\cs@token}}
1009 %    \end{macrocode}
1010 %  \end{macro}
1011 %  \end{macro}
1013 %  \begin{macro}{\cs@checkcode}
1014 %    Check the lccode of a character. If it is zero, it does not count
1015 %    to the current word, so finish it with \cs{cs@nosplit}. Otherwise
1016 %    update the \cs{cs@wordlen} counter and go on scanning the word
1017 %    with \cs{cs@continuescan}. When enough characters are gathered in
1018 %    \cs{cs@word} to allow word break, insert the split hyphen and
1019 %    finish.
1021 %    \begin{macrocode}
1022 \def\cs@checkcode#1{%
1023   \ifnum0=#1
1024     \def\cs@next{\cs@nosplit}%
1025   \else
1026     \advance\cs@wordlen\@ne
1027     \ifnum\righthyphenmin>\the\cs@wordlen
1028       \def\cs@next{\cs@continuescan}%
1029     \else
1030       \cs@splithyphen
1031       \def\cs@next{\cs@word}%
1032     \fi
1033   \fi \cs@next}
1034 %    \end{macrocode}
1035 %  \end{macro}
1037 %  \begin{macro}{\cs@nosplit}
1038 %    Insert a non-breakable hyphen followed by the saved word.
1040 %    \begin{macrocode}
1041 \def\cs@nosplit{\cs@boxhyphen\cs@word}
1042 %    \end{macrocode}
1043 %  \end{macro}
1045 %  \begin{macro}{\cs@hyphen}
1046 %    The \cs{minus} sequence can be used where the active hyphen
1047 %    does not work, e.g. in arguments to \TeX{} primitives in outer
1048 %    horizontal mode.
1050 %    \begin{macrocode}
1051 \let\minus\cs@hyphen
1052 %    \end{macrocode}
1053 %  \end{macro}
1055 %  \begin{macro}{\standardhyphens}
1056 %  \begin{macro}{\splithyphens}
1057 %    These macros control whether split hyphens are allowed in Czech
1058 %    and/or Slovak texts. You may use them in any language, but the
1059 %    split hyphen is only activated for Czech and Slovak.
1061 % \changes{slovak-3.1}{2006/10/07}{activate with split hyphens and
1062 %    deactivate with standard hyphens, not vice versa}
1063 %    \begin{macrocode}
1064 \def\standardhyphens{\cs@splithyphensfalse\cs@deactivatehyphens}
1065 \def\splithyphens{\cs@splithyphenstrue\cs@activatehyphens}
1066 %    \end{macrocode}
1067 %  \end{macro}
1068 %  \end{macro}
1070 %  \begin{macro}{\cs@splitattr}
1071 %    Now we declare the |split| language attribute.  This is
1072 %    similar to the |split| package option of cslatex, but it
1073 %    only affects Slovak, not Czech.
1075 % \changes{slovak-3.1}{2006/10/07}{attribute added}
1076 %    \begin{macrocode}
1077 \def\cs@splitattr{\babel@save\ifcs@splithyphens\splithyphens}
1078 \bbl@declare@ttribute{slovak}{split}{%
1079   \addto\extrasslovak{\cs@splitattr}}
1080 %    \end{macrocode}
1081 %  \end{macro}
1083 %  \begin{macro}{\cs@activatehyphens}
1084 %  \begin{macro}{\cs@deactivatehyphens}
1085 %    These macros are defined as \cs{relax} by default to prevent
1086 %    activating/deactivating the hyphen character. They are redefined
1087 %    when the language is switched to Czech/Slovak. At that moment
1088 %    the hyphen is also activated if split hyphens were requested with
1089 %    \cs{splithyphens}.
1091 %    When the language is de-activated, de-activate the hyphen and
1092 %    restore the bogus definitions of these macros.
1094 %    \begin{macrocode}
1095 \let\cs@activatehyphens\relax
1096 \let\cs@deactivatehyphens\relax
1097 \expandafter\addto\csname extras\CurrentOption\endcsname{%
1098   \def\cs@activatehyphens{\bbl@activate{-}}%
1099   \def\cs@deactivatehyphens{\bbl@deactivate{-}}%
1100   \ifcs@splithyphens\cs@activatehyphens\fi}
1101 \expandafter\addto\csname noextras\CurrentOption\endcsname{%
1102   \cs@deactivatehyphens
1103   \let\cs@activatehyphens\relax
1104   \let\cs@deactivatehyphens\relax}
1105 %    \end{macrocode}
1106 %  \end{macro}
1107 %  \end{macro}
1109 %  \begin{macro}{\cs@looseness}
1110 %  \begin{macro}{\looseness}
1111 %    One of the most common situations where an active hyphen will not
1112 %    work properly is the \cs{looseness} primitive. Change its definition
1113 %    so that it deactivates the hyphen if needed.
1115 %    \begin{macrocode}
1116 \let\cs@looseness\looseness
1117 \def\looseness{%
1118   \ifcs@splithyphens
1119     \cs@deactivatehyphens\afterassignment\cs@activatehyphens \fi
1120   \cs@looseness}
1121 %    \end{macrocode}
1122 %  \end{macro}
1123 %  \end{macro}
1125 %  \begin{macro}{\cs@selectlanguage}
1126 %  \begin{macro}{\cs@main@language}
1127 %    Specifying the |nocaptions| option means that captions and dates
1128 %    are not redefined by default, but they can be switched on later
1129 %    with \cs{captionsslovak} and/or \cs{dateslovak}. 
1131 %    We mimic this behavior by redefining \cs{selectlanguage}.  This
1132 %    macro is called once at the beginning of the document to set the
1133 %    main language of the document.  If this is \cs{cs@main@language},
1134 %    it disables the macros for setting captions and date.  In any
1135 %    case, it restores the original definition of \cs{selectlanguage}
1136 %    and expands it.
1138 %    The definition of \cs{selectlanguage} can be shared between Czech
1139 %    and Slovak; the actual language is stored in \cs{cs@main@language}.
1141 %    \begin{macrocode}
1142 \ifx\cs@nocaptions\@undefined\else
1143   \edef\cs@main@language{\CurrentOption}
1144   \ifx\cs@origselect\@undefined
1145     \let\cs@origselect=\selectlanguage
1146     \def\selectlanguage{%
1147       \let\selectlanguage\cs@origselect
1148       \ifx\bbl@main@language\cs@main@language
1149         \expandafter\cs@selectlanguage
1150       \else
1151         \expandafter\selectlanguage
1152       \fi}
1153     \def\cs@selectlanguage{%
1154       \cs@tempdisable{captions}%
1155       \cs@tempdisable{date}%
1156       \selectlanguage}
1157 %    \end{macrocode}
1159 %  \begin{macro}{\cs@tempdisable}
1160 %    \cs{cs@tempdisable} disables a language setup macro temporarily,
1161 %    i.e. the macro with the name of \meta{\#1}|\bbl@main@language|
1162 %    just restores the original definition and purges the saved macro
1163 %    from memory.
1165 %    \begin{macrocode}
1166     \def\cs@tempdisable#1{%
1167       \def\@tempa{cs@#1}%
1168       \def\@tempb{#1\bbl@main@language}%
1169       \expandafter\expandafter\expandafter\let
1170         \expandafter \csname\expandafter \@tempa \expandafter\endcsname
1171         \csname \@tempb \endcsname
1172       \expandafter\edef\csname \@tempb \endcsname{%
1173         \let \expandafter\noexpand \csname \@tempb \endcsname
1174           \expandafter\noexpand \csname \@tempa \endcsname
1175         \let \expandafter\noexpand\csname \@tempa \endcsname
1176           \noexpand\@undefined}}
1177 %    \end{macrocode}
1178 %  \end{macro}
1180 %    These macros are not needed, once the initialization is over.
1182 %    \begin{macrocode}
1183     \@onlypreamble\cs@main@language
1184     \@onlypreamble\cs@origselect
1185     \@onlypreamble\cs@selectlanguage
1186     \@onlypreamble\cs@tempdisable
1187   \fi
1189 %    \end{macrocode}
1190 %  \end{macro}
1191 %  \end{macro}
1193 %    The encoding of mathematical fonts should be changed to IL2.  This
1194 %    allows to use accented letter in some font families.  Besides,
1195 %    documents do not use CM fonts if there are equivalents in CS-fonts,
1196 %    so there is no need to have both bitmaps of CM-font and CS-font.
1198 %    \cs{@font@warning} and \cs{@font@info} are temporarily redefined
1199 %    to avoid annoying font warnings.
1201 %    \begin{macrocode}
1202 \ifx\cs@compat@plain\@undefined
1203 \ifx\cs@check@enc\@undefined\else
1204   \def\cs@check@enc{
1205     \ifx\encodingdefault\cs@iltw@
1206       \let\cs@warn\@font@warning \let\@font@warning\@gobble
1207       \let\cs@info\@font@info    \let\@font@info\@gobble
1208       \SetSymbolFont{operators}{normal}{\cs@iltw@}{cmr}{m}{n}
1209       \SetSymbolFont{operators}{bold}{\cs@iltw@}{cmr}{bx}{n}
1210       \SetMathAlphabet\mathbf{normal}{\cs@iltw@}{cmr}{bx}{n}
1211       \SetMathAlphabet\mathit{normal}{\cs@iltw@}{cmr}{m}{it}
1212       \SetMathAlphabet\mathrm{normal}{\cs@iltw@}{cmr}{m}{n}
1213       \SetMathAlphabet\mathsf{normal}{\cs@iltw@}{cmss}{m}{n}
1214       \SetMathAlphabet\mathtt{normal}{\cs@iltw@}{cmtt}{m}{n}
1215       \SetMathAlphabet\mathbf{bold}{\cs@iltw@}{cmr}{bx}{n}
1216       \SetMathAlphabet\mathit{bold}{\cs@iltw@}{cmr}{bx}{it}
1217       \SetMathAlphabet\mathrm{bold}{\cs@iltw@}{cmr}{bx}{n}
1218       \SetMathAlphabet\mathsf{bold}{\cs@iltw@}{cmss}{bx}{n}
1219       \SetMathAlphabet\mathtt{bold}{\cs@iltw@}{cmtt}{m}{n}
1220       \let\@font@warning\cs@warn \let\cs@warn\@undefined
1221       \let\@font@info\cs@info    \let\cs@info\@undefined
1222     \fi
1223     \let\cs@check@enc\@undefined}
1224   \AtBeginDocument{\cs@check@enc}
1227 %    \end{macrocode}
1229 %  \begin{macro}{cs@undoiltw@}
1231 %    The thing is that \LaTeXe{} core only supports the T1 encoding
1232 %    and does not bother changing the uc/lc/sfcodes when encoding
1233 %    is switched. :( However, the IL2 encoding \emph{does} change
1234 %    these codes, so if encoding is switched back from IL2, we must
1235 %    also undo the effect of this change to be compatible with
1236 %    \LaTeXe.  OK, this is not the right\textsuperscript{TM} solution
1237 %    but it works.  Cheers to Petr Ol\v s\'ak.
1239 %    \begin{macrocode}
1240 \def\cs@undoiltw@{%
1241   \uccode158=208 \lccode158=158 \sfcode158=1000
1242   \sfcode159=1000
1243   \uccode165=133 \lccode165=165 \sfcode165=1000
1244   \uccode169=137 \lccode169=169 \sfcode169=1000
1245   \uccode171=139 \lccode171=171 \sfcode171=1000
1246   \uccode174=142 \lccode174=174 \sfcode174=1000
1247   \uccode181=149
1248   \uccode185=153
1249   \uccode187=155
1250   \uccode190=0   \lccode190=0
1251   \uccode254=222 \lccode254=254 \sfcode254=1000
1252   \uccode255=223 \lccode255=255 \sfcode255=1000}
1253 %    \end{macrocode}
1254 %  \end{macro}
1256 %  \begin{macro}{@@enc@update}
1258 %    Redefine the \LaTeXe{} internal function \cs{@@enc@update} to
1259 %    change the encodings correctly.
1261 %    \begin{macrocode}
1262 \ifx\cs@enc@update\@undefined
1263 \ifx\@@enc@update\@undefined\else
1264   \let\cs@enc@update\@@enc@update
1265   \def\@@enc@update{\ifx\cf@encoding\cs@iltw@\cs@undoiltw@\fi
1266     \cs@enc@update
1267     \expandafter\ifnum\csname l@\languagename\endcsname=\the\language
1268       \expandafter\ifx
1269       \csname l@\languagename:\f@encoding\endcsname\relax
1270       \else
1271         \expandafter\expandafter\expandafter\let
1272           \expandafter\csname
1273           \expandafter l\expandafter @\expandafter\languagename
1274           \expandafter\endcsname\csname l@\languagename:\f@encoding\endcsname
1275       \fi
1276       \language=\csname l@\languagename\endcsname\relax
1277     \fi}
1278 \fi\fi
1279 %    \end{macrocode}
1280 %  \end{macro}
1282 %    The macro |\ldf@finish| takes care of looking for a
1283 %    configuration file, setting the main language to be switched on
1284 %    at |\begin{document}| and resetting the category code of
1285 %    \texttt{@} to its original value.
1286 % \changes{slovak-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to wrap up}
1287 %    \begin{macrocode}
1288 \ldf@finish\CurrentOption
1289 %</code>
1290 %    \end{macrocode}
1292 % \Finale
1294 %% \CharacterTable
1295 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
1296 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
1297 %%   Digits        \0\1\2\3\4\5\6\7\8\9
1298 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
1299 %%   Dollar        \$     Percent       \%     Ampersand     \&
1300 %%   Acute accent  \'     Left paren    \(     Right paren   \)
1301 %%   Asterisk      \*     Plus          \+     Comma         \,
1302 %%   Minus         \-     Point         \.     Solidus       \/
1303 %%   Colon         \:     Semicolon     \;     Less than     \<
1304 %%   Equals        \=     Greater than  \>     Question mark \?
1305 %%   Commercial at \@     Left bracket  \[     Backslash     \\
1306 %%   Right bracket \]     Circumflex    \^     Underscore    \_
1307 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
1308 %%   Right brace   \}     Tilde         \~}
1310 \endinput