diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:53:51 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:53:51 +0000 |
commit | 4563a151bf4da78d01df3cec80823c16721904b6 (patch) | |
tree | 271be069194f2c5ad65bffa600ad09739601940e /Master/texmf-dist/source/latex/grverb/grverb.dtx | |
parent | 899006c83eae8774d5c7d48976ef55251518d684 (diff) |
trunk/Master/texmf-dist/source/latex/grverb
git-svn-id: svn://tug.org/texlive/trunk@315 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/grverb/grverb.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/grverb/grverb.dtx | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/grverb/grverb.dtx b/Master/texmf-dist/source/latex/grverb/grverb.dtx new file mode 100644 index 00000000000..a13028d7a26 --- /dev/null +++ b/Master/texmf-dist/source/latex/grverb/grverb.dtx @@ -0,0 +1,182 @@ +%% \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 \~} +%\iffalse +% +% (c) copyright 1999 Apostolos Syropoulos +% This software is derived from original software by the LaTeX3 Project. +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. +% +% However, the above copyright notice does not apply in the case of +% ``Crete University Press'' as this publisher is not allowed to +% use or alter this file in any way. +% +% Please report errors or suggestions for improvement to +% +% Apostolos Syropoulos +% 366, 28th October Str. +% GR-671 00 Xanthi, GREECE +% apostolo@ocean1.ee.duth.gr or apostolo@obelix.ee.duth.gr +% +%\fi +% \CheckSum{145} +% \iffalse This is a Metacomment +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\GetFileInfo{grverb.drv} +\begin{document} + \DocInput{grverb.dtx} +\end{document} +%</driver> +% \end{macrocode} +% \fi +% +%\title{The `grverb' package} +%\author{Apostolos Syropoulos\\366, 28th October Str.\\ +%GR-671 00 Xanthi, HELLAS\\ +%Email:\texttt{apostolo@obelix.ee.duth.gr}\\ or \\ +%\hphantom{Email:}\texttt{apostolo@ocean1.ee.duth.gr}} +% \date{1999/12/06} +%\maketitle +% +%\MakeShortVerb{\|} +%\StopEventually{} +%\section{Introduction} +% +% One major drawback of the |greek| option of the babel package is that +% one cannot easily write both Latin and Greek verbatim text. This is +% particularly useful for computer listenings and, more generally, in computer +% science related texts. This package solves this problem by introducing the +% environment |grverbatim| and the command |grverb| whose functionality is +% identical to the functionality of the corresponding standards. A public +% domain font is used by both the command and the environment. The font +% conforms to the ISO-8859-7 encoding for the Greek language.. +% +%\section{The code} +% The first thing we do is to identify the package. +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e}[1996/01/01] +\ProvidesPackage{grverb}[1999/12/06\space v1.0] +\typeout{Package: `grverb' v1.0\space <1999/12/06> (A. Syropoulos)} +% \end{macrocode} +% Since, we are going to use most characters with slot numbers above 127, we +% need a macro to assign to a range of characters catcode 11 (letter). The +% following macro is a modified version of macro |\inpenc@loop| which is +% defined in the package inputenc. +% +%\begin{macro}{\@gr@inpenc@loop} +% \begin{macrocode} +\def\@gr@inpenc@loop#1#2{% + \@tempcnta`#1\relax + \loop + \catcode\@tempcnta11 + \ifnum\@tempcnta<`#2\relax + \advance\@tempcnta\@ne + \repeat} +% \end{macrocode} +%\end{macro} +% The package uses the (public domain) font ``Greek-CourierPlain'' as the +% default verbatim font. Since, this font is not known to the NFSS, we need +% to write down the necessary definitions. We introduce a new family and +% since the design size of the new verbatim font is slightly larger than +% that of the cb fonts (i.e., the standart fonts used with the |greek| option +% of the babel package), we need to shrink a little bit the character size +% so that they match with the rest of the text. +% +% \begin{macrocode} +\DeclareFontFamily{U}{grtt}{} +\DeclareFontShape{U}{grtt}{m}{n}{ + <-> s * [0.9] grcour8a}{} +% \end{macrocode} +% +% We now define the new environment. The code is actually derived from +% code which appears in the file |ltmiscen.dtx| in the standard \LaTeX2e +% distribution. We define the new environment |grverbatim| which uses +% the new verbatim font, instead of the standard one, and which assigns +% to particular list of characters catcode 11. Note, that these changes +% are local, so not to affect the behavior of \LaTeX. +%\begin{macro}{\grverbatim} +%\begin{macro}{\endgrverbatim} +% \begin{macrocode} +\begingroup \catcode `|=0 \catcode `[= 1 +\catcode`]=2 \catcode `\{=12 \catcode `\}=12 +\catcode`\\=12 |gdef|@grxverbatim#1\end{grverbatim}[#1|end[grverbatim]] +|endgroup +\def\@grverbatim{\trivlist \item\relax + \if@minipage\else\vskip\parskip\fi + \leftskip\@totalleftmargin\rightskip\z@skip + \parindent\z@\parfillskip\@flushglue\parskip\z@skip + \@@par + \@tempswafalse + \def\par{% + \if@tempswa + \leavevmode \null \@@par\penalty\interlinepenalty + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi + \fi}% + \let\do\@makeother \dospecials + \obeylines \gr@verbatim@font \@noligs + \everypar \expandafter{\the\everypar \unpenalty}% +} +\def\grverbatim{\begingroup\@gr@inpenc@loop\^^A\^^H% + \@gr@inpenc@loop\^^K\^^K% + \@gr@inpenc@loop\^^N\^^_% + \@gr@inpenc@loop\^^?\^^ff% + \@grverbatim \frenchspacing\@vobeyspaces \@grxverbatim} +\def\endgrverbatim{\if@newlist \leavevmode\fi\endtrivlist\endgroup} +% \end{macrocode} +%\end{macro} +%\end{macro} +% We don't use the standard verbatim font, so we define a command to use +% the new verbatim font. This allows us to use the usual verbatim commands +% and environments without any problem. +%\begin{macro}{\gr@verbatim@font} +% \begin{macrocode} +\def\gr@verbatim@font{\fontencoding{U}\fontfamily{grtt}\fontseries{m}% +\selectfont} +% \end{macrocode} +%\end{macro} +% The last thing we do is to define the new command |\grverb|. The command is +% actually a modified version of the |\verb| command. The new thing is that +% many non-letter characters become letters and we use the Greek verbatim +% font instead of the standard one. +%\begin{macro}{\grverb} +% \begin{macrocode} +\def\grverb{\relax\ifmmode\hbox\else\leavevmode\null\fi + \bgroup + \@gr@inpenc@loop\^^A\^^H% + \@gr@inpenc@loop\^^K\^^K% + \@gr@inpenc@loop\^^N\^^_% + \@gr@inpenc@loop\^^?\^^ff% + \verb@eol@error \let\do\@makeother \dospecials + \gr@verbatim@font\@noligs \@verb} +%</package> +% \end{macrocode} +%\end{macro} +% \section*{Acknowledgment} +% I thank Antonios Tsolomitis for bringing to my attention this particular +% problem and for testing the proposed solution. +% \section*{Dedication} +% I would like to dedicate this piece of work to my son +% \begin{center}Demetrios-Georgios.\end{center} +% \Finale +% +\endinput |