# Use \newcommand with a variable inside a style file

I have the following code which I put inside the preamble of my LaTeX documents:

\newcommand{\modulecode}{SESG6025}
\newcommand{\lecturetitle}{Interpolation}


In this case, that means that when I'm writing my lecture notes I can just use \modulecode to refer to the module code. I'm trying to create a style file to use for my lecture notes, and want to have some way that I can define what the module code is (that is, some way of setting the variable) in each document, so that I can then refer to it as above using \modulecode.

I can't seem to find how to do this through Google, but I'm sure it must be a fairly simple request. Any ideas?

-
Basically it sounds like passing a parameter to the package. Did you have a look at some package guide? –  Carsten Thiel Jan 4 '11 at 14:42
I've had a look at that, but I'm not sure exactly what I need to look for. I could do this by passing a parameter to a package, but I can't see how to do that with passing strings rather than just options. What I was actually thinking of was creating a command (using \newcommand possibly) in the style file that would allow me to do something like \setmodulecode{COMP6023} in my document. That would seem to me to be the easiest way - and I'd guess it is fairly simple. Is that so? –  robintw Jan 4 '11 at 14:57
I thought of packages like hyperref and fixme, which support options of the form key=value. –  Carsten Thiel Jan 4 '11 at 15:09
That sounds good, as an alternative to the other answers presented. Is it fairly easy to do that? –  robintw Jan 4 '11 at 15:18
I don't know. But it's a good question! –  Carsten Thiel Jan 4 '11 at 15:25

do you mean something like this?

\newcommand\setmodulecode[1]{\def\modulecode{#1}}
\setmodulecode{COMP6023}


if you have it inside a style file then do something like

\newcommand\setmodulecode[1]{\def\@modulecode{#1}}
\setmodulecode{COMP6023}


to prevent overwriting by a user. Alternatively use \setmodulecode{} for the first definition.

-
You were quicker. Just one thing: you wrote \setmodulcode instead of \setmodulecode. –  Bruno Le Floch Jan 4 '11 at 15:07
Thanks - that works well :-) The only problem I have is that I then want to use \modulecode in a bit of fancyhdr code as below. This code is inside my style file, but is failing - presumably because it can't see \modulecode at the time that it is run (as it is defined in the preamble of the document). Is there a way around this: \fancyhead{} \lhead{\modulecode} \rhead{\lecturetitle} –  robintw Jan 4 '11 at 15:13
@Bruno: thanks, is corrected –  Herbert Jan 4 '11 at 15:17
@robintw: make your definitions before you load fancyhdr. If it doesn't work create a minimal example. –  Herbert Jan 4 '11 at 15:18
As usual, in the process of making the minimal example I found the problem. Apologies - I really must do that before asking! Thanks for your help. –  robintw Jan 4 '11 at 15:22