The problem : Pubmed/Medline does not provide a Bibtex output and I could not find any software to transform a Pubmed record into a Bibtex one.
The best solution I found is to write a XSL stylesheet to transform a XML Pubmed record into a Bibtex entry.
Here is the stylesheet :
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text" encoding="iso-8859-1"/> <xsl:template match="/"> <xsl:apply-templates select="PubMedArticle/MedlineCitation/Article"/> </xsl:template> <xsl:template match="PubMedArticle/MedlineCitation/Article"> @Article{<xsl:value-of select="AuthorList/Author/LastName"/><xsl:value-of select="Journal/JournalIssue/PubDate/Year"/>, author = {<xsl:apply-templates select="AuthorList/Author"/>}, title = {<xsl:value-of select="ArticleTitle"/>}, journal = {<xsl:value-of select="../MedlineJournalInfo/MedlineTA"/>}, year = {<xsl:value-of select="Journal/JournalIssue/PubDate/Year"/>}, OPTkey = {}, volume = {<xsl:value-of select="Journal/JournalIssue/Volume"/>}, number = {<xsl:value-of select="Journal/JournalIssue/Issue"/>}, pages = {<xsl:value-of select="Pagination/MedlinePgn"/>}, OPTmonth = {}, OPTnote = {}, OPTannote = {} } </xsl:template> <xsl:template match="AuthorList/Author"><xsl:if test="position()!=1"> and </xsl:if> <xsl:apply-templates select="Initials"/>. <xsl:apply-templates select="LastName"/></xsl:template> </xsl:stylesheet>To use this stylesheet, you have several solutions. You can go to the Pubmed site, search for your publication, then save the corresponding XML record into a text file on your machine, say text.xml. Then you need apply the above stylesheet (named pubmed.xsl for example) to this XML file to obtain a Bibtex output.
xsltproc pubmed.xsl text.xmlThis is the kind of output you get :
@Article{Sitnikova1998, author = {T. Sitnikova and M. Nei}, title = {Evolution of immunoglobulin kappa chain variable region genes in vertebrates.}, journal = {Mol Biol Evol}, year = {1998}, OPTkey = {}, volume = {15}, number = {1}, pages = {50-60}, OPTmonth = {}, OPTnote = {}, OPTannote = {} }
perl -MBio::Biblio -e 'print new Bio::Biblio->get_by_id ("98152304")' > tmp.xml && xsltproc pubmed.xsl tmp.xmlAnd you will get the same output.