On Mon, 25 Nov 2013, Herbert Voss wrote:

Am 25.11.2013 19:55, schrieb Aditya Mahajan:

This is what I did.

1. Compile the file. You get an error that some pstrick file is missing.
Locate that file in the texlive directory and copy it to the current
directory.

2. Repeat until you get an error that \ifx! is not a valid control
sequence.

3. Run `grep ifx! *.tex` and change all the "\ifx!#1" to "\ifx !#1".

why does ConTeXt needs the space before the !  ??

ConTeXt has two catcode regimes: the "standard" catcode regime and the "unprotected" catcode regime.

In the "unprotected" catcode regime, !, _, and @ are also letters. This is done so that one can use csnames such as \c!width, \!!plusone, etc. (Similar to \makeatletter in LaTeX).

I haven't looked at the actual code, but I am guessing that at some place, the following code is being called:

\unprotect
\input pstricks
\protect

and therefore when ConTeXt sees \ifx!#1 it thinks that \ifx! is a csname. Adding a space after \ifx avoids that.

As I said in my previous message, this is easy to fix at ConTeXt end defining an appropriate catcode regime before inputing pstricks.

So, the pstricks package does not need to be changed, but the ConTeXt code that is calling the package needs to be adapted.

Aditya
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to