[Tex/LaTex] Alternate he / she in text

conditionalsmacros

This question led to a new package:
he-she

I have seen a book that instead of using the masculine pronoun (he, his, etc.) alternates the gender ('he' then 'she' then next time 'he' again).

Is there a way to do this with LaTeX – to use a placeholder that alternates between two predefined words?

(I'm looking for a pointer as to where to start.)

EDIT: There is a useful discussion in the comments to Martin's answer for how to relax the strict he/she alternate (which can be confusing if applied too strictly).

Best Answer

Following up on the discussion about how to get this to work in practice, here's a modification to Josef's solution which allows one to use anaphoric pronouns linked to the current state. Pronominal anaphora is quite complicated, so even this solution would only work for a limited set of cases, but it would still be a bit of an improvement.

Update: I've implemented this solution as the he-she package.

The problem arises in sentences like the following:

  1. If someone thinks \heshe is sick, he should go to the doctor.

(As Norman notes, it's perfectly colloquiual English to use 'they' for these sorts of pronouns, but since that's not up for debate here, we'll soldier on :-) )

In sentence (1) we need the pronoun in the main clause to match in gender with the pronoun in the 'if'-clause. If we use the \heshe macro we won't know what the gender is, however, since it will change depending on how many times it has previously been used.

So we really need two macros: one for the switch, and one for anaphoric reference to the current gender state. I've implemented this simply by creating one extra macro within Josef's solution (of course the same idea works for Martin's as well.)

    \documentclass{article}
    \usepackage{xspace}
    \newif\ifhe\hetrue
    \newcommand*\heshe%
    {%
      \ifhe%
        he%
        \global\hefalse%
      \else%
        she%
        \global\hetrue%
      \fi%
    \xspace
    }%
    \newcommand*\he%
    {\ifhe%
        she
      \else%
        he%
      \fi
    \xspace
    }
    \begin{document}

If someone thinks \heshe is sick \he should go to a doctor immediately.
When \he goes to the the doctor, \heshe can figure out the problem.
\end{document}

This is a more linguistically useful version than restricting the scope of the change to a single sentence, since in the second sentence of the source example, there are two instances of a pronoun: the first is anaphoric to the previous sentence (and so should match in gender, but the second can be assigned a new gender.)

Output of sample document:

Related Question