Pergunta

Eu quero redefinir o comando \part* para que ele adiciona automaticamente uma linha de conteúdo. Isto prova difícil, pois eu quero reutilizar o original comando \part* dentro da minha versão estrelada.

Normalmente (ou seja, para os comandos sem estrela) eu faria isso como este:

\let\old@part\part
\renewcommand\part[2][]{
  \old@part[#1]{#2}
  … rest of definition}

Isto é, eu iria salvar a definição original de \part em \old@part e usar isso.

No entanto, isso não funciona para comandos com estrela, uma vez que não definem um único lexema (ao contrário do comando \part no exemplo acima). Isto resume-se a seguinte pergunta:? Como posso salvar um comando estrelada

Observe que eu já sei como se redefinir um comando estrelada, usando o comando \WithSuffix do pacote suffix. Este não é o problema.

Foi útil?

Solução

Não há nenhum comando \part*. O que acontece é o comando \part lança um olhar sobre o próximo caractere após ele (com \@ifstar) e despacha para uma das duas outras rotinas que faz o trabalho real com base em se há um asterisco lá ou não.

Referência: TeX FAQ entrada comandos definidos com opções *

Outras dicas

Graças a resposta de @ smg, eu remendada uma solução que funciona perfeitamente. Aqui está a fonte completo, juntamente com comentários explicativos:

% If this is in *.tex file, uncomment the following line.
%\makeatletter

% Save the original \part declaration
\let\old@part\part

% To that definition, add a new special starred version.
\WithSuffix\def\part*{
  % Handle the optional parameter.
  \ifx\next[%
    \let\next\thesis@part@star%
  \else
    \def\next{\thesis@part@star[]}%
  \fi
  \next}

% The actual macro definition.
\def\thesis@part@star[#1]#2{
  \ifthenelse{\equal{#1}{}}
   {% If the first argument isn’t given, default to the second one.
    \def\thesis@part@short{#2}
    % Insert the actual (unnumbered) \part header.
    \old@part*{#2}}
   {% Short name is given.
    \def\thesis@part@short{#1}
    % Insert the actual (unnumbered) \part header with short name.
    \old@part*[#1]{#2}}

  % Last, add the part to the table of contents. Use the short name, if provided.
  \addcontentsline{toc}{part}{\thesis@part@short}
}

% If this is in *.tex file, uncomment the following line.
%\makeatother

(Este precisa do suffix pacotes e ifthen.)

Agora, podemos usá-lo:

\part*{Example 1}
This will be an unnumbered part that appears in the TOC.

\part{Example 2}
Yes, the unstarred version of \verb/\part/ still works, too.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top