% \iffalse meta-comment % % Copyright 1989-2001 Johannes L. Braams and any individual authors % listed elsewhere in this file. All rights reserved. % % This file is part of the Babel system release 3.7. % -------------------------------------------------- % % It may be distributed under the terms of the LaTeX Project Public % License, as described in lppl.txt in the base LaTeX distribution. % Either version 1.2 or, at your option, any later version. % \fi % \CheckSum{358} % \iffalse % Tell the \LaTeX\ system who we are and write an entry on the % transcript. %<*dtx> \ProvidesFile{italian.dtx} % %\ProvidesLanguage{italian} %\fi %\ProvidesFile{italian.dtx} [2001/01/19 v1.2o Italian support from the babel system] %\iffalse %% File `italian.dtx' %% Babel package for LaTeX version 2e %% Copyright (C) 1989 - 2001 %% by Johannes Braams, TeXniek % %% Please report errors to: J.L. Braams %% Claudio Beccari % % 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} % %\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}} % \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 % implementation 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 guillemets, % 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 guillemets; with the OT1 encoding % the guillemets 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 The accent internal macros used with the OT1 encoding are % redefined so as to avoid elaborate input sequences such as % |\`{\i}| that can be replaced with the much simpler and readable % |\`i|, as it happens with the T1 encoding; the redefinition is % valid far all accents. % \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. % \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 guillemets.\\ % |">| & inserts closed guillemets.\\ % |"/| & 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 on 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 \textsf{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 % \textsf{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 so Beccari resorted % to another approach that uses the \textsf{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 |``|.%^^A'' % \begin{macrocode} \def\it@@cwm{\nobreak\discretionary{-}{}{}\hskip\z@skip}% \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\@gobble}% \else \if\noexpand\it@temp \string>% \def\it@@next{\it@ccap\@gobble}% \else \if\noexpand\it@temp\string/% \def\it@next{\slash\@gobble}% \else \ifx\it@temp"% \def\it@@next{``\@gobble}%%^^A'' \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 were 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 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. % \begin{macrocode} \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} \addto\extrasitalian{% \babel@save\unit\let\unit\bbl@unit \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, this device 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. % % This file, though, extends the OT1 accent commands so as to make % them more similar to the T1 ones; in facts with the latter % encoding it is legal to input in the input \texttt{.tex} file the % accented `i' as |\`i| while with the OT1 encoding it is necessary % to use the full lengthy sequence |\`{\i}| or |{\`\i}|. There is % no reason why with the OT1 encoding the former sequence should % not be used; therefore, in order to achieve this goal the % following redefinition of an internal \LaTeX\ command is % required: % \begin{macrocode} \renewcommand*{\add@accent}[2]{% {\ifx#2i\let\bbl@tempa\i\else\let\bbl@tempa#2\fi \setbox\@tempboxa\hbox{\bbl@tempa% \global\mathchardef\accent@spacefactor\spacefactor}% \accent#1\bbl@tempa}\spacefactor\accent@spacefactor}% % \end{macrocode} % This internal command affects all the ``upper'' accents when % the OT1 encoding is in force, but with \textsf{babel} it is not % used for the diaeresis because of the many redefinitions of all % commands that involve the |"| character, and for the necessities % of the ``umlaut'' in German and other languages; the sequence % |\"i| is already defined by default as an umlauted `i' followed % by a soft discretionary break; since this behavior is acceptable % also in Italian, we leave the internal \babel\ definitions as they % are. % % Please take notice that the above redefinitions are intended to % affect only accents in the OT1 encoding; some combinations of % accent and the letter `i' were assumed impossible by the authors % of the definitions related to the T1 encoding, so that possibly % what has been done in this file goes farther than expected, but % it seems to be harmless; in any case some experiments performed % with both encodings show that they achieve the expected results % with either one. 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 fontencoding solves the problem % by means of its built in ligatures |<<| and |>>|. But\dots % % \subsection{\emph{Caporali} or French double quotes} % Although the T1 fontencoding ligatures solve the problem, there % are some circumstances where even the T1 fontencoding cannot be % used, either because the author\slash typesetter wants to use the % OT1 encoding, or because he\slash she uses a font set that does % not comply completely with the T1 fontencoding; some virtual % fonts, for example, are supposed to implement the double Cork % fontencoding 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 fontencoding simply using % the \texttt{cm} fonts, of which the type~1 PostScript version % exist 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. % % 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 fontencoding 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. % % \begin{macro}{\LtxSymbCaporali} % \begin{macro}{\it@ocap} % \begin{macro}{\it@ccap} % The ``safety'' macro |\LtxSymbCaporali|, to be issued by the % typesetter when he\slash she lacks the proper fonts, is very % similar to the corresponding French one except that is not tied % to any particular font encoding: % \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} % % Actually the above macro simply defines the aliases for the % shortcuts |"<| and |">| so as to avoid all the warning messages % that are being issued if the T1 encoded fonts in use lack the % guillemets or if the Cyrillic font encoding OT2 settings can't be % defined. Beware, though, that if you are using some T1 encoded % fonts, and you don't know if they are complete as the \texttt{ec} % fonts are, and you type directly |<<| or |>>|, you miss all the % testing and the warning messages that Italian shortcuts |"<| and % |">| offer and you might end up with little squares in place of % the missing guillemets. % % The other two macros |\it@ocap| and |\it@ccap| differ from the % corresponding French ones in the sense that in Italian typography % no space must be inserted between the \emph{caporali} quotes and % the text they enclose; if any space is incorrectly inserted by % the typesetter after the open guillemets or before the closed % ones, the macros for Italian remove this erroneous space; % furthermore the Italian \babel\ option is supposed to work only % with \LaTeXe, therefore it is not necessary to test the \TeX\ % format name. % % We start with some operations that can be done once for all; we % define a new boolean |@CyrEncKnown| in order to know if we can % resort to the Cyrillic fonts % \begin{macrocode} \newif\if@CyrEncKnown \IfFileExists{ot2cmr.fd}% {\@CyrEncKnowntrue\DeclareFontEncoding{OT2}{}{}}% {\@CyrEncKnownfalse}% % \end{macrocode} % Then we define an option warning so as to inform the typesetter % on the ``poor man'' substitution we make % \begin{macrocode} \DeclareRobustCommand*{\ItalianWarning}{% \GenericWarning{(Italian Option)\space\space}% {Italian Option Warning: No Cyrillic fonts available\MessageBreak LaTeX Symbol approximation will be used for caporali}}% % \end{macrocode} % Now we need the actual commands for the substituted caporali % \begin{macrocode} \DeclareRobustCommand*{\CapAperti}{% \if@CyrEncKnown {\fontencoding{OT2}\fontfamily{wncyr}\selectfont\char60}% \else \ItalianWarning {\fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}% \fi }% \DeclareRobustCommand*{\CapChiusi}{% \if@CyrEncKnown {\fontencoding{OT2}\fontfamily{wncyr}\selectfont\char62}% \else \ItalianWarning {\fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}% \fi }% % \end{macrocode} % Finally we define the alias commands for the Italian shortcuts % |"<| and |">|. % Before we need some device to spot if the assumed T1 complying % font really contains the guillemets; unfortunately virtual fonts % have black boxes in place of the missing characters, for which, % in any case the corresponding \TeX\ metrics are given; therefore % we cannot test if the font misses the guillemets by ``measuring'' % their width. Up to now the only fonts I (CB) know that claims to % comply to the T1 encoding, but misses the guillemets is the group % of \texttt{ae} font families and shapes, that are a virtualized % 256 glyph strict version of the \texttt{cm fonts}; since the % latter do not contain the guillemets, neither do the former. I % decided then to examine the first two characters of the font % family; if they are `ae', then we are working with such % incomplete font set; otherwise we assume the guillemets are % present. % \begin{macrocode} \newif\ifT@one@noCap \def\get@ae#1#2#3!{\def\bbl@ae{#1#2}}% \def\set@T@one@noCap{\expandafter\get@ae\f@family!% \def\bbl@temp{ae}\ifx\bbl@ae\bbl@temp\T@one@noCaptrue\else \T@one@noCapfalse\fi}% % \end{macrocode} % Now we are ready to define the real code: % \begin{macrocode} \DeclareRobustCommand*{\it@ocap}{% \leavevmode \ifx\cf@encoding\bbl@t@one {\set@T@one@noCap \ifT@one@noCap \CapAperti \else <<% \fi}% \else \CapAperti \fi\ignorespaces}% \DeclareRobustCommand*{\it@ccap}{\ifdim\lastskip>\z@\unskip\fi% \ifx\cf@encoding\bbl@t@one {\set@T@one@noCap \ifT@one@noCap \CapChiusi \else >>% \fi}% \else \CapChiusi \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}% % % \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