diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/fixltxhyph/fixltxhyph.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/fixltxhyph/fixltxhyph.dtx | 535 |
1 files changed, 326 insertions, 209 deletions
diff --git a/Master/texmf-dist/source/latex/fixltxhyph/fixltxhyph.dtx b/Master/texmf-dist/source/latex/fixltxhyph/fixltxhyph.dtx index ab888913a03..a3f57eeed42 100644 --- a/Master/texmf-dist/source/latex/fixltxhyph/fixltxhyph.dtx +++ b/Master/texmf-dist/source/latex/fixltxhyph/fixltxhyph.dtx @@ -1,13 +1,13 @@ % \iffalse meta-comment -% !TEX encoding = IsoLatin +% !TEX encoding = UTF-8 Unicode %<*internal> \begingroup \input docstrip.tex \keepsilent \preamble - ______________________________________________________ + ____________________________________________________ The FiXLtxHyph package - Copyright (C) 2011-2012 Claudio Beccari + Copyright (C) 2011-2024 Claudio Beccari All rights reserved License information appended @@ -15,11 +15,12 @@ \endpreamble \postamble -Copyright 2011-2012 Claudio Beccari +Copyright 2011-2024 Claudio Beccari -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 +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" @@ -28,13 +29,15 @@ the derived file fixltxhyph.sty, and the English documentation fixltxhyph.pdf. -By running pdflatex on fixltxhyph.dtx the user gets the .sty file, -and the English documentation file in pdf format. +By running pdflatex on fixltxhyph.dtx the user gets +the .sty file, and the English documentation file in PDF format. \endpostamble + \askforoverwritefalse -\generateFile{fixltxhyph.sty}{t}{\from{fixltxhyph.dtx}{style}} +\generateFile{fixltxhyph.sty}{f}% + {\from{fixltxhyph.dtx}{style}} \def\tmpa{plain} \ifx\tmpa\fmtname\endgroup\expandafter\bye\fi @@ -46,22 +49,22 @@ and the English documentation file in pdf format. % \iffalse %<*driver> \documentclass{ltxdoc} -\ProvidesFile{fixltxhyph.dtx}[2012/04/02 v.0.4 Documented TeX file for -the FixLtxHyph package] +\ProvidesFile{fixltxhyph.dtx}[2024-12-28 v.0.5 Documented TeX file for the FixLtxHyph package] \GetFileInfo{fixltxhyph.dtx} -\usepackage[latin1]{inputenc} +\usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{color} \usepackage{multicol} \title{\centering The FixLtxHyph package\protect\\ -A small fix in order to hyphenate emphasized words after a vocalic elision\protect\\ -in Catalan, French, Italian, Romansh, and Friulan} +A small fix in order to hyphenate emphasised words after a vocalic elision\protect} \date{\fileversion\space\filedate} \author{Claudio Beccari} \usepackage{array} \usepackage{metalogo} \def\prog#1{\textsf{#1}} +\def\amb#1{\textsf{\slshape#1}} +\def\omissis{[\dots\!]} \begin{document}\errorcontextlines=9 \maketitle \begin{multicols}{2} @@ -72,268 +75,382 @@ in Catalan, French, Italian, Romansh, and Friulan} \end{document} %</driver> % \fi -% \CheckSum{84} +% \CheckSum{16} % % \begin{abstract} -% This file fixes a small feature of the hyphenation algorithm used by the \TeX\ system -% typesetting engines that manifests itself only with those languages that use the -% apostrophe for marking a vocalic elision. This small package was set up to fix this -% little undesirable feature in Italian, but it was extended to Catalan, French, the -% future implementation of the fourth official Swiss language Rumantsch Grischun (Romansh -% in English) and the future implementation of the Regional Language Friulan, spoken -% and written in North Eastern Italy. This fix operates correctly with both \prog{pdflatex} and \prog{xelatex}. +% This file fixes a small feature of the hyphenation +% algorithm used by the \TeX\ system typesetting +% engines that manifests itself only with those +% languages that use the apostrophe for marking a +% vocalic elision. This small package was set up to +% fix this little undesirable feature in Italian, +% but it was extended to Catalan, French, the +% fourth official Swiss language Rumantsch Grischun +% (Romansh in English) and the Regional Language +% Friulan, spoken and written in North Eastern +% Italy. This fix operates correctly with +% \prog{pdflatex}, \prog{lualate}, and +% \prog{xelatex}. % \end{abstract} +% % \section{What is the feature to be fixed} -% The five languages Catalan, French, Italian, Romansh, and Friulan use the apostrophe -% for marking the vocalic elision of the ending vowel at the end of prepositions, articles, -% articulated prepositions, definite adjectives, and other words playing similar rôles when -% they just precede nouns, adjectives, verbs, numerals, that start with a vowel. Probably -% there are other languages that use the apostrophe in a similar way. I can easily upgrade -% this small package if \LaTeX\ users of other languages let me know about such languages. +% The five languages Catalan, French, Italian, +% Romansh, and Friulian use the apostrophe for +% marking the vocalic elision of the ending vowel +% at the end of prepositions, articles, articulated +% prepositions, definite adjectives, and other words +% playing similar rôles when they just precede +% nouns, adjectives, verbs, numerals, that start +% with a vowel. Probably there are other languages +% that use the apostrophe in a similar way. I can +% easily upgrade this small package if \LaTeX\ users +% of other languages let me know about such +% languages. % -% This feature is common to most Romance languages (from West to East) from Catalan and -% Valencian, to French, Langue d'oc, Occitan, Provençal, Vivaroalpin, Italian, Piedmontese, -% Lombard, Romansh, Ladin, Friulian; up to now only Catalan, French and Italian are handled -% by the \TeX\ system programs; at the same time most of these languages are minority ones -% and are being protected by local legislation or are supported by specific cultural or -% linguistic institutions; Romansh has got a national/federal legal status in -% Switzerland and is being used in legal and official documents in the whole Swiss -% Confederation, not only in its area of everyday use, the Kanton Graubunden or Canton -% Grigioni or Chantun Grischun (where seven Romansh varieties are being spoken, besides -% Swiss German, Italian, and other languages). The Friulan language has an official -% regional status in the North-eastern Italian Region Friuli\,-Venezia Giulia. +% This feature is common to most Romance languages +% (from West to East) from Catalan and Valencian, +% to French, Langue d'oc, Occitan, Provençal, +% Vivaroalpin, Italian, Piedmontese, Lombard, +% Romansh, Ladin, Friulian; up to now only Catalan, +% French, Italian, Romansh, Friulian, Piedmontese, +% and Occitan are handled by the \TeX-system +% programs; at the same time most of these languages +% are minority ones and are being protected by local +% legislation or are supported by specific cultural +% or linguistic institutions; Romansh has got a +% national/federal legal status in Switzerland and +% is being used in legal and official documents in +% the whole Swiss Confederation, not only in its +% area of everyday use, the Kanton Graubunden or +% Canton Grigioni or Chantun Grischun (where seven +% Romansh varieties are being spoken, besides +% Swiss German, Italian, and other languages). The +% Friulian language has an official regional status +% in the North-eastern Italian Region +% Friuli\,-Venezia Giulia. % -% This spelling rule is very rigorous in French; I suppose it is also a rigorous rule in -% Catalan, Romansh, and Friulan but I am not that familiar with these languages even if I -% can understand their written forms. In Italian it used to be a rigorous rule many years -% ago, but nowadays it is less frequently used when plurals are involved. -% Nevertheless apostrophes are practically the only analphabetic sign you see in an -% Italian text except for letters and punctuation and quotation marks. +% This spelling rule is very rigorous in French; +% I suppose it is also a rigorous rule in Catalan, +% Romansh, and Friulian but I am not so familiar +% with these languages even if I can understand them +% while reading texts written in these languages. +% In Italian it used to be a rigorous rule many +% years ago, but nowadays it is less frequently +% used when plurals are involved. Nevertheless +% apostrophes are practically the only analphabetic +% sign you see in an Italian texts besides +% punctuation and quotation marks. % -% In order to hyphenate correctly these word combinations all five languages have to -% declare the apostrophe, that has a category code of~12, as a glyph with non zero lower -% case code. In facts all five languages declare: +% In order to hyphenate correctly these word +% combinations all such languages have to declare +% the apostrophe, that has a category code of~12, +% as a glyph with non zero lower case code. In facts +% all such languages declare: %\begin{verbatim} %\lccode`\'=`\' %\end{verbatim} -% or something equivalent. With this little trick, the typesetting engine considers the -% apostrophe as a valid word character and treats the whole string as a single word; the -% patterns of these languages, of course, take into consideration also the apostrophe so -% that the resulting correct line breaks are easily found: +% or something equivalent. With this little trick, +% the typesetting engine considers the apostrophe as +% a valid word character and treats the whole string +% as a single word; the hyphenation patterns of +% these languages, of course, take into +% consideration also the apostrophe so that the +% resulting correct line breaks are easily found: %\begin{center} %\begin{tabular}{l>{\ttfamily}ll} -%Catalan & d'aquesta & d'a-ques-ta \\ -%French & l'électricité & l'élec-tri-ci-té \\ +%Catalan & d'aquesta & d'a-ques-ta \\ +%French & l'électricité & l'élec-tri-ci-té \\ +%Friulian & l'arbul & l'ar-bul \\ %Italian & dell'eleganza & del-l'e-le-gan-za \\ -%Romansh & l'identitad & l'i-den-ti-tad \\ -%Friulan & l'arbul & l'ar-bul +%Romansh & l'identitad & l'i-den-ti-tad %\end{tabular} %\end{center} % -% So where is the problem? It emerges when the second part of the string is emphasized, +% So where is the problem? It emerges when the +% second part of the string is emphasised, % because in this case no hyphenation takes place: %\begin{center} %\begin{tabular}{l>{\ttfamily}ll} -%Catalan & d'\string\emph\{aquesta\} & d'\emph{aquesta} \\ -%French & l'\string\emph\{électricité\} & l'\emph{électricité} \\ -%Italian & dell'\string\emph\{eleganza\} & dell'\emph{eleganza} \\ -%Romansh & l'\string\emph\{identitad\} & l'\emph{identitad} \\ -%Friulan & l'\string\emph\{arbul\} & l'\emph{arbul} +%Catalan & d'\string\emph\{aquesta\} & d'\emph{aquesta} \\ +%French & l'\string\emph\{électricité\} & l'\emph{électricité} \\ +%Friulian & l'\string\emph\{arbul\} & l'\emph{arbul}\\ +%Italian & dell'\string\emph\{eleganza\} & dell'\emph{eleganza} \\ +%Romansh & l'\string\emph\{identitad\} & l'\emph{identitad} %\end{tabular} %\end{center} % -% This behavior is easily explained, so that it is not to be considered a bug, but a -% feature; a feature that is annoying only when using the above five named languages. -% The point is that all \TeX\ system typesetting engines consider a word to be that -% character string starting after a character invalid in a word and finishing with the -% first token invalid in a word. Notice that when the hyphenating algorithm comes to work -% the command |\emph| has already been expanded and it ends up with the qualifications of -% the selected font; therefore a string such as \verb*| d'aquesta | (starting after -% a space and ending before the following space) is made up of valid characters; but -% \verb*| d'\emph{aquesta} | is a ``word'' starting after a space and ending before -% a space, but containing a font change. And this makes the word invalid for hyphenation. -% The \TeX\-book is clear on this respect: ``If a suitable letter is found [as a starting -% character], let it be in font $f$. \dots\ \TeX\ continues to scan forward until coming -% to something that's not one of the following three ``admissible items'': (1) a character -% in font $f$ whose |\lccode| is not zero; (2) a ligature formed entirely from characters -% of type (1); (3) an implicit kern. \dots\ Notice that all these letters are -% in font~$f$.'' +% This behaviour is easily explained, so that it is +% not to be considered a bug, but a feature; a +% feature that is annoying only when using the +% above named languages. +% +% The point is that all \TeX\ system typesetting +% engines consider a word to be that character +% string starting after a character invalid in a +% word and finishing with the first token invalid +% in a word. Notice that when the hyphenating +% algorithm comes to work the command |\emph| has +% already been expanded and it ends up with the +% qualifications of the selected font; therefore a +% string such as \verb*| d'aquesta | (starting after +% a space and ending before the following space) is +% made up of valid characters; but +% \verb*| d'\emph{aquesta} | is a “word†starting +% after a space and ending before a space, but +% containing a font change. And this makes the word +% invalid for hyphenation. % -% This was a specific programming choice decided by Donald~E.\ Knuth together with Frank -% Liang, his PhD student who developed the hyphenation algorithm implemented in the -% typesetting engines of the \TeX\ system\footnote{I have been told that Lua\TeX\ is -% developing a different algorithm that eliminates this feature.}. -% As all such decisions, it is a compromise between accuracy and speed. And remember that -% at the beginning \prog{tex} the program was used essentially with English, a language -% that does not use accented letters and uses elision in a much different way as the one we -% are speaking here. The problem did non exist and, I suppose, it will never exist in -% English. +% The \TeX\-book is clear on this respect: +% \begin{quote}If a suitable letter is found [as a +% starting character], let it be in font $f$. +% \omissis\ \TeX\ continues to scan forward until +% coming to something that's not one of the +% following three “admissible itemsâ€: (1) a +% character in font $f$ whose |\lccode| is not zero; +% (2) a ligature formed entirely from characters of +% type (1); (3) an implicit kern. \omissis\ Notice +% that all these items are in font~$f$.\end{quote} +% +% This was a specific programming choice decided by +% Donald~E.\ Knuth together with Frank Liang, his +% PhD student who developed the hyphenation +% algorithm implemented in the typesetting engines +% of the \TeX\ system\footnote{I have been told that +% Lua\TeX\ developed a different algorithm that +% eliminates this feature.}. +% All such decisions are a compromise between +% accuracy and speed. Remember also that at the +% beginning \prog{tex} the program was used +% essentially with English, a language that does not +% use accented letters and uses elision in a much +% different way as the ones we are speaking here. +% The problem did non exist and, I suppose, it will +% never exist in English. % % \section{The solutions} -% As a compromise I decided to solve the problem in an automatic way only when the second -% part of the ``word'' to be hyphenated is emphasized. I suppose it is the most frequent -% situation, although no one can avoid thinking to other situations; for example: the -% second part of such ``word'' after the apostrophe is bolded, is colored, is written -% in another font selected on purpose or is in another alphabet, is in italics (with -% no automatic inclination switching); in such cases the solution is manual and remains -% manual, because there are too many possibilities and it is cumbersome to deal with all -% of them. +% As a compromise I decided to solve the problem in +% an automatic way only when the second part of the +% “word†to be hyphenated is \emph{emphasised}. I +% assume it is the most frequent situation, although +% no one can avoid thinking to other situations; for +% example: the second part of such “word†after the +% apostrophe is bolded, is coloured, is written in +% another font selected on purpose or is in another +% alphabet, is in italics (with no automatic +% inclination switching); in such cases the solution +% is manual and remains manual, because there are +% too many possibilities and it is cumbersome to +% deal with all of them. % -% But manual or automatic, how should we proceed? Simply we must convince that the -% starting letter must not be the start of the part preceding the apostrophe, but what +% But manual or automatic, how should we proceed? +% Simply we must convince the typesetting program +% that the starting letter must not be the start of +% the part preceding the apostrophe, but what % follows it. -% This is simple: it suffices to put after the apostrophe an unbreakable, zero width glob -% of glue; \TeX\ starts looking for a potential starting letter after the glue. -% Therefore the manual solution consists in defining a short macro such as the following -% one: +% +% This is simple: it suffices to put after the +% apostrophe an unbreakable, zero width glob of +% glue so that \TeX\ starts looking for a potential +% starting letter after the glue. Therefore the +% manual solution consists in defining a short macro +% such as the following one: %\begin{verbatim} %\newcommand\hz{\nobreak\hskip\z@skip} %\end{verbatim} -% or, if you want to avoid setting this short command into a personal \texttt{.sty} file, -% simple change |\z@skip| with |0pt|. You will then have to modify the font changing +% or, if you want to avoid setting this short +% command into a personal \texttt{.sty} file, +% simply change |\z@skip| with |0pt|. You will then +% have to modify the font changing % phrase into something such as: %\begin{verbatim} %... d'\hz\textbf{aquesta} ... %\end{verbatim} -% The |\hz|, whose name reminds the phrase ``Horizontal skip of an unbreakable Zero width -% glob of glue'', finishes the preceding word and sets the grounds for starting the search -% of a new starting letter of another word; it will be found after the font selections code -% introduced in the horizontal list by the selected font identification. +% The |\hz|, whose name reminds the phrase +% “Horizontal skip of an unbreakable Zero width +% glob of glueâ€, finishes the preceding word and +% sets the grounds for starting the search of a new +% starting letter of another word; it will be found +% after the font selection code introduced in the +% horizontal list by the selected font +% identification. % -% The automatic solution, on the opposite, implies a small but substantial modification of -% the |\emph| command. In facts the text command uses the text declaration |\em|; on turn -% |\em| is a robust command, that is it is defined as \verb*|\protect\em |: it would be -% very unwise to modify a protected command, so it is necessary to modify the -% \texttt{protect}ed one, and this operation is not trivial because of the space in this macro name. -% In any case if we find out how, we must add |\hz| to the definition of \verb*|\em | -% before its argument, the real text to emphasize, is processed. +% The automatic solution, on the opposite, implies +% a small but substantial modification of the +% |\emph| command. In facts the text command uses +% the text declaration |\em|; on turn |\em| is a +% robust command, that is defined as +% \verb*|\protect\em |: it would be very unwise to +% modify a protected command, so it is necessary to +% modify the \texttt{protect}ed one, and this +% operation is not trivial because of the space in +% this macro name. % -% This small package does exactly this, only for the five named languages, and only if -% they are used, and only with the |\emph| command. The |\hz| command is available to the -% user in a global way, so that when this package is loaded, the manual solution remains -% valid for every language, although in very unlikely situations. +% In any case if we find out how, we must add |\hz| +% to the definition of \verb*|\em | before its +% substitution text, so that the \TeX\ search of the +% first character of a real word starts at the end +% of the substitution code. % -% It has been tested with the five languages with both \prog{pdflatex} and \prog{xelatex}, -% and apparently it works as expected; it has been throughly tested in all situations with -% Italian; it should work properly also in French, in Romansh, and in Friulan. The adopted -% solution does not fiddle with active characters and therefore it does not interfere with -% the internal workings and settings of Catalan and the other languages. +% This small package does exactly this only with +% the |\emph| command. Its functionalities actually +% are in force for any language, non only for the +% above named languages. + +% The |\hz| command is globally available to the +% user, so that when this package is loaded, the +% manual solution remains valid in any situation, +% as, for example, for the first line of a list +% item for the text that follows the \cs{item} +% command and its argument. +% It is necessary, especially within a +% \amb{description} environment, because sometimes +% the item mandatory argument entry might be pretty +% long and the first line might require hyphenation +% at its end. +% +% It has been tested with the above named five +% languages with both \prog{pdflatex}, +% \prog{xelatex}, and also with \prog{lualatex}; and +% apparently it works as expected; it has been +% throughly tested in all situations with Italian; +% it should work properly also in French, in +% Romansh, and in Friulian; certainly it works with +% \texttt{utf8} text encoding. The adopted solution +% does not fiddle with active characters and +% therefore it does not interfere with the internal +% workings and settings of Catalan and other +% languages. % % \section{Installation} -% With modern \TeX\ distributions these instructions are superfluous; should you need to -% install by hand, download from \textsc{ctan} in a scratch directory (possibly create one, -% and after finishing, delete the whole directory with its contents) run this file -% \texttt{fixltxhyph.dtx} through \prog{pdflatex}; you get two files and move them -% as follows: +% With modern \TeX\ distributions these instructions +% are superfluous; should you need to manually +% install this package, download from \textsc{ctan} +% in a scratch directory (possibly create one, and +% after finishing, delete the whole directory with +% its contents) run this file +% \texttt{fixltxhyph.dtx} through \prog{pdflatex}; +% you get two files and move them as follows: %\begin{itemize} -%\item Move all the files in the following directories on your disk; if you don't already -% have those directories, create them. -%\item These directories should be created in your personal \texttt{texmf} tree; if you -% don't have one, create it; how to do this and where to root it depends on your operating -% system; before doing any change to your hard disk, please read carefully the TeX Live -% or the MiKTeX documentations in order to find out what a personal tree is. -%\item Move \texttt{fixltxhyph.dtx} to \texttt{.../texmf/source/latex/FixLtxHyph/}; -%\item Move \texttt{fixltxhyph.pdf} to \texttt{.../texmf/doc/latex/FixLtxHyph/}; -%\item Move \texttt{fixltxhyph.sty} to \texttt{.../texmf/tex/latex/FixLtxHyph/}; -%\item if your distribution requires it, refresh the file name database. +%\item +% Move all the files in the following directories +% on your disk; if you don't already have those +% directories, create them. +%\item +% These directories should be created in your +% personal \texttt{texmf} tree; if you don't have +% one, create it; how to do this and where to root +% it depends on your operating system; before doing +% any change to your hard disk, please read +% carefully the TeX Live or the MiKTeX +% documentations in order to find out what a +% personal tree is. +%\item +% Move \texttt{fixltxhyph.dtx} to \texttt{.../texmf/source/latex/FixLtxHyph/}; +%\item +% Move \texttt{fixltxhyph.pdf} to \texttt{.../texmf/doc/latex/FixLtxHyph/}; +%\item +% Move \texttt{fixltxhyph.sty} to \texttt{.../texmf/tex/latex/FixLtxHyph/}; +%\item +% if your distribution requires it, refresh the file name database. %\end{itemize} -% You are now ready to use the package by simply invoking it in the preamble of your +% You are now ready to use the package by simply +% invoking it in the preamble of your % documents: %\begin{verbatim} %\usepackage{fixltxhyph} %\end{verbatim} % %\section{Aknowledgements} -%I wish to thank Lorenzo Pantieri who tested the preliminary and the actual versions of -% this package and directly or indirectly helped debugging the code, especially in the -% preliminary version that used active characters and was particularly buggy. Another -% big thank to Enrico Gregorio who spotted the protection problem of the |\em| command. +% I wish to thank Lorenzo Pantieri who tested the +% preliminary and the actual versions of this +% package and directly or indirectly helped +% debugging the code, especially in the preliminary +% version that used active characters and was +% particularly buggy. Another big thank you to +% Enrico Gregorio who spotted the protection problem +% of the |\em| command. % % \StopEventually{} % %\section{The documented code} -% We start by identifying the package and the necessary format file: -% \begin{macrocode} +% We start by identifying the package and the +% necessary format file: +%\iffalse %<*style> -\ProvidesPackage{fixltxhyph}[2011/04/02 v.0.4 Small fix for hyphenating -emphasized words preceded by vocalic elision] -\NeedsTeXFormat{LaTeX2e}[2011/06/27] -% \end{macrocode} -% Then we make sure that the package \texttt{babel} or \texttt{polyglossia} has already -% been loaded; otherwise we warn the user and exit; no patches can be made to an unknown -% package. +%\fi % \begin{macrocode} -\@ifpackageloaded{babel}{}{\@ifpackageloaded{polyglossia}{}{% -\PackageWarning{FixLtXHyph}{This package must be loaded after babel - or polyglossia}% -\endinput}} +\ProvidesPackage{fixltxhyph}[2024/12/01 v.0.5 + Small fix for hyphenating emphasised words] +\NeedsTeXFormat{LaTeX2e}[2022/01/01] % \end{macrocode} % -% We need the package |etoolbox| in order to perform any action on control sequences -% that contain spaces in their names; we do not need any means to test if we are working -% with \texttt{babel} or with \texttt{polyglossia} because, thanks to the previous -% tests, one of the two packages has certainly been loaded. -% \begin{macrocode} -\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}} -% \end{macrocode} -% We define a very short command |\hz| in order to have available a handy command -% for inserting an unbreakable zero-width glob of glue in case we needed to do some -% sort of patching by hand. +% We need the package |etoolbox| in order to perform +% any action on control sequences that contain +% spaces in their names. We keep the old +% \verb|\@ifpackageloaded| command, not because we +% love vintage commands, because since 2024 +% it is available the \verb|\IfPackageLoadedF| +% command, that is more easily maintainable +% and does not require the empty argument, +% but because users sometimes work with vintage +% \TeX-system installations. +% +% First we define a very short command |\hz| in +% order to have available a handy command for +% inserting an unbreakable zero-width glob of glue +% in case we needed to manually do some sort of +% patching. % \begin{macrocode} \newcommand\hz{\nobreak\hskip\z@skip} % \end{macrocode} -% We make patches only if one or more of the five languages Catalan, French, Italian, -% Romansh, or Friulan (or its alias Furlan) has been invoked as an option to \texttt{babel} -% or specified to \texttt{polyglossia}; if none of these options had been selected, -% evidently the user was thinking to other details and missed the point that this patch is -% necessary only for the above mentioned five languages. In any case no harm takes place -% if from now on nothing else gets done, except for the definition of |hz| that remains -% available to the user. % -% The next bit of code defines some aliases in order to keep the original meaning of the -% declaration |\em|; in order to patch an alias, so as to be able to set the proper -% definitions only for the named five languages and to restore the original situation when -% a change of language takes place. +% Next we patch the \cs{em\textvisiblespace} +% command. To do so in an efficient way we need +% the |etooolbox| package. % \begin{macrocode} -\letcs{\FLH@originalem}{em } -\let\FLH@newem\FLH@originalem -\preto\FLH@newem{\hz} +\IfPackageLoadedF{etoolbox}{\RequirePackage{etoolbox}} % \end{macrocode} +% In a previous version we tested if one of the +% certainly (vulnerable languages that use the +% vocalic elision replaced by an apostrophe) was +% the current language; in this new package version +% 0.5 we omit such test because the patch is +% harmless even if the apostrophe does not imply any +% vocalic elision. % -% We then use a repetition cycle based on a list of language names; if the -% language with one of the listed names has been invoked as an option to \texttt{babel}, -% or specified to \texttt{polyglossia} then the patched \verb*|\em | definition is made -% the default, while when changing language the original definition is restored; we define a macro that contains the language names: -% \begin{macrocode} -\def\@tempB{catalan,french,italian,romansh,friulan,furlan} -% \end{macrocode} -% then we perform the above mentioned cycles; we have to distinguish if we are using -% \texttt{polyglossia} or \texttt{babel} because the internal setting and resetting macros -% of these two packages have different names; they are all made up by the agglutination of -% a prefixx to the language name, so we have to build the macro names to patch with the -% usual deferred name contraction by means of |\expandafter| and |\csname| with its -% companion |\endcsname|. +% The next bit of code defines an alias in +% order to keep the original meaning of the +% declaration |\em|; in order to patch an alias to +% be used only in the redefinition of the same named new macro. % \begin{macrocode} -\@ifpackageloaded{polyglossia}% -{\@for\@tempA:=\@tempB\do{% - \expandafter\ifx\csname captions\@tempA\endcsname\relax\else - \expandafter\addto\csname noextras@\@tempA\endcsname{\cslet{em }{\FLH@originalem}}% - \expandafter\addto\csname blockextras@\@tempA\endcsname{\cslet{em }{\FLH@newem}}% - \expandafter\addto\csname inlineextras@\@tempA\endcsname{\cslet{em }{\FLH@newem}}% - \fi}% -}{\@for\@tempA:=\@tempB\do{% - \expandafter\ifx\csname captions\@tempA\endcsname\relax\else - \expandafter\addto\csname extras\@tempA\endcsname{\cslet{em }{\FLH@newem}}% - \expandafter\addto\csname noextras\@tempA\endcsname{\cslet{em }{\FLH@originalem}}% - \fi}% -} +\letcs{\FLH@originalem}{em } +\RenewDocumentCommand{\em }{m}{\FLH@originalem\hz} % \end{macrocode} +% Notice that the \cs{em\textvisiblespace} defined +% by means of the \LaTeX3 \cs{RenewDocumentCommand} +% is robust as all commands defined by means of this +% kind of \LaTeX3 commands. +% +% Eventually let us conclude with a comment: +% compared with the previous version 0.4 of this +% package the number of control sequences contained +% in this new version is drastically diminished +% from 84 to 16. This is one of the advantages +% gained by using the \LaTeX3 language besides the +% \texttt{etoolbox} facilities. +% % -% This documented file is now terminated and its final commands are issued. +% This documented file is now finished and its +% final commands are issued: % \begin{macrocode} \endinput -%</style> % \end{macrocode} +% together with the |docstrip| command \cs{Finale} +% that allows to control if the final extracted code +% is complete. +%\iffalse +%</style> +%\fi % % \Finale % \endinput |