% \iffalse meta-comment %<*internal> \begingroup \input docstrip.tex \keepsilent \preamble ------------------------------------------------------------------ The occitan module for babel Copyright (C) 2015 C��dric Valmary All rights reserved Licence information appended Created by C��dric Valmary: cvalmary at yahoo dot fr of Tot en ��c <http://www.totenoc.eu/> \endpreamble \postamble Distributable under the LaTeX Project Public License, version 1.3c or higher (your choice). The latest version of this license is at: http://www.latex-project.org/lppl.txt This work is "author-maintained" The maintainer is C��dric Valmary \endpostamble \askforoverwritefalse \generate{\file{occitan.ldf}{\from{occitan.dtx}{code}}} \def\tmpa{plain} \ifx\tmpa\fmtname\endgroup\expandafter\bye\fi \endgroup %</internal> % % % \fi % \CheckSum{344} % \iffalse % Tell the \LaTeX\ system who we are and write an entry on the % transcript. %\fi %\iffalse %<*filedriver> \ProvidesFile{occitan.dtx} %</filedriver> %<code>\ProvidesLanguage{occitan} %<*code> [2016/02/04 0.2 Occitan support from the babel system] %</code> %<*filedriver> \documentclass{ltxdoc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage[utf8]{inputenc} \usepackage{booktabs} \newcommand*\TeXhax{\TeX hax} \newcommand*\babel{\textsf{babel}} \newcommand*\pack[1]{\textsf{#1}} \newcommand*\langvar{$\langle \it lang \rangle$} \newcommand*\note[1]{} \newcommand*\Lopt[1]{\textsf{#1}} \newcommand*\file[1]{\texttt{#1}} \author{C��dric Valmary--- \texttt{cvalmary at yahoo dot fr }} \title{The Occitan language module for \babel} \date{\filedate\ -- version \fileversion} \begin{document} \DocInput{occitan.dtx} \end{document} %</filedriver> %\fi % \GetFileInfo{occitan.dtx} % % \maketitle % % \section{The Occitan language} % \textbf{Important notice}: This language description file relies on % functionalities provided by a modern TeX system distribution with % pdfLaTeX working in extended mode (eTeX commands available); it % should perform correctly also with XeLaTeX and LuaLaTeX; tests have % been made also with the latter programs, but it was really tested in % depth with |babel| and pdfLaTeX. Actually, even if it possible to use % \pack{babel} with XeLaTeX and LuaLaTeX, the latter programs have % available the specific \pack{polyglossia} package with the proper % settings also for the Occitan language. % % \bigskip % % The Occitan language nowadays exists as a \emph{koin��} for the multitude % of Occitan varieties, each one with its dialects; the main varieties are % Auver\-nhat, Gascon, Lemosin, Lengadocian, Ni��ard, Poroven��al, Vivaroalpenc % as they are named in the document published by the \emph{Conselh de la % lenga occitana} % (see \url{http://gianni.vacca.perso.sfr.fr/guilhemix/clo-sintesi.pdf}). % This Conselh takes care also of maintaining a common standard at least % for spelling, but admits a variety of pronunciations and in some cases % a variety of spellings; for example the Gascon variety changes the % initial `f\/' into an aspirated `h'; this implies the necessity of % distinguishing when the digraphs `lh', `nh', and `sh' are really digraphs % or are to be considered distinct letters that in Gascon are rendered as % `l$\cdot$h', `n$\cdot$h', and `s$\cdot$h' respectively. A similar situation % takes place in the Vivaroalpenc variety, where the intervocalic `d' % vanishes. This language description file should not be concerned with these % variant spellings; the hyphenation pattern files might not correctly % handle all such situations so that some manual intervention might be % necessary. The tests carried on so far apparently work correctly, but users % are invited to let me know about possible necessary corrections. % % \bigskip % % The file \file{\filename} defines all the required and some optional % language-specific macros for the Occitan language. % % \begin{table}[htb]\centering % \begin{tabular}{cp{90mm}} % \toprule % |"| & 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 guillemets without trailing space.\\ % |">| & inserts closed guillemets without leading space.\\ % |"/| & allows hyphenation of both words connected with slash.\\ % |".| & allows hyphenation of both words fragments connected with % a half height dot (ponch interior in Occitan)\\ % \bottomrule % \end{tabular} % \caption{Shorthands for the Occitan language. These shorthands are % available only if command \texttt{\string\setactivedoublequote} is given % after loading \babel\ and before \texttt{\string\begin\{document\}}.} % \label{t:itshrtct} % \end{table} % % The features of this language definition file are the following: % \begin{enumerate} % \item The Occitan hyphenation is invoked, provided that the Occitan % hyphenation pattern files were loaded when the specific format file % was built. % \item The language dependent infix words to be inserted by such % commands as |\chapter|, |\caption|, |\tableofcontents|, % etc. are redefined in accordance with the Occitan % typographical practice. % \item Since Occitan can be easily hyphenated and Occitan 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 strongly discouraged between the last two lines % of a paragraph. % \item Some language specific shorthands have been defined so as to % allow etymological hyphenation, specifically |"| inserts a % break point at any word boundary that the typesetter chooses, % provided it is not followed by an accented letter, and \verb="|= % when the desired break point falls before an accented letter. % As you can read in table~\ref{t:itshrtct}, these shorthands are % available only if they get activated with |\setactivedoublequote| % after loading \babel\ but before the |\begin{docuemnt}| statement. % This is done in order to preserve the user from package conflicts: % if s/he wants to use these facilities s/he must remember that % conflicts may arise unless active characters are deactivated; % this can be done with the \babel\ command |\shorthadsoff{"}| % (and reactivated with |\shorthandson{"}|) when its wise to do % so; conflicts have been reported with package \file{xypic} and % with \texttt{TikZ}, but the latter has its own library to % deactivate all active characters, not just the double quotes, % the only Occitan language specific activated character. % \item The shorthands |"<| and |">| insert the guillemets % used in Occitan typography, but without any spacing as, on the % opposite, it is done in French 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 |">| shorthands (even with the T1 % encoding) the necessary tests are performed and in case the % guillemets are replaced with the ones contained in the Latin Modern fonts. % At the same time if OpenType fonts are being used with XeLaTeX % or LuaLaTeX, there are no problems with guillemets. % \end{enumerate} % % % \StopEventually{} % %\subsection{The commented code} % 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{occitan-1.2i}{1996/11/03}{Now use \cs{LdfInit} to perform % initial checks} % \changes{occitan-1.2j}{1996/12/29}{Added braces around second arg of % \cs{LdfInit}} %\iffalse %<*code> %\fi % \begin{macrocode} \LdfInit{occitan}{captionsoccitan}% % \end{macrocode} % % When this file is read as an option, i.e. by the |\usepackage| % command, \texttt{occitan} will be an `unknown' language in which % case we have to make it known. So we check for the existence of % |\l@occitan| to see whether we have to do something here. % % \begin{macrocode} \ifx\l@occitan\@undefined \@nopatterns{occitan}% \adddialect\l@occitan \z@\fi % \end{macrocode} % % The next step consists of defining commands to switch to (and % from) the Occitan language. % % \begin{macro}{\captionsoccitan} % The macro |\captionsoccitan| defines all strings used % in the four standard document classes provided with \LaTeX. % \begin{macrocode} \addto\captionsoccitan{% \def\refname{Refer\'encias}% \def\abstractname{Resumit}% \def\bibname{Bibliografia}% \def\prefacename{Prefaci}% \def\chaptername{Cap\'itol}% \def\appendixname{Ann\`ex}% \def\contentsname{Ensenhador}% \def\listfigurename{Taula de las figuras}% \def\listtablename{Taula dels tabl\`eus}% \def\indexname{Ind\`ex}% \def\figurename{Figura}% \def\tablename{Tabl\`eu}% \def\partname{Partida}% \def\pagename{Pagina}% \def\seename{vejatz}% \def\alsoname{vejatz tanben}% \def\enclname{P\`e\c{c}a junta}% \def\ccname{c\`opia a}% \def\headtoname{A}% \def\proofname{Demostracion}% \def\glossaryname{Glossari}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\dateoccitan} % The macro |\dateoccitan| defines the command |\today| to typeset % the current date according to the Occitan style of using the suitable % prepositions before the month name and the year number; moreover the % first day of the month is marked with the ordinal abbreviation, % while the other day numbers are left without any ordinal indication. % \begin{macrocode} \def\dateoccitan{% \def\today{% \ifcase \day\or 1��r\else \number\day \fi~% \ifcase\month\or de~geni\`er\or de~febri\`er\or de~mar\c{c}\or d'abril\or de~mai\or de~jiunh\or de~julhet\or d'agost\or de~setembre\or d'octobre\or de~novembre\or de~decembre% \fi\space de~\number\year}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\occitanhyphenmins} % The occitan hyphenation patterns can be used with both % |\lefthyphenmin| and |\righthyphenmin| set to~2. % \begin{macrocode} \providehyphenmins{\CurrentOption}{\tw@\tw@} % \end{macrocode} % \end{macro} % % \begin{macro}{\extrasoccitan} % \begin{macro}{\noextrasoccitan} % % Lower the chance that clubs or widows occur; lower the chances that a line % break takes place between the last two lines of a paragraph. % \begin{macrocode} \addto\extrasoccitan{% \babel@savevariable\clubpenalty \babel@savevariable\widowpenalty \babel@savevariable\@clubpenalty \clubpenalty3000\widowpenalty3000\@clubpenalty\clubpenalty}% \addto\extrasoccitan{% \babel@savevariable\finalhyphendemerits \finalhyphendemerits50000000}% % \end{macrocode} % % In order to enable the hyphenation of words such as % ``l'Occit��nia'' we give the \texttt{'} a non-zero lower case % code. This allows \TeX\ to find the following hyphenation % points |l'Oc-ci-t��-nia| instead of none. % \begin{macrocode} \addto\extrasoccitan{% \lccode`'=`'}% \addto\noextrasoccitan{% \lccode`'=0}% % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Support for etymological hyphenation} % % In Occitan etymological hyphenation is desirable with % technical terms, chemical names, and the like. % We reach this goal by means of shorthands tied to the active character |"|. % The active double straight quote may conflict with other packages; % so we set it as an optional facility. % % Instead of a boolean switch we use a private counter so as to check % at |\begin{document}| if this facility has to be activated. The default % value is zero; anything different from zero means that the facility % has to be activated; this is done with command |\setactivedoublequote| % to be issued before |\begin{document}| % % \begin{macrocode} \newcount\oc@doublequoteactive \oc@doublequoteactive=\z@ \def\setactivedoublequote{\oc@doublequoteactive=\@ne} \AtBeginDocument{% \unless\ifnum\oc@doublequoteactive=\z@ \initiate@active@char{"}% \addto\extrasoccitan{\bbl@activate{"}\languageshorthands{occitan}}% % \end{macrocode} % \begin{macro}{\oc@cwm} % The active character |"| is now defined for language |occitan| 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 |\oc@next| is defined so as to defer any further action % until the next token category code has been tested. % \begin{macrocode} \declare@shorthand{occitan}{"}{% \ifmmode \def\oc@next{''}% \else \def\oc@next{\futurelet\oc@temp\oc@cwm}% \fi \oc@next }% \fi % \end{macrocode} % The following statement must be conditionally executed after the above % modification of the |\extraasoccitan| list; in facts at the ``begin % document'' execution, the main language has already been set without % the above modifications; therefore nothing takes place unless the % occitan main language is selected again with the explicit command % |\selectlanguage|; without this trick the active double quotes would % remain inactive; of course |\languagename| contains the string |occitan| % if this language was the main one; by testing this string, the suitable % command may be issued again with the new settings and the double quotes % become really active. % \begin{macrocode} \ifdefstring{\languagename}{occitan}{\selectlanguage{occitan}}{\relax} }% % \end{macrocode} % \begin{macro}{\oc@cwm} % The \cs{oc@next} service control sequence is such that upon its % execution a temporary variable \cs{oc@temp} is made equivalent to % the next token in the input list without actually removing it. % Yes, this is a point to be underlined: a token that has made % equivalent with |\futurelet| to some other token, does not remove % the latter; while a macro that is followed by a space ignores it % and reads the first non-space token. This can be exploited in the % following macros. % % Such temporary token is then tested by the macro \cs{oc@cwm} % and if it is found to be equivalent to a letter token (catcode=11), % then it introduces the compound word separator control sequence % \cs{oc@allowhyphens} whose expansion introduces a discretionary % hyphen and an unbreakable zero space; % otherwise the token is not a letter; then it is tested against % \verb=|=$_{12}$: if so a macro is defined that gobbles the token % and introduces a compound word separator; % otherwise two other tests are performed to see if guillemets % have to be inserted, and in case suitable intelligent % guillemet macros are introduced that gobble unwanted leading % or trailing spaces; % otherwise a test is made to see if the next char is a slash % character, and in case a special discretionary break is inserted % so as to maintain the slash while allowing the hyphenation % of both words before and after the slash; % otherwise another test is made to see if a period follows, and in case % the period is gobbled and a special discretionary is inserted that % introduces a hyphen sign if a line break occurs, or a centered % dot otherwise; % otherwise nothing is done. % % \begin{macrocode} \def\oc@@cwm{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens}% \def\oc@@slash{\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}% \def\oc@ponchinterior{\nobreak \discretionary{-}{}{\mbox{$\cdot$}}\nobreak\hskip\z@skip}% \def\oc@@oguil#1{\oc@oguil}\def\oc@@cguil#1{\oc@cguil}% \DeclareRobustCommand*{\oc@cwm}{\let\oc@@next\oc@doublequote \ifcat\noexpand\oc@temp a% \def\oc@@next{\oc@@cwm}% \else \if\noexpand\oc@temp \string|% \def\oc@@next##1{\oc@@cwm}% \else \if\noexpand\oc@temp \string<% \def\oc@@next{\oc@@oguil}% \else \if\noexpand\oc@temp \string>% \def\oc@@next{\oc@@cguil}% \else \if\noexpand\oc@temp\string/% \def\oc@@next##1{\oc@@slash}% \else \if\noexpand\oc@temp\string.% \def\oc@@next##1{\oc@ponchinterior}% \fi \fi \fi \fi \fi \fi \oc@@next}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{sloppypar} % By this definition of |"| if one types |macro"istrucion| the % possible break points become \textsf{ma-cro-is-tru-cion}, while % without the |"| mark they would be \textsf{ma-crois-tru-cion}, % 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"cloridrat}% % \footnote{Not all \texttt{\string"} signs are necessary, but all % have been indicated in order to mark in an explicit way the various % components of the technical compound word.} % is breakable as \textsf{des-clor-fe-nir-ami-na-clo-ri-drat} % instead of \textsf{des-clor-fe-ni-ra-mi-na-\dots} Of course the % use of this |"| functionality is useful if it is used for single % words or to fine tune a final document. If a certain word that % requires special break points appears quite often in a specific % document, it would be much more convenient to specify these special % break points in the argument of a |\hyphenation| command. See the % \babel\ documentation to set hyphenation exceptions for several % languages in a specific document. % % In other language description files a shorthand is defined so as % to allow a break point without actually inserting any hyphen % sign; examples are given such as \mbox{input/output}; 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 shorthand |"/| was introduced to % stand for |\slash| so that one can type |input"/output| and allow % a line break after the slash. % % But what is really important in some Occitan varieties is the macro % |\oc@ponchinterior| that inserts the special discretionary break that % inserts a hyphen sign if a line break takes place or a centered dot % otherwise. % \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 Occitan is almost always % avoidable, because very rarely accented vowels start a new syllable % and the only consonant that carries a diacritic mark, `��', is % already taken care of by the hyphenation pattern files. % 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\"orsted! or |kilo��rsted| gets hyphenated as % \texttt{ki-lo��r-sted}; but % \verb!kilo"|��rsted! gets hyphenated correctly % as \texttt{ki-lo-��r-sted} The \verb="|= macro is necessary % because, even with a suitable option specified to the |inputenc| % package, the letter `��' does not have category code 11, as the \textsc{ascii} % letters do, because of the LICR (LaTeX Internal Character Representation); % the LICRs are the set of intermediate macros that have to be expanded % in order to fetch the proper glyph in the output font or to build up % a composite glyph if it is not available in the output font. % % \subsection{Extra advanced macros} % % We need to perform some tests that require some % smart control-sequence handling; therefore we call the |etoolbox| % package that allows us more testing functionality. There are no problems % with this package that can be invoked also by other ones before or % after \babel\ is called; the |\RequirePackage| mechanism is sufficiently % smart to avoid reloading the same package more than once. But we % have to delay this call, because |occitan.ldf| is being read while % processing the options passed to \babel\, and while options are being % scanned and processed it is forbidden to load packages; we % delay it at the end of processing the \babel\ package itself. % \begin{macrocode} \AtEndOfPackage{\RequirePackage{etoolbox}} % \end{macrocode} % % % \subsection{Accents}\label{s:ockbd} % Most of the other language description files introduce a number % of shorthands for inserting accents and other language specific % diacritical marks in a more comfortable way compared with the % lengthy standard \TeX\ conventions. I don't know if every user has % a specific keyboard layout or keyboard driver dedicated to the Occitan % language; it is possible that Occitan users, living in countries where the % Occitan language is actually used (France, Italy, and Spain), use % the more common local national keyboard and have already available % the suitable keys for entering (some of)the Occitan non \textsc{ascii} % characters; table~\ref{tab:chars} displays the lowercase special Occitan % characters. % \begin{table}\centering % \begin{tabular}{*4c} % \toprule % �� & & �� & \\ % �� & & �� & \\ % & �� & �� & \\ % �� & & �� & \\ % & �� & �� & \\ % & & & �� \\ % \bottomrule % \end{tabular} % \caption{Specific Occitan characters} % \label{tab:chars} % \end{table} % Among the national keyboards it seems that the Italian one is the % least suited to typeset in Occitan; it actually is not fully functional % with Italian itself (it misses any two-key combination to enter accented % uppercase letters). In any case the recent distributions of the Windows % operating systems (may be from Win7 on, certainly from Win8) and the % Apple OS~X have a virtual keyboard application that allows to enter any % glyph by clicking on the virtual keys; all operating systems have a % Character Table Viewer that allows to enter any UNICODE glyph (very % uncomfortable if needed to enter long stretches of text, but\dots). % I suppose that the French national keyboard is the most comfortable to % use when entering Occitan text, thanks to the fact that the French language % uses many diacritics. % % The best solution, may be, consists in using a smart % editor that accepts shorthand definitions such that, for example, % by striking |"a| one gets directly |��| on the screen and the same % string is saved into the \file{.tex} file; the same smart editor % might 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 screen memory. Such smart editors do exist and can be % downloaded from the \textsc{ctan} archives. % % % \subsection{Guillemets 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 by using % virtual fonts that map the |CM| fonts to a T1 font scheme; the % type~1 PostScript version of the |CM| fonts do exist, therefore % one believes to be able of using them with pdfLaTeX; but since % the |CM| fonts do not contain the guillemets, neither do the |AE| % ones. % Since guillemets do not exist in any OT1 encoded \texttt{cm} % Latin font, their glyphs must be substituted with something else % that fakes them. % Therefore if the OT1 encoding is being used the T1 encoded Latin % Modern font guillemets are used, otherwise the current font % ones are actually used. % % \begin{macro}{\oc@oguil} % \begin{macro}{\oc@cguil} % A new macro that the user may possibly use, if the default does not % meet his/her requirements, is defined so as to chose which family the % guillemets should be taken from; but through the |\DeclareTextCommand|, % we tie the definitions of the macros |\oc@oguil| and |\oc@cguil| to the % current actual encoding. % \begin{macrocode} \def\GuillemetsFrom#1#2#3#4{% \DeclareFontEncoding{#1}{}{}% \DeclareTextCommand{\oc@oguil}{T1}{% {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3\ignorespaces}}% \DeclareTextCommand{\oc@cguil}{T1}{\ifdim\lastskip>\z@\unskip\fi% {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}% \DeclareTextCommand{\oc@oguil}{OT1}{% {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3\ignorespaces}}% \DeclareTextCommand{\oc@cguil}{OT1}{\ifdim\lastskip>\z@\unskip\fi% {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} % \end{macrocode} % This macro requires four arguments with the syntax: % \begin {flushleft}\small % |\GuillemetsFrom|\marg{encoding}\marg{family}\marg{open guill. slot}% % \marg{closed guill. slot} % \end{flushleft} % where \meta{encoding} and \meta{family} identify the font family % name of that particular encoding from which to get the substitution % guillemets; \meta{open guill. slot} and \meta{closed guill. slot} % are the (preferably) decimal slot addresses of the opening and % closing guillemets the user wants to use. For example if the % T1-encoded Latin Modern fonts are desired, the specific command % should be % \begin {flushleft} % |\GuillemetsFrom{T1}{lmr}{19}{20}| % \end{flushleft} % % We define a default macro for using the current font in encoding T1: % \begin{macrocode} \def\T@unoGuillemets{\DeclareRobustCommand*{\oc@oguil}{<<\ignorespaces}% \DeclareRobustCommand*{\oc@cguil}{\ifdim\lastskip>\z@\unskip\fi>>}}% % \end{macrocode} % Notice that the above macro is strictly tied to the T1 encoding; % it won't do anything if the default encoding is not the T1 one. % Therefore if the |AE| font collection is being used it would be a % good idea to issue the command (shown above as an example) in order % to get the proper guillemets; of course using directly the |LM| % fonts instead of the |AE| ones would be a much better idea. % % Now 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| fonts % are chosen after the \babel\ package is loaded, the test % does not perform as expected. % \begin{macrocode} \def\get@ae#1#2#3!{\def\oc@ae{#1#2}}% \def\@ifT@one@noGuil{\expandafter\get@ae\f@family!% \ifdefstring{\oc@ae}{ae}}% % \end{macrocode} % Now we can set some real settings; first we start by testing % the encoding; if the encoding is OT1 we substitute the missing guillemets % with the Latin Modern ones and issue a message; then we test if the font % family is the |AE| one and we set again the Latin Modern ones and issue % another message\footnote{Notice that it is impossible to check % if the slots 19 and 20 of the AE fonts are defined by means of % the eTeX macro \texttt{\char92iffontchar}, because they are % actually defined as black squares!}; otherwise we set the commands % valid for the T1 encoding, that work well also with the TeX % Ligatures of the OpenType fonts. % \begin{macrocode} \AtBeginDocument{\normalfont \ifdefstring{\cf@encoding}{OT1}{% \GuillemetsFrom{T1}{lmr}{19}{20}% \GenericWarning{occitan.ldf\space}{% File occitan.ldf warning: \MessageBreak\space\space\space With OT1 encoding guillemets are taken form the \MessageBreak\space\space\space T1 encoded Latin Modern fonts\MessageBreak\space\space\space \MessageBreak\space\space}% }{% \ifdefstring{\cf@encoding}{T1}{% \@ifT@one@noGuil{% \GuillemetsFrom{T1}{lmr}{19}{20}% \GenericWarning{occitan.ldf\space}{% File occitan.ldf warning: \MessageBreak\space\space\space The AE font collection does not contain the guillemets \MessageBreak\space\space\space Using Latin Modern guillemets instead \MessageBreak\space} }{% \T@unoGuillemets}}{\T@unoGuillemets} }% } % \end{macrocode} % \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. % \begin{macrocode} \ldf@finish{occitan}% % \end{macrocode} %\iffalse %</code> %\fi % % \Finale % \endinput