Yes, there are best practices. On this side of the pond, I would say that the secret is:
Macros, macros, macros.
On 't other, I would say:
It's macros, stupid.
As the comments on the (at time of writing) other answer, no-one is going to do it for you but there are things you can do to make life easier for yourself. Many years ago, I developed a system to make my life easier with journals. It was predicated on the following concepts:
When actually writing an article, it's highly unlikely that I'll know which journal I'll submit it to.
When actually writing an article, it's important that the writing not get in the way of the ideas so I want to use my own macros which make my life easiest.
Once the article is at the stage at which I want to submit it, I may need to put it in the journal's style at time of submission but I don't want to spend too much time doing that because experience says that the submit-wait-wait-wait-reject cycle will be repeated several times per article. Also, the arXiv is included in this as it generally has old versions of packages.
I'm quite likely to submit to the same journal more than once, so devising a system that works for specific journals is worthwhile.
Once an article is accepted, I'd be happy to do whatever modifications are needed to make it fit but only then.
So I wrote my own class which was a wrapper for all the journal classes that I've ever submitted to. There's only a certain amount of information that the journals need in the preamble although they are infinitely inventive in how they ask for it (some of them seem to go out of their way to make it complicated - the one that used \obeylines
was my personal ... favourite). So storing it all in macros and then doling it out as required is a solvable problem.
Similarly, there generally are only a limited number of things that journal style files define. Some mathematical operators, some theorem environments, and not much more. So again, a few macros to provide wrappers between how I want to write my articles and how journals want them is a solvable problem.
So a typical article starts:
\documentclass[%
a4paper,%
%lms,% <-- this class has options for the various journals I've submitted to
%draft,%
defaults,%
]{myclass}
\usepackage[%
bb,%
geom,%
%track,%
]%
{mymacros}
\theoremstyle{\myrmkstyle} % <-- the remark style is set by my macro package
\providetheorem{examples}[theorem]{Examples}
\mytitle{%
% <- Title will go in here
}
\myshorttitle{%
% <- Short title here
}
\mydate{\today}
\mysubjclass{% <- AMS Subject classes
}
\myauthor{%
% <- Me!
}
\myaddress{%
% <- Address
}
\myemail{%
% <- Bet you can't guess this one
}
\myurl{%
% <- Or this one
}
\myabstract{%
% Abstracts get handled variously so we store it here first
}
\mybibliographystyle % <- The actual style will generally be set in the class file
\begin{document}
\mymaketitle % <- Puts all that junk in the right place in the document
Multiple authors are specified simply by adding more details. Each \myauthor
triggers a new author and all following information pertains to the last named author.
Anyway, the point of it all is that I don't have to think about the journal when writing the article. I can just cut-and-paste from one article to another and change what needs changing.
Inside the myclass.cls
file is a lot of hackery (and pretty awful hackery at that - I wrote it before this site existed) which puts the information in the right place (the complementary mymacros.sty
tends to handle stuff like defining operators). It also handles loading packages according to the class - some journals' class files load things like amsmath
and some don't so the class has a system for automatically loading packages. It can take a bit of time to figure out all that needs to go in this middle layer when I add a new journal, but generally at that stage of writing an article I'm quite happy to have a task like that to do. And as I said, it's rare that I'd submit to a journal only once so it's a time saver in the long run.
One Package To Rule them all
and0.75
for the question itself ;-)article.cls
with as few packages, as few custom macros and as little non-default configuration as possible.svjour3
, which requires new theorem-like environments to be defined with\spnewtheorem
rather than\newtheorem
. Just a small example.