Inserindo espaço vertical após uma referência específica (bibtex)

Inserindo espaço vertical após uma referência específica (bibtex)

Eu gostaria de inserir algum espaço vertical após uma referência específica na seção de referências do BibTeX, de preferência com uma sequência de comandos como:

\cite{ABC-2001} 
\refvspace{1cm} 
\cite{XYZ-2002}

As referências são importadas com extensão \bibliography{references.bib}. A ordem está na ordem da citação. O estilo da bibliografia é personalizado, mas digamos que seja \bibliographystyle{unsrt}para definição.

Como fazer isso sem modificar o arquivo bib?

Um possível ponto de partida:

\documentclass{article}
\begin{filecontents}{refs.bib}
@misc{P, author = {P}, year = {2001}}
@misc{Q, author = {Q}, year = {2002}}
@misc{A, author = {A}, year = {2001}}
@misc{B, author = {B}, year = {2002}}
\end{filecontents}

\begin{document}
    This is a survey on different topics.

    \section*{Topic 1}

    Text \cite{P}. Text \cite{Q}.

    \section*{Topic 2}

    % TODO: Visually separate the two topics in the bibliography here

    Text \cite{A}. Text \cite{B}.

    \bibliographystyle{unsrt}
    \bibliography{refs}
\end{document}

Responder1

Vamos considerar sua entrada:

\cite{ABC-2001} 
\refvspace{1cm} 
\cite{XYZ-2002}

Podemos atribuir alguma \vspacemacro que se vincularia à citação de XYZ-2002. Ou seja, ligue \vspace{1cm}assim que encontrar \bibitem{XYZ-2002}na bibliografia.

O exemplo mínimo a seguir consegue isso:

insira a descrição da imagem aqui

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{refs.bib}
@misc{P, author = {P}, year = {2001}}
@misc{Q, author = {Q}, year = {2002}}
@misc{A, author = {A}, year = {2001}}
@misc{B, author = {B}, year = {2002}}
\end{filecontents}

\makeatletter
\let\@refvspace\relax
\providecommand{\refvspace}[1]{%
  \gdef\@refvspace{#1}% Store \refvspace
}
\let\old@cite\cite% Store \cite in \old@cite
\renewcommand{\cite}[1]{%
  \ifx\@refvspace\relax
    % No \refvspace was used
  \else
    \begingroup
    % Create vspace macro
    \edef\x{\endgroup
      \noexpand\global\noexpand\@namedef{#1@vspace}{\noexpand\vspace{\@refvspace}}}\x
    \global\let\@refvspace\relax
  \fi
  \old@cite{#1}}% Process regular \cite
\let\old@bibitem\bibitem% Store \bibitem in \old@bibitem
\renewcommand{\bibitem}[1]{%
  \csname #1@vspace\endcsname% Insert \vspace macro
  \old@bibitem{#1}}% Process regular \bibitem
\makeatother

\begin{document}
This is a survey on different topics.

\section*{Topic 1}

Text \cite{P}. \refvspace{\baselineskip}Text \cite{Q}.

\section*{Topic 2}

\refvspace{1cm}

Text \cite{A}. Text \cite{B}.

\bibliographystyle{unsrt}
\bibliography{refs}

\end{document}

Ressalvas:

  • O exemplo acima é bastante trivial e remove os argumentos opcionais de \citee \bibitem. No entanto, isso pode ser restaurado, se necessário.

  • .bibO conteúdo não é escrito nem para o .bble, portanto, só funcionaria se isso \bibliographyocorressedepoistodas as suas \refvspacemacros.

informação relacionada