Crear propio comando de cita en biblatex

Crear propio comando de cita en biblatex

Tengo el siguiente problema: necesito una especie de "sistema de doble cita" muy simple. Para literatura normal uso el estilo autor-año en biblatex sin problemas. Hice los siguientes pequeños cambios:

\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\renewcommand{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{#1}

El problema es que ahora quiero citar libros antiguos (período moderno temprano) de una manera diferente (no como autor-año), algo como esto:

 Shortauthor, *shorttitle*, p. 124

Creo que una solución es escribir un comando de cita propio, algo como esto, que parece funcionar bien:

\DeclareBibliographyDriver{myshort}{%
 \usebibmacro{begentry}%
  \ifboolexpr{ test{\ifnameundef{shortauthor}} 
            or test {\iffieldundef{shorttitle}}}
   {\usedriver{}{\thefield{entrytype}}}
   {\printnames{shortauthor}%
    \setunit{\addcomma\space}%
    \printfield{shorttitle}\isdot}%
    \usebibmacro{finentry}%
  }

  \DeclareCiteCommand{\mycite}[\mkbibfootnote]
   {\usebibmacro{prenote}}
   {\usedriver{}{myshort}}
   {\multicitedelim}
    {\usebibmacro{postnote}}

PERO(y esta es mi pregunta real): ¿hay alguna manera de:

  • ¿Desactivar las versales del autor?
  • ¿poner el título en cursiva?
  • obtenga la "p." para las páginas atrás?

Es decir, una forma de deshabilitar de alguna manera para este comando concreto las opciones generales que puse con los comandos de renovación, etc.

Respuesta1

Un truco útil para situaciones como esta es crear un interruptor que se active cuando ingresa el comando y se desactive al salir del comando:

\newtoggle{mycite}

\renewcommand*{\mkbibnamelast}[1]{\iftoggle{mycite}{#1}{\textsc{#1}}}
\renewcommand{\postnotedelim}{\iftoggle{mycite}{\addcomma\addspace}{\addcolon\space}}
\DeclareFieldFormat{postnote}{#1}

y luego, cuando definas tu nuevo comando de cita:

\DeclareCiteCommand{\mycite}[\mkbibfootnote]
   {\toggletrue{mycite}\usebibmacro{prenote}}
   {\usebibmacro{mycite}}
   {\multicitedelim}
   {\usebibmacro{postnote}\togglefalse{mycite}}

Por cierto, no puedes usarlo \usedriver{}{\thefield{entrytype}dentro de la definición de \DeclareBibliographyDriver: entrará en un bucle infinito y TeX informará un error. Lo que puedes hacer es definir una nueva macro de babero. Por ejemplo, usando su definición como punto de partida (y ajustada para poner el título (corto) en cursiva):

\newbibmacro{mycite}{
   \ifboolexpr
     {test {\ifnameundef{shortauthor}} or
      test {\iffieldundef{shorttitle}}}
     {\usedriver{}{\thefield{entrytype}}} 
     {\printnames{shortauthor}%
     \setunit{\addcomma\space}%
     \mkbibemph{\printfield{shorttitle}}}
}

información relacionada