summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-05-17 16:18:42 +0000
committerKarl Berry <karl@freefriends.org>2010-05-17 16:18:42 +0000
commit23bb488bb028acf936fa4c2fce03649802515eb6 (patch)
tree00bfb4dfc21e90becb3c5f119bf348f372bad6f5 /Master/texmf-dist/tex/generic
parente679d4dd811dedc2b164b4ec19ba8053b2cae3ad (diff)
c-pascal update (long ago)
git-svn-id: svn://tug.org/texlive/trunk@18316 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic')
-rw-r--r--Master/texmf-dist/tex/generic/c-pascal/cap.tex1
-rw-r--r--Master/texmf-dist/tex/generic/c-pascal/cap_c.tex26
-rw-r--r--Master/texmf-dist/tex/generic/c-pascal/cap_comm.tex149
-rw-r--r--Master/texmf-dist/tex/generic/c-pascal/cap_pas.tex16
4 files changed, 133 insertions, 59 deletions
diff --git a/Master/texmf-dist/tex/generic/c-pascal/cap.tex b/Master/texmf-dist/tex/generic/c-pascal/cap.tex
index 8c114f62912..7f1563c6cd2 100644
--- a/Master/texmf-dist/tex/generic/c-pascal/cap.tex
+++ b/Master/texmf-dist/tex/generic/c-pascal/cap.tex
@@ -1,2 +1,3 @@
\input cap_c
\input cap_pas
+\input cap_pyt
diff --git a/Master/texmf-dist/tex/generic/c-pascal/cap_c.tex b/Master/texmf-dist/tex/generic/c-pascal/cap_c.tex
index 5501e94d312..3aaa2d33f8e 100644
--- a/Master/texmf-dist/tex/generic/c-pascal/cap_c.tex
+++ b/Master/texmf-dist/tex/generic/c-pascal/cap_c.tex
@@ -4,6 +4,10 @@
% mgulcz@we.tuniv.szczecin.pl %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
+% version 1.2d
+% Added DVIPS color support (actually, any output is replaced with
+% a macro call to \@Output --- search for it to see the changes)
+% -- by Danilo {\v S}egan, mm01142@alas.matf.bg.ac.yu
% version 1.2
% This file contains macros for typesetting programs in C.
% It belongs to the CAP package. Do not distribute separately.
@@ -37,7 +41,7 @@ catch throw try
% slash is an active character. On the other hand we use slash
% in pathnames: directory/subdirectory/file. I made this part
% sooo complicated, bacause I had to neutralise slash in
-% \InsertC.
+% \InputC.
\def\@InputC#1{%
\message{(C++: #1}%
\openin\@InFile = #1
@@ -92,15 +96,15 @@ catch throw try
\ifnum \@PrevChar=`\/
\ifnum \@CharCode=`\/
\global\@WhereAmI = \@ShortComment
- \CommentFont
- \char47%
+ \@CommentState
+ \@Output{\char47}%
\else
\ifnum \@CharCode=`\*
\global\@WhereAmI = \@LongComment
- \CommentFont
+ \@CommentState
\fi
\fi
- \char47%
+ \@Output{\char47}%
\fi
% the longest possible string containing only letters and digits
% is either a keyword or an identifier
@@ -114,11 +118,11 @@ catch throw try
\fi
\ifnum \@CharCode=`\#
\global\@WhereAmI = \@Directive
- \DirectiveFont
+ \@DirectiveState
\fi
\ifnum \@CharCode=`\"
\global\@WhereAmI = \@Text
- \TextFont
+ \@TextState
\fi
\ifnum \@CharCode=`\/
\else
@@ -132,7 +136,7 @@ catch throw try
\@WriteChar{#1}%
\ifnum \@CharCode=`\"
\global\@WhereAmI = \@NothingSpecial
- \SymbolFont
+ \@SymbolState
\fi
\or
%%%%%%%%%%%%%%
@@ -141,7 +145,7 @@ catch throw try
\@WriteChar{#1}%
\ifnum \@CharCode=13
\global\@WhereAmI = \@NothingSpecial
- \SymbolFont
+ \@SymbolState
\fi
\or
%%%%%%%%%%%%%%%%%
@@ -150,7 +154,7 @@ catch throw try
\@WriteChar{#1}%
\ifnum \@CharCode=13
\global\@WhereAmI = \@NothingSpecial
- \SymbolFont
+ \@SymbolState
\fi
\or
%%%%%%%%%%%%%%%%
@@ -160,7 +164,7 @@ catch throw try
\ifnum \@PrevChar=`\*
\ifnum \@CharCode=`\/
\global\@WhereAmI = \@NothingSpecial
- \SymbolFont
+ \@SymbolState
\@CharCode = 32
\fi
\fi
diff --git a/Master/texmf-dist/tex/generic/c-pascal/cap_comm.tex b/Master/texmf-dist/tex/generic/c-pascal/cap_comm.tex
index 3f407580b35..30a98aae4a7 100644
--- a/Master/texmf-dist/tex/generic/c-pascal/cap_comm.tex
+++ b/Master/texmf-dist/tex/generic/c-pascal/cap_comm.tex
@@ -2,52 +2,107 @@
% CAP --- Macros for typesetting programs in C and Pascal %
% Micha\l{} Gulczy\'nski, Szczecin, Feb 1997 / Feb 1998 %
% mgulcz@we.tuniv.szczecin.pl %
+% Some (non-essential) changes to support COLORDVI output %
+% Danilo \v Segan, Beograd, Sep 2002 %
+% mm01142@alas.matf.bg.ac.yu %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
+% version 1.2d
+% Added DVIPS color support (actually, any output is replaced with
+% a macro call to \Ispis --- search for it to see the changes)
+% Also extended a mechanism for marking "special" symbols, so they
+% would get applicable color in a string, comment, or otherwise
+% NOTE: It should be backwards compatible, so there is no need to
+% change anything else, except of course adding color
+% settings if you wish
+% -- by Danilo {\v S}egan, mm01142@alas.matf.bg.ac.yu
% version 1.2
% This file contains common definitions used in the CAP package.
% It does not contain any useful macros itself.
%
+% If you don't have dvips's colordvi.tex, then fetch it from somewhere
+% to avoid errors in processing (it inserts specials which will
+% probably be ignored by anything other than COLORDVI aware software)
+% The alternate solution is to comment out all color definitions
+% (\let's) and to define writeout function as \def\Ispis#1{#1}
+\input colordvi
+
+% If you don't have color printer, you may choose to remain compatible
+% with those that do, and only use analogous dvips's input file
+%\input blackdvi
%
-% macro that compares two strings
+% font and color declarations
%
-\def\@Identical#1#2{%
- MG\fi
- \edef\@FirstString{#1}%
- \edef\@SecondString{#2}%
- \ifx \@FirstString \@SecondString
-}
+\font\tenttsl = cmsltt10 % <--- modify these two lines if you don't use
+\font\tenttit = cmitt10 % <--- CM fonts
+\let\IdentifierFont = \it
+\let\IdentifierColor = \Black
+\let\TextFont = \sl
+\let\TextColor = \Black
+\let\KeywordFont = \bf
+\let\KeywordColor = \Black
+\let\CommentFont = \tenttit
+\let\CommentColor = \Black
+\let\DirectiveFont = \tenttsl
+\let\DirectiveColor = \Black
+\let\SymbolFont = \tt
+\let\SymbolColor = \Black
+\let\SpecialFont = \tt % some characters: { } < > _ \ and | are very
+\let\SpecialColor = \Black % special -- they exist only in tt fonts
+
%
-% font declarations
+% how much does a single "space" skip (retained the default 1ex from CAP)
%
-{% a tiny trick that lets TeX check if the user has PL fonts...
- \catcode`\p = 12
- \catcode`\l = 12
- \catcode`\r = 12
- \xdef\xxx{plr10}
-}
-\if\@Identical{\xxx}{\fontname\tenrm}
- \font\tenttsl = plsltt10
- \font\tenttit = plitt10
-\else
- \font\tenttsl = cmsltt10
- \font\tenttit = cmitt10
-\fi
-\let\IdentifierFont = \it
-\let\TextFont = \sl
-\let\KeywordFont = \bf
-\let\CommentFont = \tenttit
-\let\DirectiveFont = \tenttsl
-\let\SymbolFont = \tt
-\let\SpecialFont = \tt % some characters: { } < > _ \ and | are very
- % special -- they exist only in tt fonts
+\newdimen\SpaceSkip % Changeable space skip (instead of the old fixed 1ex)
+\SpaceSkip=1ex
+
+
+%\def\GenState#1{%
+%\expandafter\expandafter\def\csname @#1State\endcsname{%
+% \def\@Color{\csname#1Color\endcsname}%
+% \def\@@State{#1}%
+% \expandafter\csname #1Font\endcsname}}
+\def\GenState#1{%
+\expandafter\expandafter\def\csname @#1State\endcsname{%
+ \def\@tmpName{#1}%
+% \ifx\@@State\@tmpName\else% if already in this state, skip
+ \def\@Color{\csname#1Color\endcsname}%
+ \def\@@State{#1}%
+ \expandafter\csname #1Font\endcsname%\fi}}
+ }}
+
+\GenState{Identifier}
+\GenState{Text}
+\GenState{Keyword}
+\GenState{Comment}
+\GenState{Directive}
+\GenState{Symbol}
+% One \GenState{NAME} replaces the following definition
+% \def\@NAMEState{\let\@Color=\NAMEColor\NAMEFont\def\@@State{NAME}}
+\def\@SpecialState{%
+ \def\neka##1{\edef\@@stanje{##1}}%
+ \neka{Directive}\ifx\@@State\@@stanje%
+ \let\@Color=\DirectiveColor%
+ \else
+ \neka{Comment}\ifx\@@State\@@stanje%
+ \let\@Color=\CommentColor%
+ \else
+ \neka{Text}\ifx\@@State\@@stanje%
+ \let\@Color=\TextColor%
+ \else%
+ \let\@Color=\SpecialColor
+ \fi\fi\fi%
+ \SpecialFont}
+
+\def\@Output#1{\@Color{#1}}
+
%
% registers and constants used in the program
%
\newif\if@TempBool % temporary boolean
-\newread\@InFile % file read by \Insert macros
+\newread\@InFile % file read by \Input macros
\newcount\@CharCode % code of current character
\newcount\@PrevChar % code of previous charater
\newcount\@WhereAmI % one of the following values:
@@ -57,6 +112,15 @@
\chardef\@ShortComment = 3 % C: //... ; Pascal: (* ... *)
\chardef\@LongComment = 4 % C: /* ... */; Pascal: { ... }
%
+% macro that compares two strings
+%
+\def\@Identical#1#2{%
+ MG\fi
+ \edef\@FirstString{#1}%
+ \edef\@SecondString{#2}%
+ \ifx \@FirstString \@SecondString
+}
+%
% I need a "not eof" function
%
\def\neof#1{%
@@ -97,23 +161,28 @@
\def\@Word{}%
\@WhereAmI = \@NothingSpecial
\@PrevChar = 32
- \SymbolFont
+ \@SymbolState
}
%
% macro that outputs the char specified as the argument;
-% characters < > _ \ { | } are written with \SpecialFont
+% characters < > _ \ { | } are written with \SpecialState,
+% except for _ which is written with \IdentifierColor and \SpecialFont
%
\def\@WriteChar#1{%
\def\@Check##1{%
- \ifnum `#1=`##1
- {\SpecialFont #1}%
- \@TempBooltrue
+ \ifnum `#1=`##1%
+ {\@SpecialState \@Output{#1}}%
+ \@TempBooltrue%
\fi
}%
\@TempBoolfalse
\@Check{<}%
\@Check{>}%
- \@Check{_}%
+% \@Check{_}%
+ \ifnum`#1=`\_%
+ \@IdentifierState\SpecialFont%
+ \@Output{#1}\@TempBooltrue%
+ \fi%
\@Check{\\}%
\@Check{\{}%
\@Check{\}}%
@@ -124,9 +193,9 @@
\par\leavevmode
\else
\ifnum `#1=32
- \hskip 1ex
+ \hskip\SpaceSkip
\else
- #1%
+ \@Output{#1}%
\fi
\fi
\fi
@@ -137,9 +206,9 @@
%
\def\@WriteWord#1#2{%
\if\@OnListOfKeywords{ #1 }{#2}%
- {\KeywordFont #1}%
+ {\@KeywordState\@Output{#1}}%
\else
- {\IdentifierFont #1}%
+ {\@IdentifierState\@Output{#1}}%
\fi
}
%
diff --git a/Master/texmf-dist/tex/generic/c-pascal/cap_pas.tex b/Master/texmf-dist/tex/generic/c-pascal/cap_pas.tex
index b7d7813d426..1d1cf792591 100644
--- a/Master/texmf-dist/tex/generic/c-pascal/cap_pas.tex
+++ b/Master/texmf-dist/tex/generic/c-pascal/cap_pas.tex
@@ -36,7 +36,7 @@ uses var while with xor
% slash is an active character. On the other hand we use slash
% in pathnames: directory/subdirectory/file. I made this part
% sooo complicated, bacause I had to neutralise slash in
-% \InsertPascal.
+% \InputPascal.
\def\@InputPascal#1{%
\message{(Pascal: #1}%
\openin\@InFile = #1
@@ -91,9 +91,9 @@ uses var while with xor
\ifnum \@PrevChar=`\(
\ifnum \@CharCode=`\*
\global\@WhereAmI = \@LongComment
- \CommentFont
+ \@CommentState
\fi
- (%
+ \@Output{(}%
\fi
% the longest possible string containing only letters and digits
% is either a keyword or an identifier
@@ -107,11 +107,11 @@ uses var while with xor
\fi
\ifnum \@CharCode=`\{
\global\@WhereAmI = \@ShortComment
- \CommentFont
+ \@CommentState
\fi
\ifnum \@CharCode=`\'
\global\@WhereAmI = \@Text
- \TextFont
+ \@TextState
\fi
\ifnum \@CharCode=`\(
\else
@@ -125,7 +125,7 @@ uses var while with xor
\@WriteChar{#1}%
\ifnum \@CharCode=`\'
\global\@WhereAmI = \@NothingSpecial
- \SymbolFont
+ \@SymbolState
\fi
\or
%%%%%%%%%%%%%%
@@ -139,7 +139,7 @@ uses var while with xor
\@WriteChar{#1}%
\ifnum \@CharCode=`\}
\global\@WhereAmI = \@NothingSpecial
- \SymbolFont
+ \@SymbolState
\fi
\or
%%%%%%%%%%%%%%%%
@@ -149,7 +149,7 @@ uses var while with xor
\ifnum \@PrevChar=`\*
\ifnum \@CharCode=`\)
\global\@WhereAmI = \@NothingSpecial
- \SymbolFont
+ \@SymbolState
\@CharCode = 32
\fi
\fi