summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/polski/ot1patch.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/polski/ot1patch.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/polski/ot1patch.dtx')
-rw-r--r--macros/latex/contrib/polski/ot1patch.dtx237
1 files changed, 237 insertions, 0 deletions
diff --git a/macros/latex/contrib/polski/ot1patch.dtx b/macros/latex/contrib/polski/ot1patch.dtx
new file mode 100644
index 0000000000..33315b721a
--- /dev/null
+++ b/macros/latex/contrib/polski/ot1patch.dtx
@@ -0,0 +1,237 @@
+% \iffalse -*- doctex -*-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% %%
+%% Package ot1patch %%
+%% %%
+%% Purpose: to provide best possible substitutes for Polish national %%
+%% characters using OT1 Computer Modern Roman fonts %%
+%% %%
+%% %%
+%% Copyright (c) by Marcin Woli\'nski <1997/06/18> %%
+%% wolinski@gust.org.pl %%
+%% %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% %%
+%% The package may be used freely, but you are not allowed to modify %%
+%% this file. If you wish to make any changes please make a copy %%
+%% under a different name. %%
+%% %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \fi
+ \def\fileversion{v 0.3}
+ \def\docdate{1997/05/16}
+ \def\filedate{1997/10/08}
+% \CheckSum{209}
+%
+% \title{Pakiet/Package ot1patch\thanks
+% {Version \fileversion\ dated \filedate.}}
+% \author{Marcin Woli\'nski}
+% \date{\docdate}
+%
+% \maketitle
+% Celem tego pakietu jest dostarczenie substytut\'{o}w polskich
+% znak\'{o}w narodowych, zbudowanych jedynie ze znak\'{o}w
+% dost\k{e}pnych w fontach w uk{\l}adzie OT1, szczeg\'{o}lnie fontach
+% Computer Modern. Poniewa\.{z} wysokiej jako\'{s}ci polskie fonty
+% dla \TeX a s\k{a} publicznie dost\k{e}pne, stosowanie tego pakietu
+% nie jest zalecane. Mo\.{z}na go poleci\'c jedynie mieszka\'{n}com
+% bezludnych wysp bez dost\k{e}pu do Internetu (ale sk\k{a}d oni mieli
+% by mie\'c ten pakiet?).
+%
+% Pakiet zosta{\l} pomy\'{s}lany jako dodatek do pakietu \textsf{Po
+% polsku} autorstwa Mariusza Olko. Mo\.{z}na go jednak stosowa\'c
+% niezale\.{z}nie. Skutkiem zadeklarowania jego u\.{z}ycia
+% komend\k{a} |\usepackage{ot1patch}| jest zmiana definicji
+% niekt\'{o}rych komend akcentowych w uk{\l}adzie OT1
+% (w~szczeg\'{o}lno\'{s}ci komenda |\k| produkuj\k{a}ca ogonek,
+% przestaje powodowa\'c b{\l}\k{a}d). Uk{\l}ad OT1 nie jest w istocie
+% dobrze okre\'{s}lony, bowiem fonty ,,maszynowe'' r\'{o}\.{z}ni\k{a}
+% si\k{e} od pozosta{\l}ych na kilku pozycjach. \textsf{ot1patch}
+% troszczy si\k{e} i o t\k{e} spraw\k{e}.
+%
+% Pakiet \textsf{ot1patch} w istocie jest adaptacj\k{a} do nowego
+% \LaTeX a stylu \textsf{plfonts.sty} autorstwa Leszka Holenderskiego.
+% Styl ten jest najstaranniejsz\k{a} znan\k{a} mi wersj\k{a}
+% dorobienia protez ogonk\'{o}w do font\'{o}w Computer Modern.
+%
+% \bigskip
+% The purpose of this package is to provide substitutes of Polish
+% national characters built using only old fonts (OT1). Besides of
+% producing characters missing from OT1 this package takes care of
+% less obvious matter: OT1 is not a really well-defined encoding since
+% typewritter fonts differ from others in some positions.
+%
+% The package is loaded in the standard way with the
+% |\usepackage{ot1patch}| command.
+%
+% \StopEventually{}
+%
+% \section{Implementation}
+% \iffalse
+% Since I hate the presence of section `Printing the documentation' in
+% every DOCed package my driver is put into a metacomment. To print
+% documentation LaTeX this file. If you need to change the driver run
+% DOCSTRIP and ask it to make ogonek.drv by stripping ogonek.dtx with
+% option `driver'. Do *not* modify this file.
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{ot1patch}
+\DisableCrossrefs
+%<driver>%\OnlyDescription
+%<driver>%\EnableCrossrefs
+%<driver>%\CodeLinesIndex
+\begin{document}
+ \DocInput{ot1patch.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \subsection{Identification}
+% We start the code with standard identification of the package
+% \begin{macrocode}
+%<*package>
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]
+\ProvidesPackage{ot1patch}[\filedate\space\fileversion\space
+ A patch for some OT1 characters (MW)]
+% \end{macrocode}
+%
+% \subsection{The \texttt{\string\k} macro (Polish ogonek)}
+% This comes from L.~Holenderski's \texttt{plfonts.sty}.
+% Positioning of ogonek for specific letters is tuned for 300dpi
+% Computer Modern fonts, but works reasonably well with other
+% resolutions.
+%
+% Ogonek is made from half-circle used by \TeX\ to produce
+% $\hookrightarrow$.
+% \begin{macro}{\@sob}
+% Macro |\@sob| positioning ogonek under a letter. Parameters are
+% letter and fractions hl,ho,vl,vo.
+% \begin{macrocode}
+\dimendef\pl@left=0 \dimendef\pl@down=1
+\dimendef\pl@right=2 \dimendef\pl@temp=3
+\def\@sob#1#2#3#4#5{%
+ \setbox0\hbox{#1}\setbox1\hbox{$_\mathchar'454$}\setbox2\hbox{p}%
+ \pl@right=#2\wd0 \advance\pl@right by-#3\wd1
+ \pl@down=#5\ht1 \advance\pl@down by-#4\ht0
+ \pl@left=\pl@right \advance\pl@left by\wd1
+ \pl@temp=-\pl@down \advance\pl@temp by\dp2 \dp1=\pl@temp
+ \leavevmode
+ \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@iIuUogonek}
+% \begin{macro}{\k}
+% Here is the |\k| default macro (it is not normally defined in OT1), with
+% special positioning of ogonek for some letters. We don't do this with
+% |\DeclareTextCompositeCommand| because it wouldn't fit with the defaults
+% mechanism.
+% \begin{macrocode}
+\def\@iIuUogonek#1{%
+ \ifx i#1\@sob i{.66}{.20}{0}{.90}\else
+ \ifx I#1\@sob I{.80}{.50}{0}{.90}\else
+ \ifx u#1\@sob u{.66}{.20}{0}{.90}\else
+ \ifx U#1\@sob U{.60}{.35}{0}{.90}\else
+ \@sob {#1}{.50}{.35}{0}{.90}\fi
+ \fi \fi \fi
+ }
+\DeclareTextCommandDefault\k[1]{%
+ \ifx a#1\@sob a{.66}{.20}{0}{.90}\else
+ \ifx A#1\@sob A{.80}{.50}{0}{.90}\else
+ \ifx e#1\@sob e{.50}{.35}{0}{.93}\else
+ \ifx E#1\@sob E{.60}{.35}{0}{.90}\else
+ \@iIuUogonek{#1}%
+ \fi \fi \fi \fi
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Polish crossed l}
+% Since in typewritter fonts there is no cross character for Polish \l\ we
+% will have to take special actions then. For that purpose we define the
+% next macro. It performs a rather devious check if the font in use is
+% `typewritter like'. Regular text fonts contain in position '40 the cross
+% for Polish \l, but in typewritter `visible space' occurs there. Second
+% of these characters has positive depth, contrary to the first, so we
+% check for that. This is slow, better check is welcome.
+%
+% \begin{macrocode}
+\def\if@ttfont#1#2{\setbox0=\hbox{\char'40}\ifdim\dp0>0pt#1\else#2\fi}
+% \end{macrocode}
+%
+% \begin{macro}{\@spb}
+% This definition is used to cross l or L in typewritter fonts.
+% \changes{0.2}{1997/06/07}{Added leavevmode}
+% \begin{macrocode}
+\def\@spb#1#2#3#4#5{%
+ \setbox0\hbox{#1}\setbox2\hbox{\char'023}%
+ \pl@right=#2\wd0 \advance\pl@right by-#3\wd2
+ \pl@down=#5\ht2 \advance\pl@down by-#4\ht0
+ \pl@left=\pl@right \advance\pl@left by\wd2
+ \ht2=\pl@down \dp2=-\pl@down
+ \leavevmode
+ \kern\pl@right\lower\pl@down\box2\kern-\pl@left #1}
+% \end{macrocode}
+% \end{macro}
+%
+% And here are definitions of |\l| and |\L|. Unfortunately we have
+% to redefine \LaTeX's values.
+% \begin{macrocode}
+\DeclareTextCommand\l{OT1}{%
+ \if@ttfont{\@spb l{.45}{.5}{.4}{.8}}%
+ {{\char32l}}}
+\DeclareTextCommand\L{OT1}{%
+ \if@ttfont{\@spb L{.23}{.5}{.4}{.8}}%
+ {\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}}}
+% \end{macrocode}
+%
+% \subsection{Dot accent}
+% \begin{macro}{\@skb}
+% \changes{0.2}{1997/06/07}{Added leavevmode}
+% Typewritter fonts don't contain the dot accent so we use raised
+% period instead. As this style is prepared with Polish language
+% in mind, this is done for \.z only.
+% \begin{macrocode}
+\def\@skb#1#2#3#4#5{%
+ \setbox0\hbox{#1}\setbox1\hbox{\char'056}%
+ \pl@right=#2\wd0 \advance\pl@right by-#3\wd1
+ \pl@down=#5\ht1 \advance\pl@down by-#4\ht0
+ \pl@left=\pl@right \advance\pl@left by\wd1
+ \leavevmode
+ \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1}
+% \end{macrocode}
+% \end{macro}
+%
+% And appropriate redefinition for |\.|:
+% \begin{macrocode}
+\DeclareTextCompositeCommand\.{OT1}z{%
+ \if@ttfont{\@skb z{.5}{.5}{1.2}{0}}%
+ {{\accent'137z}}}
+\DeclareTextCompositeCommand\.{OT1}Z{%
+ \if@ttfont{\@skb Z{.5}{.5}{1.1}{0}}%
+ {{\accent'137Z}}}
+% \end{macrocode}
+%
+% \subsection{French quotes
+% (\guillemotleft guillemotes\guillemotright)}
+% \changes{0.2}{1997/06/18}{Added \cs{leavevmode}}
+% Here is the best substitute for guillemotes we could think of.
+% \begin{macrocode}
+\DeclareTextCommandDefault\guillemotleft
+ {\leavevmode\raise.3ex
+ \hbox{$\scriptscriptstyle\langle\!\langle$}}
+\DeclareTextCommandDefault\guillemotright
+ {\leavevmode\raise.3ex
+ \hbox{$\scriptscriptstyle\rangle\!\rangle$}}
+% \end{macrocode}
+%
+% And that's all.
+% \begin{macrocode}
+\endinput
+%</package>
+% \end{macrocode}
+%
+%
+% \Finale