summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/grverb/grverb.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-11 23:53:51 +0000
committerKarl Berry <karl@freefriends.org>2006-01-11 23:53:51 +0000
commit4563a151bf4da78d01df3cec80823c16721904b6 (patch)
tree271be069194f2c5ad65bffa600ad09739601940e /Master/texmf-dist/source/latex/grverb/grverb.dtx
parent899006c83eae8774d5c7d48976ef55251518d684 (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.dtx182
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