summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/generic/c-pascal/README.pol (renamed from Master/texmf-dist/doc/generic/c-pascal/readme.pol)6
-rw-r--r--Master/texmf-dist/doc/generic/c-pascal/demo2.tex41
-rw-r--r--Master/texmf-dist/doc/generic/c-pascal/prog/fib.py27
-rw-r--r--Master/texmf-dist/doc/generic/c-pascal/prog/sun.c2
-rw-r--r--Master/texmf-dist/doc/generic/c-pascal/readme.eng90
-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
9 files changed, 206 insertions, 152 deletions
diff --git a/Master/texmf-dist/doc/generic/c-pascal/readme.pol b/Master/texmf-dist/doc/generic/c-pascal/README.pol
index baa1bb3c1f5..e86c9c47b9e 100644
--- a/Master/texmf-dist/doc/generic/c-pascal/readme.pol
+++ b/Master/texmf-dist/doc/generic/c-pascal/README.pol
@@ -45,7 +45,7 @@ W pliku cap_c.tex znajdują się definicje dwóch makr:
podział programu na mniejsze części, z których każda będzie ujęta
w komendy \BeginC ... \EndC.
- 2. \InsertC{nazwapliku}
+ 2. \InputC{nazwapliku}
Wstawia program w języku C z pliku zewnętrznego. Program zostanie
sformatowany jak w poprzednim przypadku. Przypomnienie dla pracujących
pod DOSem: w nazwie pliku wszystkie wtyłciachy należy zastąpić
@@ -64,7 +64,7 @@ on również dwa makra:
1. \BeginPascal ... \EndPascal
- 2. \InsertPascal{nazwapliku}
+ 2. \InputPascal{nazwapliku}
Działają one analogicznie. W przypadku \BeginPascal ... \EndPascal
obowiązują podobne ograniczenia na wielkość formatowanego programu.
@@ -78,6 +78,8 @@ można ją zmodyfikować.
---------
Czcionki używane do składania programów są zadeklarowane na początku
pliku cap_comm.tex. W razie potrzeby można je łatwo przedefiniować.
+Osoby używające czcionek PL zamiast CM będą musiały zmodyfikować dwie
+linie w tym pliku. Są one wyraźnie zaznaczone.
Uwaga
diff --git a/Master/texmf-dist/doc/generic/c-pascal/demo2.tex b/Master/texmf-dist/doc/generic/c-pascal/demo2.tex
index bd26d89b713..548ef8ee21b 100644
--- a/Master/texmf-dist/doc/generic/c-pascal/demo2.tex
+++ b/Master/texmf-dist/doc/generic/c-pascal/demo2.tex
@@ -1,4 +1,18 @@
\input cap
+\let\IdentifierColor=\Black
+\let\KeywordColor=\MidnightBlue
+\let\SpecialColor=\Black
+\let\SymbolColor=\Black
+\let\CommentColor=\Gray
+\let\TextColor=\ForestGreen
+\let\DirectiveColor=\Tan
+\SpaceSkip=1.3ex
+
+% Just for fun, you can use a cyrillic font for identifiers
+% Of course, any font can be changed just like in the non-color
+% version of cap.
+%\font\cirm=wncyi10\let\IdentifierFont=\cirm
+
A short program in C. It was inserted directly into the \TeX\ source file.
@@ -46,4 +60,31 @@ This one was imported from another file.
\medskip
\InputPascal{prog/guess.pas}
+\vfill\eject
+
+And now, my latest addition: programs written in Python. The first one
+is typed directly into the file.
+
+\medskip
+\BeginPython
+def fib(n):
+ """Calculates Fibonacci series.
+
+ It returns the first member of Fibonacci series larger than n"""
+ a,b=1,1
+ while b <= n:
+ a,b = b,a+b # see how we use multiple assignment?
+ return b
+
+fib(10)
+\EndPython
+
+\hrule
+\bigskip
+
+This one was imported from another file.
+
+\medskip
+\InputPython{prog/fib.py}
+
\bye
diff --git a/Master/texmf-dist/doc/generic/c-pascal/prog/fib.py b/Master/texmf-dist/doc/generic/c-pascal/prog/fib.py
new file mode 100644
index 00000000000..3c0bc3d8a23
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/c-pascal/prog/fib.py
@@ -0,0 +1,27 @@
+# Just a little test program
+from sys import stderr
+
+class FibSeries:
+ """Returns all the elements of Fibonacci series up to a given number.
+
+ Requires one parameter (the number we're going up to)."""
+
+
+ def __init__(self,number):
+ self.series=[1,1]
+ a,b=1,1
+
+ while b<number:
+ a,b=b,a+b
+ if b<number: self.series.append(b)
+
+ def writeout(self):
+ cnt=0
+ while cnt<len(self.series):
+ stderr.write(str(self.series[cnt])+" ")
+ cnt+=1
+ stderr.write("\n")
+
+meine = FibSeries(115)
+meine.writeout()
+
diff --git a/Master/texmf-dist/doc/generic/c-pascal/prog/sun.c b/Master/texmf-dist/doc/generic/c-pascal/prog/sun.c
index 889341b5b9d..28d25bfa5af 100644
--- a/Master/texmf-dist/doc/generic/c-pascal/prog/sun.c
+++ b/Master/texmf-dist/doc/generic/c-pascal/prog/sun.c
@@ -4,7 +4,7 @@
int months[]={0, 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31};
char weekdays[7][15]={"Sunday", "Monday", "Tuesday", "Wednesday",
- "Thursday", "Friday", "Sunday"};
+ "Thursday", "Friday", "Saturday"};
/* this program calculates the latidude
where polar day begins/ends */
diff --git a/Master/texmf-dist/doc/generic/c-pascal/readme.eng b/Master/texmf-dist/doc/generic/c-pascal/readme.eng
deleted file mode 100644
index 170acaa2a54..00000000000
--- a/Master/texmf-dist/doc/generic/c-pascal/readme.eng
+++ /dev/null
@@ -1,90 +0,0 @@
-======================================================================
-
- CAP --- macro package for typesetting programs in C and Pascal
-
-======================================================================
-
-
- Contents
-----------
-This macro package consists of three files:
- cap_c.tex -- macros for typesetting programs in C
- cap_pas.tex -- macros for typesetting programs in Pascal
- cap_comm.tex -- helpful macros and declarations used for typesetting
- programs in both languages; this file does not contain
- any macros useful for a user
-
-
- Programs in C
----------------
-There are two macros available in the cap_c.tex file:
-
- 1. \BeginC ... \EndC
- Between these commands you may insert sorce code of any program
- written in the C language. The text of the program will be
- formatted using appropriate fonts. The macro recognises the
- following elements of a program:
- * keywords --- by default typeset in boldface
- * texts --- everything inside single quotes; by default slanted
- * comments --- both /*these...*/ and //these... , but not nested;
- italic typewriter
- * symbols --- operators, brackets, etc.; typewriter
- * compiler directives --- typeset using slanted typewriter font
- * identifiers --- everything that is none of the above; italic
- The macro does not change the layout of a program. All
- indentations are left as they are in the source program. No line
- breaks are inserted.
- NOTE: While compiling, the \BeginC ... \EndC macro reads the whole
- program into TeX's memory. Therefore, you may expect problems when
- typesetting huge programs in this way. In my configuration
- (emTeX under DOS) everything works fine if the program is not bigger
- than about 15KB. If you REALLY need to insert a vast program
- directly into your TeX source file you will have to split
- the program into smaller pieces, each inserted into a separate
- pair \BeginC ... \EndC.
-
- 2. \InsertC{filename}
- Inserts a C program from a separate file. The program is formatted
- as above. If you use DOS you need to remember that all backslashes
- in the pathname should be replaced by slashes.
- This macro has NO limitations for the size of the program --- it reads
- the file line by line, so TeX should never run out of memory.
-
-The list of keywords can be easily found in the cap_c.tex file. I do not
-guarantee that it is complete, so fell free to correct it if necessary.
-
-
- Programs in Pascal
---------------------
-In order to typeset programs in Pascal you need to \input the cap_pas.tex
-file. It contains two macros, as well:
-
- 1. \BeginPascal ... \EndPascal
-
- 2. \InsertPascal{filename}
-
-They work similarly. They recognise the same elements of a Pascal program.
-Both {this} and (*this*) kind of comment is accepted, but they cannot
-be nested. In case of \BeginPascal ... \EndPascal size limitations are
-similar as in C.
-
-The list of keywords was taken from Borland Delphi Help. If you need, you
-may modify it.
-
-
- Common
---------
-Fonts used to typeset programs are declared in the beginning of
-the cap_comm.tex file. They are easy to redefine if necessary.
-
-
- Note
-------
-If you modify aby of the files in any way, mark your changes, please.
-I do not want to take responsibility for other people's modifications.
-
-
-------------
-
- Michal Gulczynski
- mgulcz@we.tuniv.szczecin.pl
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