% This package implements a version of semi-automatic pronoun switching for writing
% gender-neutral (and possibly annoying) prose.
% The basic code is due to Josef (no last name) and Martin Scharrer on
% http://tex.stackexchange.com/questions/10787/
%
% Modified to handle anaphoric reference to the current gender plus
% all three case forms in both uppercase and lowercase.
% Includes an option to flag to turn off xspace, and a silly option for replacing
% all pronouns with 'they/them/their'.
%
% Copyright 2011 by Alan Munn
%
% This package may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This package has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this package is Alan Munn.
%
% This package consists of the file he-she.sty and documentation files
% he-she.tex and he-she.pdf
%
% Option noxspace
%
% xspace can cause problems if the macro is e.g. enclosed in other markup such
% as \emph{}.  The noxspace option turns off the xspace and forces users to 
% insert a following space using "\ " explicitly.  Default is to enable xspace.
%
% With the default option, the \xspace can be suppressed with the \xspacefalse
% command as needed.
%
% Option they
%
% When you get tired of the silliness of alternating genders, you can switch to
% this option, which will replace all of the relevant pronouns with the third
% person plural pronoun form ('they/them/their').  Note that for the nominative
% this will cause your document to produce ungrammatical text, since there is 
% no way to fix the subject/verb agreement.
%
% As a result, this is probably not intended to be a robust alternative!
% You have been warned! (And you will be if you use it too.)
%
% Version history
% Version 1.0 2011/02/13 Initial release.
% Version 1.1 2013/03/04 Added [para] option and reflexive forms.
%
\ProvidesPackage{he-she}[2013/03/04 Semi-automatic pronoun switching with anaphora v1.1]
\RequirePackage{xspace}
\newif\ifxspace\xspacetrue
\newif\ifHS@they\HS@theyfalse
\newif\ifHS@para
\DeclareOption{noxspace}{\xspacefalse}
\DeclareOption{they}{%
  \HS@theytrue
  \PackageWarning{he-she}{*** WARNING: Use of option `\CurrentOption` will screw up subject/verb agreement for most nominative pronouns. It is only present for for its comic value! USE AT YOUR OWN RISK! ***}
}
%
\DeclareOption{para}{
  \HS@paratrue
  \PackageWarning{he-she}{*** WARNING: Use the `\CurrentOption` at your own risk. ***}}
%
\DeclareOption*{%
 \PackageWarning{he-she}{Unknown option `\CurrentOption`}%
}
\ProcessOptions
% toggle for changing the gender
\newif\ifhe\hetrue
%
%
\ifHS@para%
  \RequirePackage{everyhook}
  \PushPreHook{par}{\makebox[0pt][0pt]{\xspacefalse\heshe}}
\fi
\ifHS@they
% Implement the (somewhat useless) 'they' option
%
\newcommand*{\heshe}{they\ifxspace\xspace\fi}
\newcommand*{\Heshe}{They\ifxspace\xspace\fi}
\newcommand*{\himher}{them\ifxspace\xspace\fi}
\newcommand*{\himherself}{themselves\ifxspace\xspace\fi}
\newcommand*{\Himher}{Them\ifxspace\xspace\fi}
\newcommand*{\Himherself}{Themselves\ifxspace\xspace\fi}
\newcommand*{\hisher}{their\ifxspace\xspace\fi}
\newcommand*{\Hisher}{Their\ifxspace\xspace\fi}
\newcommand*{\he}{they\ifxspace\xspace\fi}
\newcommand*{\He}{They\ifxspace\xspace\fi}
\newcommand*{\him}{them\ifxspace\xspace\fi}
\newcommand*{\himself}{themselves\ifxspace\xspace\fi}
\newcommand*{\Him}{Them\ifxspace\xspace\fi}
\newcommand*{\Him}{Themselves\ifxspace\xspace\fi}
\newcommand*{\his}{their\ifxspace\xspace\fi}
\newcommand*{\His}{Their\ifxspace\xspace\fi}
%
\else
%
% Lowercase versions:
%
% Nominative lowercase switching form \heshe
\newcommand*{\heshe}{%
  \ifhe%
    he%
    \global\hefalse%
  \else%
    she%
    \global\hetrue%
  \fi%
  \ifxspace\xspace\fi
}
%
% Nominative lowercase anaphoric form \he
\newcommand*\he{%
\ifhe%
	she%
  \else%
  	he%
  \fi
  \ifxspace\xspace\fi
}
%
% Accusative lowercase switching form \himher
\newcommand*\himher{%
  \ifhe%
  	him%
    \global\hefalse%
  \else%
  	her%
    \global\hetrue%
  \fi%
  \ifxspace\xspace\fi
}%
% Lowercase switching reflexive form \himherself
%
\newcommand*\himherself{%
\ifhe%
	herself%
  \else%
  	himself%
  \fi
  \ifxspace\xspace\fi
}
%
% Accusative lowercase anaphoric form \him
\newcommand*\him{%
\ifhe%
	her%
  \else%
  	him%
  \fi
  \ifxspace\xspace\fi
}
% Lowercase anaphoric reflexive form \himself
%
\newcommand*\himself{%
\ifhe%
	herself%
  \else%
  	himself%
  \fi
  \ifxspace\xspace\fi
}
%
% Genitive lowercase switching form \hisher
\newcommand*\hisher{%
  \ifhe%
  	his%
    \global\hefalse%
  \else%
  	her%
    \global\hetrue%
  \fi%
  \ifxspace\xspace\fi
}
%
% Genitive lowercase anaphoric form \his
\newcommand*\his{%
\ifhe%
	her%
  \else%
  	his%
  \fi
  \ifxspace\xspace\fi
}
%
% Uppercase versions:
%
% Nominative uppercase switching form \Heshe
\newcommand*{\Heshe}{%
  \ifhe%
    He%
    \global\hefalse%
  \else%
    She%
    \global\hetrue%
  \fi%
  \ifxspace\xspace\fi
}
%
% Nominative uppercase anaphoric form \He
\newcommand*\He{%
\ifhe%
	She%
  \else%
  	He%
  \fi
  \ifxspace\xspace\fi
}
%
% Accusative uppercase switching form \Himher
\newcommand*\Himher{%
  \ifhe%
  	Him%
    \global\hefalse%
  \else%
  	Her%
    \global\hetrue%
  \fi%
  \ifxspace\xspace\fi
}%

% Uppercase switching reflexive form \Himherself
%
\newcommand*\Himherself{%
\ifhe%
	Herself%
  \else%
  Himself%
  \fi
  \ifxspace\xspace\fi
}
%
% Accusative uppercase anaphoric form \Him
\newcommand*\Him{%
\ifhe%
	Her%
  \else%
  	Him%
  \fi
  \ifxspace\xspace\fi
}
%
% Uppercase anaphoric reflexive form \Himself
%
\newcommand*\Himself{%
\ifhe%
	Herself%
  \else%
  	Himself%
  \fi
  \ifxspace\xspace\fi
}
%
% Genitive uppercase switching form \Hisher
\newcommand*\Hisher{%
  \ifhe%
  	His%
    \global\hefalse%
  \else%
  	Her%
    \global\hetrue%
  \fi%
  \ifxspace\xspace\fi
}
%
% Genitive uppercase anaphoric form \His
\newcommand*\His{%
\ifhe%
	Her%
  \else%
  	His%
  \fi
  \ifxspace\xspace\fi
}
\fi
\let\she\he
\let\She\He
\let\her\him
\let\herself\himself
\let\Her\Him
\let\Herself\Himself
\let\hir\his
\let\Hir\His
\endinput