As we've discussed before, the current compiler selection logic (in the Typeset & View command) is a bit of a mess. Below is a suggestion for how it might be rationalised. Once we've agreed on a plan, I'm happy to implement it.
One complication is that it's sometimes useful to have compilation under the control of a custom script – either one that you've written for your specific project, or a generic compilation tool such as latexmk. The way that TeXShop deals with this is to have special program-designators "mytex" and "mylatex", which signify that a user-specified compilation script should be used. I propose that we adopt this mechanism.
The first task is to decide on the compilation route to use. This will be one of: tex, latex, pdftex, pdflatex, xetex, xelatex, mytex, mylatex. I propose trying the following things, in order:
1. Use the %!TEX TS-program specification in the source file. 2. Use the %!TEX TS-program specification in the master file. 3. Use the value of the $TM_LATEX_PROGRAM variable. 4. Sniff for \usepackage commands that suggest (DVI)latex/xelatex should be used. 5. Default to pdflatex.
If the resulting value is mytex/mylatex, then: 1. Use the script specified in the variable $TM_LATEX_MYTEX or $TM_LATEX_MYLATEX, 2. Use the script specified in the TeXShop configuration, if any: defaults read TeXShop TexScriptCommand defaults read TeXShop LatexScriptCommand 3. Give up, explaining why.
So, the variables $TM_LATEX_COMPILER and $TEX_PSTRICKS would no longer be used. For backwards compatibility, we could continue to allow the value of $TM_LATEX_COMPILER to trump all other considerations (perhaps with a warning in the compilation window to the effect that this variable is deprecated, and explaining the new way to do it).
Any thoughts?
Robin