Code: Select all
\def\@partPrefix{}
\def\@partPrefixTable{}
\def\@stepAppendix{}
\renewcommand\part{%
\if@noskipsec \leavevmode \fi
\par
\addvspace{4ex}%
\@afterindentfalse
\secdef\@part\@spart}
\def\@part[#1]#2{%
\ifthenelse{ \equal{\value{part}}{1} }
{}
{
\newpage
}
\ifthenelse{ \boolean{@twoside} }
{
\ifthenelse{ \isodd{\arabic{abspage}} }
{\blankPage} {}
} { }
\edef\partOneUpper{\uppercase{#1}}
\edef\partTwoUpper{\uppercase{#2}}
\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
\@stepAppendix
\addcontentsline{toc}{part}{
\@partPrefixTable\texorpdfstring{\partOneUpper}{\partOneUpper}
}
\else
\addcontentsline{toc}{part}{\partOneUpper}%
\fi
{\parindent \z@ \raggedright
\interlinepenalty \@M
\normalfont \fontsize{14pt}{15pt}
%\centering \bfseries \@partPrefix \MakeUppercase {#2}%
\centering \bfseries \@partPrefix \partTwoUpper%
\markboth{}{}\par}%
\nobreak
\vskip 3ex
\@afterheading}
\def\@spart#1{%
{\parindent \z@ \raggedright
\interlinepenalty \@M
\normalfont \fontsize{14pt}{15pt}
%\centering \bfseries \@partPrefix \MakeUppercase{#1}}%
\centering \bfseries \@partPrefix \partOneUpper}%
\nobreak
\vskip 3ex
\@afterheading}
Code: Select all
\part[Toc Title]{Part heading title}
"PART HEADING TITLE" in the document,
"TOC TITLE" in the toc,
"Toc Title" in the PDF bookmarks.
I discovered \texorpdfstring{\partOneUpper}{\uppercase{SomE TeXt}}} where the second argument is what shows up in the bookmarks, but I can't get it to uppercase the string. I tried using
Code: Select all
\edef\partOneUpper{\uppercase{#1}}
Edit:
I guess a fundamental question is what is stored in a macro, for example
Code: Select all
\edef\aMacro{\uppercase{A StriNg}}
\aCommand{\aMacro}
%How do pass "A STRING" instead of "\uppercase{A StriNg}"