commit b98313ba6122452a06725fa2e45fc000e52779e1
parent 69590bb60c6d73629ec7ff89a29d3ec8567a1624
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Tue, 3 Dec 2019 09:55:22 +0100
Add missing AGU package
Diffstat:
A | trackchanges.sty | | | 922 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 922 insertions(+), 0 deletions(-)
diff --git a/trackchanges.sty b/trackchanges.sty
@@ -0,0 +1,922 @@
+%%
+%% This file is part of TrackChanges
+%% Copyright 2006-2009
+%% Novimir Antoniuk Pablant <amicitas@users.sourceforge.net>
+%% Felix Salfner <salfner@informatik.hu-berlin.de>
+%%
+%% http://trackchanges.sourceforge.net/
+%%
+%% Portions of this code adapted from the 'soul' package.
+%% Copyright (C) 1998-2003 Melchior FRANZ
+%%
+%% TrackChanges is free software: you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published by
+%% the Free Software Foundation, either version 2 of the License, or
+%% (at your option) any later version.
+%%
+%% TrackChanges is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with TrackChanges. If not, see <http://www.gnu.org/licenses/>.
+%%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% trackchanges.sty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% A graphical interface has been written to allow the changes made
+%% using this style file to be interactively accepted, rejected
+%% or changed.
+%% trackchanges.py
+%%
+%% To find the latest versions this latex style file and the
+%% associated files file go to:
+%% http://trackchanges.sourceforge.net/
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Usage:
+%%
+%% Help files are included as part of this package:
+%% ./documentation/web/html_css/help.html
+%%
+%% TrackChanges adds the following 5 commands to allow for collaborative
+%% editing of LaTeX documents.
+%%
+%% \add[editor]{text to add}
+%% \remove[editor]{text to remove}
+%% \change[editor]{text to remove}{text to add}
+%% \annote[editor]{text to annotate}{note}
+%% \note[editor]{note}
+%%
+%% In all cases 'editor' is optional.
+%%
+%% In order to have comments color coded by editor, the editors must
+%% be added in the preamble.
+%%
+%% \addeditor{editor}
+%%
+%%
+%% Options
+%%
+%% There are 5 display options. These are specified with the
+%% \usepackage[options]{trackchanges)
+%%
+%% finalold
+%% Ignore all of the edits.
+%% The document will look as if the edits had not been added.
+%% finalnew
+%% Accept all of the edits.
+%% Notes will not be shown in the final output.
+%% footnotes
+%% Added text will be shown inline. Removed text and notes
+%% will be shown as footnotes.
+%% This is the default option.
+%% margins
+%% Added text will be shown inline. Removed text and notes
+%% will be shown in the margin.
+%% Margin notes will be aligned with the edits when possible.
+%% inline
+%% All edits will be shown inline.
+%%
+%% The following two options are to be used with the 'margins'
+%% display style. They are used to make more space for the margin
+%% notes. By default the margins are left as in the original
+%% document.
+%%
+%% movemargins
+%% Move the text over to the left hand side.
+%% The textwidth will stay the same.
+%% adjustmargins
+%% Reduce the textwidth and move the text over to the left
+%% hand side.This option will produced the most space for
+%% the margin notes.
+%%
+%%
+%% Advanced Usage
+%%
+%% Certain types of commands cannot be used inside of the TrackChanges
+%% edit commands without special handling. For more details see
+%% the limitations section.
+%%
+%% This option can be used to deal with incompatible commands.
+%%
+%% ignoremode
+%%
+%% Additional commands can be added to the ignore list with the
+%% following command.
+%%
+%% \tcignore{<command name>}{<num args>}{<arg num to pass>}
+%%
+%% The last argument specifies which, if any, arguments to pass
+%% as plain text when the command is ignored. If the last
+%% argument is zero, then all of the arguments will be ignored.
+%% If \color and \textcolor were not already on the ignore
+%% list then the following commands could be used to add them:
+%%
+%% \tcignore{\textcolor}{2}{2}
+%% \tcignore{\color}{1}{0}
+%%
+%%
+%% TrackChanges also requires special handling for font changing
+%% commands. These type of commands may have to be registered
+%% with track changes to be dealt with properly. To register a
+%% new command use the following command.
+%%
+%% \tcregister{<command name>}{<num args>}
+%%
+%% All of the standard font switching command are registered by
+%% default. If \bf and \emph were not already registered then
+%% the following commands could be used to add them:
+%%
+%% \tcregister{\bf}{0}
+%% \tcregister{\emph}{1}
+%%
+%% While register commands is primarily for font changing it may
+%% work for other types of commands that are causing problems.
+%%
+%%
+%%
+%% Limitations
+%%
+%% - If another package is used that adjusts the margins, it
+%% can take precedence over the TrackChanges handling.
+%% To make sure TrackChanges has the last word, load it
+%% after all other margin related packages.
+%%
+%% - Incompatable with the package 'ulem'
+%% Use the package 'soul' instead for underlining/strikeout.
+%%
+%% - TrackChanges cannot handle certain kinds of commands inside
+%% the edit commands. In particular \color, \textcolor and
+%% any commands from the underlining package 'soul' will not work.
+%% There are two ways to get around these issues.
+%% 1. The 'ignoremode' option can be used.
+%% This will tell TrackChanges to ignore certain commands
+%% (Including the ones mentioned above).
+%% Additional commands can be added to the ignore list with
+%% the \tcignore command.
+%% 2. Sometimes the problematic commands can be preceded by
+%% \protect. This however can have strange behavior.
+%%
+%% - TrackChanges requires special handling for certain kinds of
+%% commands inside of edit commands. These problematic commands
+%% are generally font switching commands. All of the common
+%% font switching commands (such as \emph, \textbf, etc.)
+%% are already handled. If you run into an issue you can try
+%% using \tcregister to register the problematic command.
+%%
+%% - No easy way to tell TrackChanges not to split footnotes
+%% across multiple pages.
+%%
+%% - Some other packages that take over footnote handling may be
+%% incompatible with TrackChanges. Using a footnote package
+%% such as footmisc may fix these problems.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% trackchanges version 0.6, 2007-06-13
+%% written by Felix Salfner
+%%
+%% trackchanges version 0.7, 2009-03-09
+%% rewritten by Novimir Pablant
+%%
+%% version 0.7.0, 2009-04-22 - Novimir Pablant
+%% Overhauled how the editors are set up. Now each editor can be
+%% added simply by using the /addeditor{name} command.
+%% Color system completely overhauled, now uses the 'soul' package.
+%% Added margin commands 'movemargins' and 'adjustmargins'.
+%% Added an option ignoremode and a reimplementation of portions
+%% of 'soul' to allow commands to be ignored inside edits.
+%% Commands \tcignore and \tcregister were added.
+%% Added depreciation warnings for TrackChanges v0.6 commands.
+%% Numerous other internal changes.
+%%
+%%
+%% ---------------------------------------------------------------------
+%% To do:
+%% - Add ability to set custom colors.
+%%
+%% - Create a better way of adding editors that does not have a
+%% five editor limit.
+%%
+%% - Check if the package 'ulem' is loaded, and issue an error.
+%% Right now I am checking if the \ulem command exists.
+%% and issuing a warning.
+%%
+%% - Better error handling, error messages.
+%%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{trackchanges}
+ [2009/04/22 v0.7.0 TrackChanges file ]
+
+% Setup the required packages.
+\RequirePackage{color}
+\RequirePackage{ifthen}
+\RequirePackage{calc}
+\RequirePackage{soul}
+\RequirePackage{morefloats}
+
+% I ran into some conflicts with other packages that deal
+% with footnotes. Adding footmisc solved those problems for me.
+%\RequirePackage{footmisc}
+%\RequirePackage{manyfoot}
+
+%%
+%% -------------- Setup the options
+\newif\if@trackchanges
+\@trackchangestrue
+\newif\if@trackinmargins
+\@trackinmarginsfalse
+\newif\if@trackinline
+\@trackinlinefalse
+\newif\if@keepnew
+\@keepnewfalse
+\newif\if@movemargins
+\@movemarginsfalse
+\newif\if@adjustmargins
+\@adjustmarginsfalse
+\newif\if@TCignoremode
+\@TCignoremodefalse
+
+\DeclareOption{finalold}{\@trackchangesfalse\@keepnewfalse}
+\DeclareOption{finalnew}{\@trackchangesfalse\@keepnewtrue}
+\DeclareOption{margins}{\@trackchangestrue\@trackinmarginstrue\@trackinlinefalse}
+\DeclareOption{inline}{\@trackchangestrue\@trackinlinetrue\@trackinmarginsfalse}
+\DeclareOption{footnotes}{\@trackchangestrue\@trackinmarginsfalse\@trackinlinefalse}
+
+\DeclareOption{movemargins}{\@movemarginstrue\@adjustmarginsfalse}
+\DeclareOption{adjustmargins}{\@adjustmarginstrue\@movemarginstrue}
+
+\DeclareOption{ignoremode}{\@TCignoremodetrue}
+\DeclareOption{ignoremodeoff}{\@TCignoremodefalse}
+
+%% This option exists for backwards compatibility with v0.6.
+%% A depreciated warning will be displayed.
+\DeclareOption{final}{\@trackchangesfalse\@keepnewfalse
+ \PackageWarningNoLine{trackchanges}{%
+ Option 'final' is depreciated.\MessageBreak%
+ Use 'finalold' instead%
+ }%
+}
+
+\ProcessOptions
+
+
+%%
+%% -------------- Inhibit footnotes getting split across pages
+%% This will inhibit splitting completely.
+%% LaTeX will complain about `Underfull \vbox' unless
+%% \raggedbottom is also used.
+%
+%\interfootnotelinepenalty=10000
+%
+%% Default value is 100.
+
+
+%%
+%% -------------- Set options for the soul package
+\setstcolor{red}
+\setuloverlap{0pt}
+
+%%
+%% -------------- Make an alias to the 'soulregister' command.
+\let\tcregister\soulregister
+
+%% -------------- Setup new macros for the soul package.
+%% Here we setup two new commands using soul package macros.
+%% These will allow strikeout, and underline with colored
+%% text. These are important as they ensure that color is
+%% maintained even in situations such as a footnote getting
+%% split across pages.
+
+%% This is where the color is actually added.
+\def\SOUL@coloreverysyllable{%
+ \SOUL@textcolor{\the\SOUL@syllable%
+ \SOUL@setkern\SOUL@charkern%
+ }%
+}
+
+%% This is where the color is actually added.
+\def\SOUL@ulcoloreverysyllable{%
+ \SOUL@textcolor{\SOUL@uleverysyllable}%
+}
+
+%% Here we define a new command with the text color.
+\def\SOUL@settextcolor#1{%
+ \def\SOUL@textcolor{\textcolor{#1}}%
+}
+
+%% This is the setup command for colored text.
+\def\SOUL@colorsetup#1{%
+ \SOUL@settextcolor{#1}%
+ \SOUL@setup%
+ \let\SOUL@everysyllable\SOUL@coloreverysyllable%
+}
+
+%% This is the setup command for strikeout with colored text.
+\def\SOUL@stcolorsetup#1{%
+ \SOUL@settextcolor{#1}%
+ \SOUL@stsetup%
+ \let\SOUL@everysyllable\SOUL@ulcoloreverysyllable%
+}
+
+%% This is the setup command for underline with colored text.
+\def\SOUL@ulcolorsetup#1{%
+ \SOUL@settextcolor{#1}%
+ \SOUL@ulsetup%
+ \let\SOUL@everysyllable\SOUL@ulcoloreverysyllable%
+}
+
+%% Here I define the new callables.
+
+%% Color with strikeout
+\DeclareRobustCommand*{\stcolor}[1]{%
+ \SOUL@stcolorsetup{#1}%
+ \SOUL@%
+}
+
+%% Color with underline
+\DeclareRobustCommand*{\ulcolor}[1]{%
+ \SOUL@ulcolorsetup{#1}%
+ \SOUL@%
+}
+
+%% Colored text
+\DeclareRobustCommand*{\soulcolor}[1]{%
+ \SOUL@colorsetup{#1}%
+ \SOUL@%
+}
+
+%%
+%% -------------- Setup counters
+\newcounter{userid}
+\setcounter{userid}{-1}
+\newcounter{changenumber}[page]
+\setcounter{changenumber}{0}
+\newcounter{storefootnote}
+\newcounter{numeditors}
+\setcounter{numeditors}{0}
+\newcounter{maxeditors}
+\setcounter{maxeditors}{5}
+
+
+%%
+%% ----------- Create commands for five users
+\newcommand{\TC@editorOne}{n/n}
+\newcommand{\TC@editorTwo}{n/n}
+\newcommand{\TC@editorThree}{n/n}
+\newcommand{\TC@editorFour}{n/n}
+\newcommand{\TC@editorFive}{n/n}
+
+
+%%
+%% ----------- create commands to add an editor.
+\newcommand{\addeditor}[1]{
+ \matchuser{#1}
+ \ifthenelse{\value{userid} = -1}
+ {\addNewEditor{#1}}{}
+}
+\newcommand{\addNewEditor}[1]{
+ \stepcounter{numeditors}
+ \setcounter{userid}{\value{numeditors}}
+ % Check the number of authors.
+ \ifthenelse{\value{numeditors} > \value{maxeditors}}
+ {\TC@WarningTooManyEditors}
+ {}
+ \ifthenelse{\value{userid} = 1}
+ {\renewcommand{\TC@editorOne}{#1}}
+ {\ifthenelse{\value{userid} = 2}
+ {\renewcommand{\TC@editorTwo}{#1}}
+ {\ifthenelse{\value{userid} = 3}
+ {\renewcommand{\TC@editorThree}{#1}}
+ {\ifthenelse{\value{userid} = 4}
+ {\renewcommand{\TC@editorFour}{#1}}
+ {\ifthenelse{\value{userid} = 5}%
+ {\renewcommand{\TC@editorFive}{#1}}
+ {}
+ }
+ }
+ }
+ }
+}
+
+
+%%
+%% --------------- define text colors for different users
+\newcommand{\usercolor}{%
+ \ifthenelse{\value{userid} = 0}%
+ {\definecolor{UserColor}{rgb}{0.33,0.11,0.46}}% Purple
+ {\ifthenelse{\value{userid} = 1}%
+ {\definecolor{UserColor}{rgb}{0.1,0.1,0.8}}% Blue
+ {\ifthenelse{\value{userid} = 2}%
+ {\definecolor{UserColor}{rgb}{0.0,0.6,0.0}}% Green
+ {\ifthenelse{\value{userid} = 3}%
+ {\definecolor{UserColor}{rgb}{0.68,0.17,0.5}}% Magenta
+ {\ifthenelse{\value{userid} = 4}%
+ {\definecolor{UserColor}{rgb}{0.13,0.60,0.65}}% Cyan
+ {\ifthenelse{\value{userid} = 5}%
+ {\definecolor{UserColor}{rgb}{0.86,0.50,0.12}}% Orange
+ {\definecolor{UserColor}{rgb}{0.13,0.70,0.50}}% Teal
+ }%
+ }%
+ }%
+ }%
+ }%
+}
+
+
+%%
+%% -------------- set counter userid according to editor
+\newcommand{\matchuser}[1]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\setcounter{userid}{0}}%
+ {\ifthenelse{\equal{#1}{\TC@editorOne}}%
+ {\setcounter{userid}{1}}%
+ {\ifthenelse{\equal{#1}{\TC@editorTwo}}%
+ {\setcounter{userid}{2}}%
+ {\ifthenelse{\equal{#1}{\TC@editorThree}}%
+ {\setcounter{userid}{3}}%
+ {\ifthenelse{\equal{#1}{\TC@editorFour}}%
+ {\setcounter{userid}{4}}%
+ {\ifthenelse{\equal{#1}{\TC@editorFive}}%
+ {\setcounter{userid}{5}}%
+ {\setcounter{userid}{-1}}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \usercolor%
+}
+
+%% --------------- Setup a command for the user label.
+\newcommand{\UserLabel}{}
+%%
+\newcommand{\GetUserLabel}[1]{%
+ \ifthenelse{\equal{#1}{}}%
+ {}%
+ {\userco{\textit{#1}:}}%
+}
+
+
+%%
+%% --------------- define commands to color text.
+%% The first command works properly across paragraphs.
+%% The second works well with the footnote.
+%%
+%% The last two use the soul package.
+\newcommand{\usertext}[1]{\color{UserColor}{#1}\normalcolor}
+\newcommand{\usertextfoot}[1]{\textcolor{UserColor}{#1}}
+\newcommand{\userco}[1]{\soulcolor{UserColor}{#1}}
+\newcommand{\userst}[1]{\stcolor{UserColor}{#1}}
+\newcommand{\userul}[1]{\ulcolor{UserColor}{#1}}
+
+
+%%
+%% --------------- define command for margin text.
+\newcommand{\marginText}[2]{%
+ \renewcommand{\baselinestretch}{0.8}%
+ \marginpar{\raggedright%
+ \footnotesize%
+ \textsuperscript{\thefootnote}%
+ \UserLabel~#2%
+ }%
+}
+
+
+%%
+%% --------------- This need to be called at the beginning of every command.
+\newcommand{\trackingstart}[1]{%
+ % Set the ignores if the 'ignore' option was set.
+ \if@TCignoremode%
+ \TC@SetIgnores%
+ \fi%
+ \setcounter{storefootnote}{\value{footnote}}%
+ \refstepcounter{changenumber}%
+ \matchuser{#1}%
+ \ifthenelse{\value{userid} = -1}%
+ {\TC@WarningUnknownEditor{#1}}%
+ {}%
+ \renewcommand{\thefootnote}{\usertextfoot{c\arabic{changenumber}}}%
+ \setulcolor{UserColor}%
+ \renewcommand{\UserLabel}{\GetUserLabel{#1}}%
+}
+
+
+%%
+%% --------------- This need to be called at the end of every command.
+\newcommand{\trackingend}{%
+ \setcounter{footnote}{\value{storefootnote}}%
+ % Reset the ignores if the 'ignore' option was set.
+ \if@TCignoremode%
+ \TC@ResetIgnores%
+ \fi%
+}
+
+
+%%
+%% --------------- Define the frontend command: \add
+%% usage: \add[Editor]{new text}
+\newcommand{\add}[2][]{%
+ \if@trackchanges%
+ \trackingstart{#1}%
+ \if@trackinmargins%
+ \textsuperscript{\thefootnote}%
+ \marginText{#1}{\userco{\textit{Text added.}}}%
+ \else%
+ \if@trackinline%
+ {\footnotesize\textsuperscript{\UserLabel}}%
+ \else%
+ \footnote{\UserLabel~\userco{\textit{Text added.}}}%
+ \fi%
+ \fi%
+ \usertext{\ul{#2}}%
+ \trackingend%
+ \else%
+ %% if trackchanges is false ...
+ \if@keepnew%
+ %% Keep the new text.
+ #2%
+ \fi%
+ %% if keepnew is false do nothing.
+ \fi%
+}
+
+
+%%
+%% --------------- Define the frontend command: \remove
+%% usage: \remove[Editor]{original text}
+\newcommand{\remove}[2][]{%
+ \if@trackchanges%
+ \trackingstart{#1}%
+ \if@trackinmargins%
+ \textsuperscript{\thefootnote}%
+ \marginText{#1}{\userst{#2}}%
+ \else%
+ \if@trackinline%
+ {\footnotesize\textsuperscript{\UserLabel}\usertext{\st{#2}}}%
+ \else%
+ \footnote{\UserLabel~\userst{#2}}%
+ \fi%
+ \fi%
+ \trackingend%
+ \else%
+ %% if trackchanges is false ...
+ \if@keepnew%
+ %% Remove the old text.
+ \else
+ %% Keep the old text.
+ #2%
+ \fi%
+ \fi%
+}
+
+
+%%
+%% --------------- Define the frontend command: \change
+%% usage: \change[Editor]{original text}{new text}
+\newcommand{\change}[3][]{%
+ \if@trackchanges%
+ \trackingstart{#1}%
+ \if@trackinmargins%
+ \textsuperscript{\thefootnote}%
+ \marginText{#1}{\userst{#2}}%
+ \else%
+ \if@trackinline%
+ {\footnotesize\textsuperscript{\UserLabel}\usertext{\st{#2}}}%
+ \else%
+ \footnote{\UserLabel~\userst{#2}}%
+ \fi%
+ \fi%
+ \usertext{\ul{#3}}%
+ \trackingend%
+ \else%
+ %% if trackchanges is false ...
+ \if@keepnew%
+ %% Keep the new text.
+ #3%
+ \else
+ %% Keep the old text.
+ #2%
+ \fi%
+ \fi%
+}
+
+
+%%
+%% --------------- Define frontend command: \annonte
+%% usage: \annote[Editor]{highlighted text}{note text}
+\newcommand{\annote}[3][]{%
+ % Make the underlining thicker and higher.
+ \setul{1pt}{0.3ex}%
+ \if@trackchanges%
+ \trackingstart{#1}%
+ \if@trackinmargins%
+ \textsuperscript{\thefootnote}%
+ \marginText{#1}{\userco{#3}}%
+ \ul{#2}%
+ \else%
+ \if@trackinline%
+ {\footnotesize\textsuperscript{\UserLabel}}%
+ \ul{#2}%
+ {\footnotesize\usertext{~[#3]}}%
+ \else%
+ \footnote{\UserLabel~\userco{#3}}%
+ \ul{#2}%
+ \fi%
+ \fi%
+ \trackingend%
+ \else%
+ %% if trackchanges is false ... just print text.
+ #2%
+ \fi%
+ % Reset the underlineing
+ \resetul%
+}
+
+
+%%
+%% --------------- Define frontend command: \note
+%% usage: \note[Editor]{note text}
+\newcommand{\note}[2][]{%
+ \if@trackchanges%
+ \trackingstart{#1}%
+ \if@trackinmargins%
+ \textsuperscript{\thefootnote}%
+ \marginText{#1}{\userco{#2}}%
+ \else%
+ \if@trackinline%
+ {\footnotesize\textsuperscript{\UserLabel}}%
+ {\footnotesize\usertext{~[#2]}}%
+ \else%
+ \footnote{\UserLabel~\userco{#2}}%
+ \fi%
+ \fi%
+ \trackingend%
+ \else%
+ %% if trackchanges is false ... do not print notes
+ \fi%
+}
+
+
+%%
+%% --------------- Define frontend command: \refneeded
+%% usage: \refneeded[Editor]{note text}
+\newcommand{\refneeded}[2][]{%
+ \if@trackchanges%
+ \trackingstart{#1}%
+ \if@trackinmargins%
+ \textsuperscript{\thefootnote}%
+ \marginText{#1}{\userco{REFERENCE NEEDED #2}}%
+ \else%
+ \if@trackinline%
+ {\footnotesize\textsuperscript{\UserLabel}}%
+ \ifthenelse{\equal{#2}{}}%
+ {{\footnotesize\usertext{~[REFERENCE NEEDED]}}}%
+ {{\footnotesize\usertext{~[REFERENCE NEEDED #2]}}}%
+ \else%
+ \footnote{\UserLabel~\userco{REFERENCE NEEDED #2}}%
+ \fi%
+ \fi%
+ \trackingend%
+ \else%
+ %% if trackchanges is false ... do not print notes
+ \fi%
+}
+
+
+%%
+%% -------------- Setup for margin notes.
+\newcommand{\setupMarginpar}{
+ \setlength{\marginparwidth}{\paperwidth}
+ \addtolength{\marginparwidth}{-1in}
+ \addtolength{\marginparwidth}{-\oddsidemargin}
+ \addtolength{\marginparwidth}{-\hoffset}
+ \addtolength{\marginparwidth}{-\textwidth}
+ \addtolength{\marginparwidth}{-\marginparsep}
+ \addtolength{\marginparwidth}{-5mm}
+}
+\newcommand{\setupMoveMargins}{
+ \setlength{\oddsidemargin}{-1in}
+ \addtolength{\oddsidemargin}{0.5in}
+}
+\newcommand{\setupAdjustMargins}{
+ \setlength{\textwidth}{0.5\paperwidth}
+}
+\newcommand{\setupMargins}{
+ \if@movemargins
+ \setupMoveMargins{}
+ \fi
+ \if@adjustmargins
+ \setupAdjustMargins{}
+ \fi
+ % The Margins are setup using \AtBeginDocument.
+}
+
+%% --------------- Check that conflicting packages are not loaded.
+\def\TC@checkCompatibility{
+ \ifx\uline\undefined
+ \else
+ \TC@WarningUlem
+ \fi
+}
+
+%% ---------------- Setup for actions to be taken after the style file has been read.
+\AtEndOfPackage{
+ \if@trackchanges
+ \if@trackinmargins
+ \setupMargins{}
+ \else
+ \fi
+ \fi
+}
+
+%% ---------------- Setup for actions to be taken after the preamble.
+\AtBeginDocument{
+ \TC@checkCompatibility
+ \TC@checkDepreciated
+ \if@trackchanges
+ \if@trackinmargins
+ \setupMarginpar
+ \else
+ \fi
+ \fi
+}
+
+%%
+%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% --------------- Setup for backwards compatibility with v0.6
+\newcommand{\initialsOne}{}
+\newcommand{\initialsTwo}{}
+\newcommand{\initialsThree}{}
+\newcommand{\initialsFour}{}
+\newcommand{\initialsFive}{}
+
+%% --------------- Check for depreciated options
+\def\TC@checkDepreciated{
+ \ifthenelse{\equal{\initialsOne}{}}
+ {}{\TC@WarningDepreciatedInitials
+ \addeditor{\initialsOne}}
+ \ifthenelse{\equal{\initialsTwo}{}}
+ {}{\TC@WarningDepreciatedInitials
+ \addeditor{\initialsTwo}}
+ \ifthenelse{\equal{\initialsThree}{}}
+ {}{\TC@WarningDepreciatedInitials
+ \addeditor{\initialsThree}}
+ \ifthenelse{\equal{\initialsFour}{}}
+ {}{\TC@WarningDepreciatedInitials
+ \addeditor{\initialsFour}}
+ \ifthenelse{\equal{\initialsFive}{}}
+ {}{\TC@WarningDepreciatedInitials
+ \addeditor{\initialsFive}}
+}
+
+%%
+%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% --------------- Setup warnings.
+\newcommand{\TC@WarningTooManyEditors}{%
+ \PackageWarningNoLine{trackchanges}{%
+ A maximum of \arabic{maxeditors} editors are supported.\MessageBreak%
+ Changes made by additional editors will all have\MessageBreak%
+ the same color coding%
+ }%
+}
+\newcommand{\TC@WarningUnknownEditor}[1]{%
+ \PackageWarning{trackchanges}{%
+ Editor '#1' unknown.\MessageBreak%
+ }%
+}
+\newcommand{\TC@WarningUlem}{%
+ \PackageWarningNoLine{trackchanges}{%
+ TrackChanges is not compatable with the \MessageBreak%
+ 'ulem' package.\MessageBreak%
+ Use the 'soul' package instead%
+ }%
+}
+\newcommand{\TC@WarningDepreciatedInitials}{%
+ \PackageWarningNoLine{trackchanges}{%
+ The '\noexpand\renewcommand{\noexpand\initialsNum}{name}' commands\MessageBreak%
+ are depreciated.\MessageBreak%
+ Use '\noexpand\addeditor{name}' instead.'%
+ }%
+}
+
+
+%%
+%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Below are a set of definitions to add an ignore list to the soul
+%% package.
+%%
+%% This is not a default as it reimplements some of the internals of
+%% the soul package. If a new version of soul were to come out
+%% this stuff might break.
+\if@TCignoremode
+
+
+%% These two function allow us to turn on and off the ignore list.
+%% This is so we don't mess up soul for anyone else.
+\def\TC@SetIgnores{%
+ \let\SOUL@ignores\TC@ignores%
+}
+\def\TC@ResetIgnores{%
+ \let\SOUL@ignores\TC@emptyignores%
+}
+
+\newtoks\TC@ignores
+\newtoks\TC@emptyignores
+
+%% The commands are separated by \\. The first number is the
+%% number of inputs for the command. The command name
+%% is given next. The last number specifies which input to
+%% pass through. If the last number is zero nothing will be
+%% passed.
+
+\TC@ignores={%
+ \\2\textcolor{2}%
+ \\1\color{0}%
+ \\1\ul{1}%
+ \\1\st{1}%
+ \\1\hl{1}%
+ \\1\caps{1}%
+ \\1\so{1}%
+}
+\TC@emptyignores={}
+
+%% Initialize soul not to use the ignore list.
+\let\SOUL@ignores\TC@emptyignores
+
+%% This is a way to register new ignores.
+\def\tcignore#1#2#3{{%
+ \edef\x{\global\TC@ignores={\the\TC@ignores
+ \noexpand\\#2\noexpand#1#3}}\x
+}}
+
+
+%% Here I redefine \SOUL@dotoken.
+%% The new version also checks for ignores.
+\def\SOUL@dotoken#1{%
+ \def\SOUL@@{\SOUL@addtoken{#1}}%
+ \def\\##1##2{%
+ \edef\SOUL@x{\string#1}%
+ \edef\SOUL@n{\string##2}%
+ \ifx\SOUL@x\SOUL@n
+ \def\SOUL@@{\SOUL@docmd{##1}{#1}}%
+ \else
+ \edef\SOUL@n{\string##2\space}%
+ \ifx\SOUL@x\SOUL@n
+ \def\SOUL@@{\SOUL@docmd{##1}{#1}}%
+ \fi
+ \fi
+ }%
+ \the\SOUL@cmds
+ \def\\##1##2##3{%
+ \edef\SOUL@x{\string#1}%
+ \edef\SOUL@n{\string##2}%
+ \ifx\SOUL@x\SOUL@n
+ \def\SOUL@@{\SOUL@doignore{##1}{#1}{##3}}%
+ \else
+ \edef\SOUL@n{\string##2\space}%
+ \ifx\SOUL@x\SOUL@n
+ \def\SOUL@@{\SOUL@doignore{##1}{#1}{##3}}%
+ \fi
+ \fi
+ }%
+ \the\SOUL@ignores%
+ \SOUL@@
+}
+
+%% This is where the actual ignoring is done.
+\def\SOUL@doignore#1#2#3{%
+ \ifx2#1%
+ \SOUL@doword%
+ \def\SOUL@@##1##2{%
+ \ifx1#3%
+ \SOUL@do{##1}%
+ \else\ifx2#3%
+ \SOUL@do{##2}%
+ \fi\fi%
+ \SOUL@scan%
+ }%
+ \else\ifx1#1%
+ \SOUL@doword%
+ \def\SOUL@@##1{%
+ \ifx1#3%
+ \SOUL@do{##1}%
+ \fi%
+ \SOUL@scan%
+ }%
+ \else
+ \SOUL@doword
+ \let\SOUL@@\SOUL@scan
+ \fi\fi
+ \SOUL@@
+}
+
+\fi
+
+%%
+%%
+%% End of file trackchanges.sty