GeneralPDF Bookmark Format

LaTeX specific issues not fitting into one of the other forums of this category.
Post Reply
jaykemper
Posts: 22
Joined: Wed Apr 15, 2009 12:11 am

PDF Bookmark Format

Post by jaykemper »

I'm writing a class that has parts that need to be all caps. I've defined \part like so

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}
yields:

"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}}
but that failed to uppercase. Does anyone know how to do this?

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}"

Recommended reading 2024:

LaTeXguide.org • LaTeX-Cookbook.net • TikZ.org

NEW: TikZ book now 40% off at Amazon.com for a short time.

Post Reply