# [texworks] %!TEX tags

Alain Schremmer schremmer.alain at gmail.com
Sat Jun 26 16:59:28 CEST 2010

On Jun 26, 2010, at 3:36 AM, Stefan Löffler wrote:

> Hi,
>
> Am 2010-06-24 18:07, schrieb Alain Schremmer:
>> Can TeXworks respond to lines such as the following:
>>
>>     %!TEX root =../FOO/\jobname.tex
>>
>> Please note the use of \jobname which would need to have been
>> specially taken care of. And, unfortunately, I am no programmer and
>> thus unable to check the code for myself.
>
> I've posted your feature request and a patch at
>
>> I am a completely satisfied user of TeXShop and am inquiring in
>> consideration of the windows users of my stuff which uses this line
>> systematically.
>
> I think this is an intriguing feature, though I'm not sure if most
> "standard" users will know about the meaning of \jobname.

You are right, \jobname is not well known: it appears in passing on
page 754 of Companion 2ed. But it is a most useful command when you
have many similar files made from a template. Here is a typical example:

The way I use the %!TEX root tag is as follows:

First, I have two folders: Contents and Controls

---In the Contents folder I have files named 0.tex, (that's for the
Preface),1.tex, 2.tex etc each of which starts as follows:

%!TEX root = ../Controls/\jobname.tex
\chapter{My Chapter One}
Some text

---In the Controls folder, I have files also named 0.tex, 1.tex,
2.tex etc each of which is just a copy of:

\documentclass[11pt]{book}
\usepackage{xxx}
\begin{document}
\include{../Contents/\jobname}
\end{document}

---Thirdly, I have a folder WholeBook which contains the file MyBook
which is the usual root file:

\documentclass[11pt]{book}
\usepackage{xxx}
\begin{document}
\frontmatter
\include{../Contents/1}
\include{../Contents/2}
etc
\end{document}

Thus, I can compile a chapter either from the Content file or from
the Control file will typeset just the chapter.

In fact, for the sake of symmetry, I am now using the following
variation on the above theme

I have only the two folders: Contents and Controls in which I have
the same files as above but also, in addition:

---In the Contents folder:

The file ALL.tex:

%!TEX root = ../Controls/\jobname.tex
\include{../Contents/0}%Preface to be numbered along with the
contents, etc
\mainmatter
\include{../Contents/1}
\include{../Contents/2}
etc

---In the Controls folder

The file ALL.tex:

\documentclass[11pt]{book}
\usepackage{xxx}
\begin{document}
\frontmatter
\input{../Contents/ALL}
\backmatter
\include{../Text-contents/99}%That's the GNU FDL
\printindex
\end{document}

> Is this astandard TeXShop feature (in which case I think we should
> keep it, for
> the sake of cooperation)?

What is a feature of TeXShop is that, much to the disbelief of many,
it understands \jobname in that first line. Through sheer idiot's
luck, I knew and used that but it took Koch to explain why. I am
quoting:

So I looked at the routine "decodeFile" and discovered this comment:

// added by John A. Nairn
// get full path name for possible relative file name in relFile
// relative is from home

and the last lines of the routine read

// see if \jobname is there
searchString = [self filterBackslashes:@"\\jobname"];
aRange = [saveName rangeOfString:searchString options:NSLiteralSearch];
if(aRange.location == NSNotFound)
return saveName;

// replace \jobname(s)
saveTemp = [NSMutableString stringWithString:saveName];
[saveTemp replaceOccurrencesOfString:searchString withString:jobname
options:NSLiteralSearch
range:NSMakeRange(0,[saveName length])];
return [NSString stringWithString:saveTemp];

> If not, maybe it would be better to change
> this to something a little more intuitive, like "$basename" (keeping > with the notation for typesetting tools). Here I am not following you. What is "$basename"? It does not seem to
appear in Companion 2ed.

But it makes me think of  an extremely useful command in Didier
Verna's FINK. Here is how I am using it:

\xdef\CheckableItem{\finkdir-\finkbase}
\ifthenelse{\boolean{Quiz?}}%
{%begin Quiz? true
\UseProblem{\CheckableItem-q}%
{%
QUIZtext%
[...]

Doesn't look like much but given that I have 900 such pages ...

I have forgotten now but, at one point, it would have made my life a
lot easier had I been able to use FINK's tools in that first line
tag. Unfortunately, John A. Nairn does not seem to have known about it.

> Maybe we could even do both...

So, yes, I think that it would be a good think to have them both in
TeXWorks.  More specifically, right now, the system for developing

"should" work with editors under Windows but would most not likely
not be able to typeset from the Contents files. With TeXWorks
behaving like TeXShop in that particular, I could write a single set
of instructions under TeXWorks for the users interested in using the
ancillaries of my texts but absolutely not in dealing with LaTeX---
i.e. teachers who are mostly in the Windows world. But also for
authors interested in using the "system" to write ancillaries for
their own text. The system is described in a forthcoming piece in
PracTeX.

Grateful---and hopeful---regards
--schremmer