From 23bb488bb028acf936fa4c2fce03649802515eb6 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 17 May 2010 16:18:42 +0000 Subject: c-pascal update (long ago) git-svn-id: svn://tug.org/texlive/trunk@18316 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/generic/c-pascal/cap.tex | 1 + Master/texmf-dist/tex/generic/c-pascal/cap_c.tex | 26 ++-- .../texmf-dist/tex/generic/c-pascal/cap_comm.tex | 149 +++++++++++++++------ Master/texmf-dist/tex/generic/c-pascal/cap_pas.tex | 16 +-- 4 files changed, 133 insertions(+), 59 deletions(-) (limited to 'Master/texmf-dist/tex/generic/c-pascal') 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 -- cgit v1.2.3