Pregunta

Quiero redefinir el comando \part* para que añada automáticamente una línea de contenidos. Esto resulta difícil ya que quiero volver a utilizar el comando original de \part* dentro de mi version con estrella.

normalmente (es decir, para los comandos sin asterisco) Me gustaría hacerlo de esta manera:

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

Es decir, me gustaría guardar la definición original de \part en \old@part y usar eso.

Sin embargo, esto no funciona para comandos con estrellas ya que no definen un único lexema (a diferencia del comando \part en el ejemplo anterior). Esto se reduce a la siguiente pregunta:? ¿Cómo puedo guardar un comando estrellado

Tenga en cuenta que ya sé cómo redefinir un comando estrellado en sí, usando el comando \WithSuffix del paquete suffix. Este no es el problema.

¿Fue útil?

Solución

No hay un comando \part*. Lo que sucede es el comando \part echa un vistazo al siguiente carácter después de que (con \@ifstar) y despachos a uno de los otros dos rutinas que hace el trabajo real en función de si hay un asterisco allí o no.

Referencia: TeX entrada de la FAQ comandos definidos con opciones *

Otros consejos

Gracias a la respuesta de @ SMG, he improvisado una solución que funciona a la perfección. Aquí está el código fuente completo, junto con comentarios 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

(Esto necesita la suffix paquetes y ifthen.)

Ahora, podemos utilizarlo:

\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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top