# [Tex/LaTex] Detect beginning of a sentence in a macro for capitalization

capitalizationconditionalsmacrospunctuation

Is it possible to make macros give different results at the beginning of a new sentence? Suppose that I want the macro "\secname" to write "Section" at the beginning of a new sentence, and "section" anywhere else. How can I do so?

You could set the \sfcode of the "end of sentence" chars to something different and test for it:

 \documentclass[10pt]{report}
\sfcode\.=1001
\sfcode\?=1001
\sfcode\!=1001
\sfcode\:=1001
\newcommand\secname{\ifnum\spacefactor=1001 Secname\else secname\fi}
\begin{document}
abc. \secname\ is \secname.

e.g.\@ \secname
\end{document}


\nonfrenchspacing is also setting the \sfcodes. In this case you could use something like this:

 \documentclass[10pt]{report}
\nonfrenchspacing
\newcommand\secname{\ifnum\spacefactor>1900 Secname\else secname\fi}
\begin{document}
abc. \secname\ is \secname.
abc: \secname, \secname.
e.g.\@ \secname
\end{document}