Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

For some reason, the TikZ arrow command \draw[->] and any thing similar like \draw[<<->] are not working with the university class file shown below. Can anybody figure out why?

The style file is too big to be pasted here, but can be downloaded from http://www.compholio.com/csm/csm-thesis/#download

The error is TeX capacity exceeded, sorry [input stack size=5000]. However, the tikzpicture works when I change the class file.

Any idea?

share|improve this question
1  
Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. –  Christian Hupfer Feb 27 at 22:13
add comment

2 Answers

The problem is that the file csm-thesis-encoding.sty turns > and < into active characters; search around lines 47-52 and you'll see:

\begingroup
\catcode`\>=\active
\csm@redefine@char{>}{\textgreater}
\catcode`\<=\active
\csm@redefine@char{<}{\textless}
\endgroup

You can either:

  1. Comment out those lines; this implies that now > and < have their original definition instead of the intended by the style file meaning of \textgreater, \textless.

  2. Add the following lines to your .tex document:

    \usepackage{etoolbox}
    \BeforeBeginEnvironment{tikzpicture}{\catcode`\>=12}
    \BeforeBeginEnvironment{tikzpicture}{\catcode`\<=12}
    \AfterEndEnvironment{tikzpicture}{\catcode`\>=\active}
    \AfterEndEnvironment{tikzpicture}{\catcode`\<=\active}
    
share|improve this answer
    
Or, even better, removing the setting of < and > as active characters and use the T1 encoding, so those symbols can be used also in text (I'm asking why, though). Your workaround wouldn't work if tikzpicture (or a \tikz...; construction) appears as argument to another command. –  egreg Feb 28 at 9:14
    
You can instead use the execute at begin picture key to restore the cat code then place that in the every picture key for every picture. and similarly at end picture too. there must be babel french issue solution similar to that one. –  percusse Feb 28 at 12:29
add comment

The diagnosis made by Gonzalo Medina is good. However, the workaround he proposes is not really good.

Actually, redefining < and > as active characters expanding to \textless and \textgreater is simply wrong. The template uses the in the acknowledgment section, whereas the correct characters would be \textlangle and \textrangle. In any case, using < and > in text is quite rare and there's no reason to risk breaking compatibility with macros and packages just to be able to type <spouse> in the template.

For instance, you won't be able to say \ifdim\somelength>1cm in your document to, say, measure an object and take appropriate actions. In other words, TikZ is just one package that can give problems.

So, my advice is simply to revert the bad assignment. If you really need < and > in text, use the T1 encoding. Since modifying the .sty file is inappropriate, as your modificatins would be lost if a new version is issued, you can revert the setting using the following calls:

\usepackage{csm-thesis}
\makeatletter
\CSM@AtBeginDocumentLast{\@makeother\<\@makeother\>}% revert bad setting
\makeatother
%\usepackage[T1]{fontenc}% possibly uncomment this
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.