diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/babel/italian.dtx')
-rw-r--r-- | Master/texmf-dist/source/generic/babel/italian.dtx | 857 |
1 files changed, 857 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/babel/italian.dtx b/Master/texmf-dist/source/generic/babel/italian.dtx new file mode 100644 index 00000000000..ea9899f79f2 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/italian.dtx @@ -0,0 +1,857 @@ +% \iffalse meta-comment +% +% Copyright 1989-2005 Johannes L. Braams and any individual authors +% listed elsewhere in this file. All rights reserved. +% +% This file is part of the Babel system. +% -------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Johannes Braams. +% +% The list of all files belonging to the Babel system is +% given in the file `manifest.bbl. See also `legal.bbl' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% \fi +% \CheckSum{419} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{italian.dtx} +%</dtx> +%<code>\ProvidesLanguage{italian} +%\fi +%\ProvidesFile{italian.dtx} + [2005/02/05 v1.2q Italian support from the babel system] +%\iffalse +%% File `italian.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams babel at braams.cistron.nl +%% Claudio Beccari beccari at polito.it +% +% This file is part of the babel system, it provides the source +% code for the Italian language definition file. +% The original version of this file was written by Maurizio +% Codogno, (mau@beatles.cselt.stet.it). Several features were added +% by Claudio Beccari, (beccari@polito.it). +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\langvar{$\langle \it lang \rangle$} +\newcommand*\note[1]{} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\begin{document} + \DocInput{italian.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{italian.dtx} +% +% \changes{italian-0.99}{1990/07/11}{First version, from english.doc} +% \changes{italian-1.0}{1991/04/23}{Modified for babel 3.0} +% \changes{italian-1.0a}{1991/05/23}{removed typo} +% \changes{italian-1.0b}{1991/05/29}{Removed bug found by van der Meer} +% \changes{italian-1.0e}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{italian-1.1}{1992/02/16}{Brought up-to-date with babel 3.2a} +% \changes{italian-1.2}{1994/02/09}{Update for\ LaTeXe} +% \changes{italian-1.2e}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{italian-1.2f}{1995/05/28}{Updated for babel 3.5} +% \changes{italian-1.2i}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% \changes{italian-1.2l}{1999/04/24}{Added \cs{unit}, \cs{ap}, and +% \cs{ped} macros} +% \changes{italian-1.2m}{2000/01/05}{Added support for etymological +% hyphenation} +% \changes{italian-1.2n}{2000/02/02}{Completely modified etymological +% hyphenation facility} +% \changes{italian-1.2n}{2000/05/28}{Added several commands for the +% caporali double quotes and for simplifying the accented vowel input} +% \changes{italian-1.2o}{2000/12/12}{Added \cs{glossaryname}} +% \changes{italian-1.2p}{2002/07/10}{Removed redefinition of +% \cs{add@acc} since its functionality has been introduced into the +% kernel of LaTeX 2001/06/01} +% \changes{italian-1.2q}{2005/02/05}{Added test for avoiding conflict +% with package units.sty; adjusted caporali functionality, since +% the previous one did not work with the standard (although obsolete) +% slides class file} +% \section{The Italian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. The original author is Maurizio Codogno, +% (\texttt{mau@beatles.cselt.stet.it}). It has been largely revised +% by Johannes Braams and Claudio Beccari} defines all the +% language-specific macros for the Italian language. +% +% The features of this language definition file are the following: +% \begin{enumerate} +% \item The Italian hyphenation is invoked, provided that file +% \texttt{ithyph.tex} was loaded when the \LaTeXe\ format was +% built; in case it was not, read the information coming with your +% distribution of the \TeX\ software, and the \babel\ +% documentation. +% \item The language dependent fixed words to be inserted by such +% commands as |\chapter|, |\caption|, |\tableofcontents|, +% etc. are redefined in accordance with the Italian +% typographical practice. +% \item Since Italian can be easily hyphenated and Italian practice +% allows to break a word before the last two letters, hyphenation +% parameters have been set accordingly, but a very high demerit +% value has been set in order to avoid word breaks in the +% penultimate line of a paragraph. Specifically the |\clubpenalty|, +% and the |\widowpenalty| are set to rather high values and +% |\finalhyphendemerits| is set to such a high value that +% hyphenation is prohibited between the last two lines of a +% paragraph. +% \item Some language specific shortcuts have been defined so as to +% allow etymological hyphenation, specifically |"| inserts a +% break point in any word boundary that the typesetter chooses, +% provided it is not followed by and accented letter (very unlikely +% in Italian, where compulsory accents fall only on the last and +% ending vowel of a word, but may take place with compound words +% that include foreign roots), and \verb="|= when the desired break +% point falls before an accented letter. +% \item The shortcut |""| introduces the raised (English) opening +% double quotes; this shortcut proves its usefulness when one +% reminds that the Italian keyboard misses the backtick key, and +% the backtick on a Windows based platform may be obtained only by +% pressing the \texttt{Alt} key while inputting the numerical code +% 0096; very, very annoying! +% \item The shortcuts |"<| and |">| insert the French guillemots, +% sometimes used in Italian typography; with the T1 font encoding +% the ligatures |<<| and |>>| should insert such signs directly, +% but not all the virtual fonts that claim to follow the T1 font +% encoding actually contain the guillemots; with the OT1 encoding +% the guillemots are not available and must be faked in some +% way. By using the |"<| and |">| shortcuts (even with the T1 +% encoding) the necessary tests are performed and in case the +% suitable glyphs are taken from other fonts normally available +% with any good, modern \LaTeX\ distribution. +% \item Three new specific commands |\unit|, |\ped|, and |\ap| are +% introduced so as to enable the correct composition of technical +% mathematics according to the ISO~31/XI recommendations. |\unit| +% does not get redefined if the \babel\ package is loaded \emph{after} +% the package \texttt{units.sty} whose homonymous command plays +% a different role and follows a different syntax. +% \end{enumerate} +% +% For this language a limited number of shortcuts has been defined, +% table~\ref{t:itshrtct}, some of which are used to overcome +% certain limitations of the Italian keyboard; in +% section~\ref{s:itkbd} there are other comments and hints in order +% to overcome some other keyboard limitations. +% +% \begin{table}[htb]\centering +% \begin{tabular}{cp{80mm}} +% |"| & inserts a compound word mark where hyphenation is legal; +% it allows etymological hyphenation which is recommended +% for technical terms, chemical names and the like; it +% does not work if the next character is represented with +% a control sequence or is an accented character.\\ +% \texttt{\string"\string|} +% & the same as the above without the limitation on +% characters represented with control sequences or accented +% ones.\\ +% |""| & inserts open quotes ``.\\ %^^A'' emacs matching +% |"<| & inserts open guillemots.\\ +% |">| & inserts closed guillemots.\\ +% |"/| & equivalent to |\slash| +% \end{tabular} +% \caption{Shortcuts for the Italian language}\label{t:itshrtct} +% \end{table} +% +% \StopEventually{% +% \begin{thebibliography}{1} +% \bibitem{CBec} Beccari C., ``Computer Aided Hyphenation for +% Italian and Modern Latin'', \textsf{TUGboat} vol.~13, n.~1, +% pp.~23-33 (1992). +% \bibitem{Becc2} Beccari C., ``Typesetting mathematics for science +% and technology according to ISO\,31/XI'', \textsf{TUGboat} +% vol.~18, n.~1, pp.~39-48 (1997). +% \end{thebibliography}} +% +% The macro |\LdfInit| takes care of preventing that this file is +% loaded more than once, checking the category code of the +% \texttt{@} sign, etc. +% \changes{italian-1.2i}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \changes{italian-1.2j}{1996/12/29}{Added braces around second arg of +% \cs{LdfInit}} +% \begin{macrocode} +%<*code> +\LdfInit{italian}{captionsitalian}% +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{italian} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@italian| to see whether we have to do something here. +% +% \changes{italian-1.0}{1991/04/23}{Now use \cs{adddialect} if +% language undefined} +% \changes{italian-1.0h}{1991/10/08}{Removed use of \cs{@ifundefined}} +% \changes{italian-1.1}{1992/02/16}{Added a warning when no +% hyphenation patterns were loaded.} +% \changes{italian-1.2e}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@italian\@undefined + \@nopatterns{Italian}% + \adddialect\l@italian0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Italian language. +% +% \begin{macro}{\captionsitalian} +% The macro |\captionsitalian| defines all strings used +% in the four standard document classes provided with \LaTeX. +% \changes{italian-1.0c}{1991/06/06}{Removed \cs{global} definitions} +% \changes{italian-1.0c}{1991/06/06}{\cs{pagename} should be +% \cs{headpagename}} +% \changes{italian-1.0d}{1991/07/01}{`contiene' substitued by `Allegati' +% as suggested by Marco Bozzo (\texttt{BOZZO@CERNVM}).} +% \changes{italian-1.1}{1992/02/16}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{italian-1.1}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{italian-1.2b}{1994/05/19}{Changed some of the words +% following suggestions from Claudio Beccari} +% \changes{italian-1.2g}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{italian-1.2h}{1995/07/27}{Added translation of `Proof'} +% \begin{macrocode} +\addto\captionsitalian{% + \def\prefacename{Prefazione}% + \def\refname{Riferimenti bibliografici}% + \def\abstractname{Sommario}% + \def\bibname{Bibliografia}% + \def\chaptername{Capitolo}% + \def\appendixname{Appendice}% + \def\contentsname{Indice}% + \def\listfigurename{Elenco delle figure}% + \def\listtablename{Elenco delle tabelle}% + \def\indexname{Indice analitico}% + \def\figurename{Figura}% + \def\tablename{Tabella}% + \def\partname{Parte}% + \def\enclname{Allegati}% + \def\ccname{e~p.~c.}% + \def\headtoname{Per}% + \def\pagename{Pag.}% % in Italian the abbreviation is preferred + \def\seename{vedi}% + \def\alsoname{vedi anche}% + \def\proofname{Dimostrazione}% + \def\glossaryname{Glossario}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateitalian} +% The macro |\dateitalian| redefines the command +% |\today| to produce Italian dates. +% \changes{italian-1.0c}{1991/06/06}{Removed \cs{global} definitions} +% \begin{macrocode} +\def\dateitalian{% + \def\today{\number\day~\ifcase\month\or + gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or + luglio\or agosto\or settembre\or ottobre\or novembre\or + dicembre\fi\space \number\year}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\italianhyphenmins} +% \changes{italian-1.2b}{1994/05/19}{Added setting of left and +% righthyphenmin according to Claudio Beccari's suggestion} +% +% The italian hyphenation patterns can be used with both +% |\lefthyphenmin| and |\righthyphenmin| set to~2. +% \changes{italian-1.2m}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasitalian} +% \begin{macro}{\noextrasitalian} +% +% \changes{italian-1.2b}{1994/05/19}{Added setting of club- and +% widowpenalty} +% Lower the chance that clubs or widows occur. +% \begin{macrocode} +\addto\extrasitalian{% + \babel@savevariable\clubpenalty + \babel@savevariable\widowpenalty + \clubpenalty3000\widowpenalty3000}% +% \end{macrocode} +% +% \changes{italian-1.2b}{1994/05/19}{Added setting of +% finalhyphendemerits} +% +% Never ever break a word between the last two lines of a paragraph +% in italian texts. +% \begin{macrocode} +\addto\extrasitalian{% + \babel@savevariable\finalhyphendemerits + \finalhyphendemerits50000000}% +% \end{macrocode} +% +% \changes{italian-1.2h}{1995/11/10}{Now give the apostrophe a +% lowercase code} +% \changes{italian-1.2l}{1999/04/5}{Changed example ``begl'italiani'' +% (obsolete spelling) with another, ``nell'altezza'', that behaves +% the same way} +% In order to enable the hyphenation of words such as +% ``nell'altezza'' we give the \texttt{'} a non-zero lower case +% code. When we do that \TeX\ finds the following hyphenation +% points |nel-l'al-tez-za| instead of none. +% \begin{macrocode} +\addto\extrasitalian{% + \lccode`'=`'}% +\addto\noextrasitalian{% + \lccode`'=0}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{italian-1.2m}{2000/01/05}{Support for etymological +% hyphenation} +% +% \subsection{Support for etymological hyphenation} +% +% In his article on Italian hyphenation \cite{CBec} Beccari pointed +% out that the Italian language gets hyphenated on a phonetic +% basis, although etymological hyphenation is allowed; this is in +% contrast with what happens in Latin, for example, where +% etymological hyphenation is always used. Since the patterns for +% both languages would become too complicated in order to cope with +% etymological hyphenation, in his paper Beccari proposed the +% definition of an active character `|_|' such that it could insert +% a ``soft'' discretionary hyphen at the compound word +% boundary. For several reasons that idea and the specific active +% character proved to be unpractical and was abandoned. +% +% This problem is so important with the majority of the European +% languages, that \babel\ from the very beginning developed +% the tradition of making the |"| character active so as to perform +% several actions that turned useful with every language. +% One of these actions consisted in defining the shortcut \verb="|= +% that was extensively used in German and in many other languages +% in order to insert a discretionary hyphen such that hyphenation +% would not be precluded in the rest of the word as it happens with +% the standard \TeX\ command |\-|. +% +% Meanwhile the \texttt{ec} fonts with the double Cork encoding +% (thus formerly called the \texttt{dc} fonts) have become more or +% less standard and are widely used by virtually all Europeans that +% write languages with many special national characters; by so +% doing they avoid the use of the |\accent| primitive which would +% be required with the standard \texttt{cm} fonts; with the latter +% fonts the primitive command |\accent| is such that hyphenation +% becomes almost impossible, in any case strongly impeached. +% +% The \texttt{ec} fonts contain a special character, named +% ``compound word mark'', that occupies position 23 in the font +% scheme and may be input with the sequence |^^W|. Up to now, +% apparently, this special character has never been used in a +% practical way for the typesetting of languages rich of compound +% words; also it has never been inserted in the hyphenation pattern +% files of any language. Beccari modified his pattern file +% \file{ithyph.tex v4.8b} for Italian so as to contain five new +% patterns that involve |^^W|, and he tried to give the +% \babel\ active character |"| a new shortcut definition, +% so as to allow the insertion of the ``compound word mark'' in the +% proper place within any word where two semantic fragments join +% up. With such facility for marking the compound word boundaries, +% etymological hyphenation becomes possible even if the patterns +% know nothing about etymology (but the typesetter hopefully +% does!). +% In Italian such etymological hyphenation is desirable with +% technical terms, chemical names, and the like. +% +% Even this solution proved to be inconvenient on certain UN*X +% platforms, so Beccari resorted to another approach that uses the +% \babel\ active character |"| and relies on the category +% code of the character that follows |"|. +% +% \changes{italian-1.2n}{2000/02/02}{Completely new etymological +% hyphenation facility} +% +% \begin{macrocode} +\initiate@active@char{"}% +\addto\extrasitalian{\bbl@activate{"}\languageshorthands{italian}}% +% \end{macrocode} +% \begin{macro}{\it@cwm} +% The active character |"| is now defined for language |italian| so +% as to perform different actions in math mode compared to text +% mode; specifically in math mode a double quote is inserted so as +% to produce a double prime sign, while in text mode the temporary +% macro |\it@next| is defined so as to defer any further action +% until the next token category code has been tested. +% \begin{macrocode} +\declare@shorthand{italian}{"}{% +\ifmmode + \def\it@next{''}% +\else + \def\it@next{\futurelet\it@temp\it@cwm}% +\fi +\it@next +}% +% \end{macrocode} +% \begin{macro}{\it@cwm} +% The \cs{it@next} service control sequence is such that upon its +% execution a temporary variable \cs{it@temp} is made equivalent to +% the next token in the input list without actually removing +% it. Such temporary token is then tested by the macro \cs{it@cwm} +% and if it is found to be a letter token, then it introduces a +% compound word separator control sequence \cs{it@allowhyphens} +% whose expansion introduces a discretionary hyphen and an +% unbreakable space; in case the token is not a letter, then it is +% tested against \verb=|=$_{12}$: if so a compound word separator +% is inserted and the \verb=|= token is removed, otherwise another +% test is performed so as to see if another double quote sign +% follows: in this case a double open quote mark is inserted, +% otherwise two other tests are performed so as to see if +% guillemets have to be inserted, otherwise nothing is done. +% The double quote shortcut for inserting a double open quote sign +% is useful for people who are inputting Italian text by means of +% an Italian keyboard that unfortunately misses the grave or +% backtick key. +% By this shortcut |""| becomes equivalent to |``| for inserting +% raised open high double quotes. +% \begin{macrocode} +\def\it@@cwm{\nobreak\discretionary{-}{}{}\hskip\z@skip}% +\def\it@@ocap#1{\it@ocap}\def\it@@ccap#1{\it@ccap}% +\DeclareRobustCommand*{\it@cwm}{\let\it@@next\relax +\ifcat\noexpand\it@temp a% + \def\it@@next{\it@@cwm}% +\else + \if\noexpand\it@temp \string|% + \def\it@@next{\it@@cwm\@gobble}% + \else + \if\noexpand\it@temp \string<% + \def\it@@next{\it@@ocap}% + \else + \if\noexpand\it@temp \string>% + \def\it@@next{\it@@ccap}% + \else + \if\noexpand\it@temp\string/% + \def\it@next{\slash\@gobble}% + \else + \ifx\it@temp"% + \def\it@@next{``\@gobble}% + \fi + \fi + \fi + \fi + \fi +\fi +\it@@next}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{sloppypar} +% By this definition of |"| if one types |macro"istruzione| the +% possible break points become \textsf{ma-cro-istru-zio-ne}, while +% without the |"| mark they would be \textsf{ma-croi-stru-zio-ne}, +% according to the phonetic rules such that the |macro| prefix is +% not taken as a unit. +% A chemical name such as \texttt{des"clor"fenir"amina"cloridrato} +% is breakable as \textsf{des-clor-fe-nir-ami-na-clo-ri-dra-to} +% instead of \textsf{de-sclor-fe-ni-ra-mi-na-...} +% +% In other language description files a shortcut is defined so as +% to allow a break point without actually inserting any hyphen +% sign; examples are given such as \mbox{entrada/salida}; actually +% if one wants to allow a breakpoint after the slash, it is much +% clearer to type |\slash| instead of |/| and \LaTeX\ does +% everything by itself; here the shortcut |"/| was introduced to +% stand for |\slash| so that one can type |input"/output| and allow +% a line break after the slash. +% This shortcut works only for the slash, since in Italian such +% constructs are extremely rare. +% \end{sloppypar} +% +% Attention: the expansion of |"| takes place before the actual +% expansion of OT1 or T1 accented sequences such as |\`{a}|; +% therefore this etymological hyphenation facility works as it +% should only when the semantic word fragments \textit{do not +% start} with an accented letter; this in Italian is always +% avoidable, because compulsory accents fall only on the last +% vowel, but it may be necessary to mark a compound word where one +% or more components come from a foreign language and contain +% diacritical marks according to the spelling rules of that +% language. In this case the special shorthand \verb!"|! may be +% used that performs exactly as |"| normally does, except that the +% \verb!|! sign is removed from the token input list: +% \verb!kilo"|{\"o}rsted! gets hyphenated as +% \texttt{ki-lo-\"or-sted}. +% +% \changes{italian-1.2l}{1999/04/05}{Added useful macros for +% fulfilling ISO 31/XI regulations} +% +% \subsection{Facilities required by the ISO 31/XI regulations} +% The ISO 31/XI regulations require that units of measure are +% typeset in upright font in any circumstance, math or text, and +% that in text mode they are separated from the numerical +% indication of the measure with an unbreakable (thin) space. +% The command |\unit| that was defined for achieving this +% goal happened to conflict with the homonymous command defined by +% the package \texttt{units.sty}; we therefore need to test if that +% package has already been loaded so as to avoid conflicts; we assume +% that if the user loads that package, s/he wants to use that package +% facilities and command syntax. +% +% The same regulations require also that super and subscripts +% (apices and pedices) are in upright font, \emph{not in math +% italics}, when they represent ``adjectives'' or appositions to +% mathematical or physical variables that do not represent +% countable or measurable entities such as, for example, +% $V_{\mathrm{max}}$ or $V_{\mathrm{rms}}$ for a maximum or a root +% mean square voltage, compared to $V_i$ or $V_T$ as the $i$-th +% voltage in a set, or a voltage that depends on the thermodynamic +% temperature $T$. See \cite{Becc2} for a complete description of +% the ISO regulations in connection with typesetting. +% +% More rarely it happens to use superscripts that are not +% mathematical variables, such as the notation +% $\mathbf{A}^{\!\mathrm{T}}$ to denote the transpose of matrix +% $\mathbf{A}$; text superscripts are useful also as ordinals or +% in old fashioned abbreviations in text mode; for example the +% feminine ordinal $1^{\mathrm{a}}$ or the old fashioned obsolete +% abbreviation F$^{\mathrm{lli}}$ for \mbox{Fratelli} in company +% names (compare with ``Bros.'' for \underline{bro}ther\underline{s} +% in American English); text subscripts are mostly used in logos. +% +% \begin{macro}{\unit} +% \begin{macro}{\ap} +% \begin{macro}{\ped} +% First we define the new (internal) commands |\bbl@unit|, |\bbl@ap|, +% and |\bbl@ped| as robust ones. +% \changes{italian-1.2q}{2005/02/05}{Added testing for avoiding conflicts +% with the units.sty package} +% \begin{macrocode} +\@ifpackageloaded{units}{}{% + \DeclareRobustCommand*{\bbl@unit}[1]{% + \textormath{\,\mbox{#1}}{\,\mathrm{#1}}}% + }% +\DeclareRobustCommand*{\bbl@ap}[1]{% + \textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}% +\DeclareRobustCommand*{\bbl@ped}[1]{% + \textormath{$_{\mbox{\fontsize\sf@size\z@ + \selectfont#1}}$}{_\mathrm{#1}}}% +% \end{macrocode} +% Then we can use |\let| to define the user level commands, but in +% case the macros already have a different meaning before entering +% in Italian mode typesetting, we first memorize their meaning so +% as to restore them on exit. +% \begin{macrocode} +\@ifpackageloaded{units}{}{% + \addto\extrasitalian{% + \babel@save\unit\let\unit\bbl@unit}% + }% +\addto\extrasitalian{% + \babel@save\ap\let\ap\bbl@ap + \babel@save\ped\let\ped\bbl@ped + }% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Accents}\label{s:itkbd} +% Most of the other language description files introduce a number +% of shortcuts for inserting accents and other language specific +% diacritical marks in a more comfortable way compared with the +% lengthy standard \TeX\ conventions. When an Italian keyboard is +% being used on a Windows based platform, it exhibits such +% limitations that up to now no convenient shortcuts have been +% developed; the reason lies in the fact that the Italian keyboard +% lacks the grave accent (also known as ``backtick''), which is +% compulsory on all accented vowels except the `e', but, on the +% opposite, it carries the keys with all the accented lowercase +% vowels; the keyboard lacks also the tie |~| (tilde) key, while +% the curly braces require pressing three keys simultaneously. +% +% The best solution Italians have found so far is to use a smart +% editor that accepts shortcut definitions such that, for example, +% by striking |"(| one gets directly |{| on the screen and the same +% sign is saved into the \file{.tex} file; the same smart editor +% should be capable of translating the accented characters into the +% standard \TeX\ sequences when writing a file to disk (for the +% sake of file portability), and to transform the standard \TeX\ +% sequences into the corresponding signs when loading a \file{.tex} +% file from disk to memory. Such smart editors do exist and can be +% downloaded from the \textsc{ctan} archives. +% +% \changes{italian-1.2p}{2002/07/10}{Removed redefinition of \cs{add@acc} since its +% functionality has been introduced into the kernel of LaTeX 2001/06/01} +% +% For what concerns the missing backtick key, +% which is used also for inputting the open quotes, it must be +% noticed that the shortcut |""| described above completely solves +% the problem for \textit{double} raised open quotes; according to +% the traditions of particular publishing houses, since there are +% no compulsory regulations on the matter, the French guillemets +% may be used; in this case the T1 font encoding solves the problem +% by means of its built in ligatures |<<| and |>>|. But\dots +% +% \subsection{\emph{Caporali} or French double quotes} +% Although the T1 font encoding ligatures solve the problem, there +% are some circumstances where even the T1 font encoding cannot be +% used, either because the author\slash typesetter wants to use the +% OT1 encoding, or because s/he uses a font set that does +% not comply completely with the T1 font encoding; some virtual +% fonts, for example, are supposed to implement the double Cork +% font encoding but actually miss some glyphs; one such virtual +% font set is given by the \texttt{ae} virtual fonts, because they +% are supposed to implement such double font encoding simply using +% the \texttt{cm} fonts, of which the type~1 PostScript version +% exists and is freely available. Since guillemets (in Italian +% \emph{caporali}) do not exist in any \texttt{cm} latin font, +% their glyphs must be substituted with something else that +% approaches them. +% +% \changes{italian-1.2q}{2005/02/05}{Redefined the caporali machinery +% so as to avoid incompatibilities with the slides class, as there +% are no Cyrillic slides fonts as there are for Latins script} +% +% Since in French typesetting guillemets are compulsory, the French +% language definition file resorts to a clever font substitution; +% such file exploits the \LaTeXe\ font selection machinery so as to +% get the guillemets from the Cyrillic fonts, because it suffices +% to locally change the default encoding. There are several sets of +% Cyrillic fonts, but the ones that obey the OT2 font encoding are +% generally distributed with all recent implementations of the +% \TeX\ software; they are part of the American Mathematical +% Society fonts and come both as \textsf{METAFONT} source files and +% Type~1 PostScript \texttt{.pfb} files. The availability of such +% fonts should be guaranteed by the presence of the +% \texttt{OT2cmr.fd} font description file. Actually the presence +% of this file does not guarantee the completeness of your \TeX\ +% implementation; should \LaTeX\ complain about a missing Cyrillic +% \texttt{.tfm} file (that kind of file that contains the font +% metric parameters) and/or about missing Cyrillic \texttt(.mf) +% files, then your \TeX\ system is \emph{incomplete} and you should +% download such fonts from the \textsc{ctan} archives. Temporarily +% you may issue the command |\LtxSymbCaporali| so as to approximate +% the missing glyphs with the \LaTeX\ symbol fonts. In some case +% warning messages are issued so as to inform the typesetter about +% the necessity of resorting to some \emph{poor man} solution. +% +% In spite of these alternate fonts, we must avoid invoking unusual +% fonts if the available encoding allows to use built in caporali. +% As far as I know (CB) the only T1-encoded font families that miss +% the guillemets are the AE ones; we therefore first test if the +% default encoding id the T1 one and in this case if the AE families +% are the default ones; in order for this to work properly it is +% necessary to load these optional packages \emph{before} \babel. +% If the T1 encoding is not the default one when the Italian language +% is specified, then some substitutions must be done. +% +% \begin{macro}{\LtxSymbCaporali} +% \begin{macro}{\it@ocap} +% \begin{macro}{\it@ccap} +% We define some macros for substituting the default guillemets; first the +% emulation by means of the \LaTeX\ symbols; each one of these macro sets +% actually redefines the control sequences |\it@ocap| and |\it@ccap| that +% are the ones effectively activated by the shortcuts |"<| and |">|. +% \begin{macrocode} +\def\LtxSymbCaporali{% + \DeclareRobustCommand*{\it@ocap}{\mbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}% + \ignorespaces}% + \DeclareRobustCommand*{\it@ccap}{\ifdim\lastskip>\z@\unskip\fi + \mbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}% +}% +% \end{macrocode} +% Then the substitution with any specific font that contains such +% glyphs; it might be the CBgreek fonts, the Cyrillic one, the super-cm ones, the lm ones, +% or any other the user might prefer (the code is adapted from the one +% that appears in the \texttt{frenchb.ld} file; thanks to Daniel Flipo). +% By default if the user did not select the T1 encoding, the existence of the +% CBgreek fonts is tested; if they exist the guillemets are taken from this +% font, and since its families are a superset of the default CM ones and they apply also +% to typeset slides with the standard class \texttt{slides}. If the +% CBgreek fonts are not found, then the existence of the Cyrillic ones is tested, +% although this choice is not suited for typesetting slides; +% otherwise the poor man solution of the \LaTeX\ special symbols is used. +% In any case the user can force the use of the Cyrillic guillemets substitution +% by issuing the declaration |\CyrillicCaporali| just before the +% |\begin{document}| statement; in alternative the user can specify with +% \begin {flushleft} +% |\CaporaliFrom|\marg{encoding}\marg{family}\marg{opening number}\marg{closing number} +% \end{flushleft} +% the encoding and family of the font s/he prefers, and the slot numbers of the opening +% and closing guillemets respectively. For example if the T1-encoded Latin Modern fonts +% are desired the specific command should be +% \begin {flushleft} +% |\CaporaliFrom{T1}{lmr}{19}{20}| +% \end{flushleft} +% These user choices might be necessary for assuring the correct typesetting +% with fonts that contain the required glyphs and are available also in PostScript form +% so as to use them directly di \texttt{pdflatex}, for example. +% \begin{macrocode} +\def\CaporaliFrom#1#2#3#4{% + \DeclareFontEncoding{#1}{}{}% + \DeclareTextCommand{\it@ocap}{T1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3\ignorespaces}}% + \DeclareTextCommand{\it@ccap}{T1}{\ifdim\lastskip>\z@\unskip\fi% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}% + \DeclareTextCommand{\it@ocap}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3\ignorespaces}}% + \DeclareTextCommand{\it@ccap}{OT1}{\ifdim\lastskip>\z@\unskip\fi% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} +% \end{macrocode} +% Then we set a boolean variable and test the default family; +% if such family has a name that starts with the letters ``ae'' +% then we have no built in guillemets; of course if the AE font family is chosen +% after the \babel\ package is loaded, the test does not perform as required. +% \begin{macrocode} +\def\get@ae#1#2#3!{\def\bbl@ae{#1#2}}% +\def\@ifT@one@noCap{\expandafter\get@ae\f@family!% +\def\bbl@temp{ae}\ifx\bbl@ae\bbl@temp\expandafter\@firstoftwo\else + \expandafter\@secondoftwo\fi}% +% \end{macrocode} +% We set another couple of boolean variables for testing the existence of the +% CBgreek or the Cyrillic fonts +% \begin{macrocode} +\newif\if@CBgreekEncKnown +\IfFileExists{lgrcmr.fd}% + {\@CBgreekEncKnowntrue}{\@CBgreekEncKnownfalse} +\newif\if@CyrEncKnown +\IfFileExists{ot2cmr.fd}% + {\@CyrEncKnowntrue}{\@CyrEncKnownfalse}% +% \end{macrocode} +% \begin {macro}{\CBgreekCaporali} +% \begin {macro}{\CyrillicCaporali} +% \begin {macro}{\T@unoCaporali} +% Next we define the macros |\CBgreekCaporali|, |\T@unoCaporali|, +% and |\CyrillicCaporali|; +% with the latter one we test the loaded class, and if it's \texttt{slides} +% nothing gets done. In any case each one of these declarations, if used, must be specified +% in the preamble. +% \begin{macrocode} +\def\CBgreekCaporali{\@ifclassloaded{slides}{% + \IfFileExists{lgrlcmss.fd}{\DeclareFontEncoding{LGR}{}{}% + \DeclareRobustCommand*{\it@ccap}% + {\ifdim\lastskip>\z@\unskip\fi + {\fontencoding{LGR}\selectfont))}}% + \DeclareRobustCommand*{\it@ocap}% + {{\fontencoding{LGR}\selectfont((}\ignorespaces}}% + {\LtxSymbCaporali}}% + {\DeclareFontEncoding{LGR}{}{}% + \DeclareRobustCommand*{\it@ccap}% + {\ifdim\lastskip>\z@\unskip + \fi{\fontencoding{LGR}\selectfont))}}% + \DeclareRobustCommand*{\it@ocap}% + {{\fontencoding{LGR}\selectfont((}\ignorespaces}}% + }% +\def\CyrillicCaporali{\@ifclassloaded{slides}{\relax}% + {\DeclareFontEncoding{OT2}{}{}% + \DeclareRobustCommand*{\it@ccap}% + {\ifdim\lastskip>\z@\unskip\fi + {\fontencoding{OT2}\selectfont\char62\relax}}% + \DeclareRobustCommand*{\it@ocap}% + {{\fontencoding{OT2}\selectfont\char60\relax}\ignorespaces}}}% +\@onlypreamble{\CBgreekCaporali}\@onlypreamble{\CyrillicCaporali}% +\def\T@unoCaporali{\DeclareRobustCommand*{\it@ocap}{<<\ignorespaces}% + \DeclareRobustCommand*{\it@ccap}{\ifdim\lastskip>\z@\unskip\fi>>}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% Now we can do some real setting; first we start testing the encoding; +% if the encoding is T1 we test if the font family is the AE one; if so, +% we further test for other possibilities +% \begin{macrocode} +\ifx\cf@encoding\bbl@t@one + \@ifT@one@noCap{% + \if@CBgreekEncKnown + \CBgreekCaporali + \else + \if@CyrEncKnown + \CyrilicCaporali + \else + \LtxSymbCaporali + \fi + \fi}% + {\T@unoCaporali}% +% \end{macrocode} +% But if the default encoding is not the T1 one, then the +% substitutions must be performed. +% \begin{macrocode} +\else + \if@CBgreekEncKnown + \CBgreekCaporali + \else + \if@CyrEncKnown + \CyrilicCaporali + \else + \LtxSymbCaporali + \fi + \fi +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Finishing commands} +% The macro |\ldf@finish| takes care of looking for a +% configuration file, setting the main language to be switched on +% at |\begin{document}| and resetting the category code of +% \texttt{@} to its original value. +% \changes{italian-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{italian}% +%</code> +% \end{macrocode} +% +% \Finale +%% +%% \CharacterTable +%% {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 +%% 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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\endinput |