5

This is my first question here, so apologies if I miss any conventions.

I'm writing a dissertation in LaTeX. My sources are in Mendeley, which is generating a BibTeX file. I'm using the natbib package with the plainnat style.

The first problem that I faced with this was that most of the URLs in the bibliography went off the edge of the page because TeX didn't know how to linebreak them. The natbib documentation suggested that if the url package was loaded, this would Just Work. It mostly did, but it left me with a more subtle problem:

With the url package loaded, URLs are treated similarly to \verb environments - in particular, it is no longer necessary to escape special characters such as _. This means that I have two options:

  1. I can turn on the Mendeley option that escapes special characters in its BibTeX export. This means that my printed URLs contain things like url\_with\_underscore.
  2. I can turn off that Mendeley option so that it doesn't escape the special characters. This means that all the other fields in the bibliography have trouble (e.g. & characters getting lost as they're not escaped).

So, ways that occur to me to go about fixing this: (a) Find a way to stop the url package from treating things like \_ as verbatim (b) Find a different way to get URLs to linebreak in the bibliography (c) Manually edit my .bib file before compiling for the last time, removing escapes from URLs.

I would really love to not do (c) ;-) Any ideas?

3

I'm using biber to automatically remove the escapes (the option (c) in the question, which I seem unable to avoid) as follows:

biber --tool library.bib

and a biber.conf with the following simple regex map:

  <map>
    <map_step map_field_source="url" map_match="\\" map_replace="" />
  </map>

Not ideal, but until Mendeley starts providing the option to not LaTeX-escape for the URL field in particular (or at least make it optional), it will do. See also the Mendeley bug report.

  • 1
    That's a good idea - and it could be incorporated into a makefile or similar to automate the process. I'm not using Mendeley any more, but if I were, then I'd definitely persue this route! – Flyto Jul 15 '14 at 8:59
  • Could you please write me how to modify your code to change $\sim$ to ~? I tried map_match="$\sim$" map_replace="~" without success. Mendeley really causes so many problems that could be easily fixed. – wondering May 31 '15 at 11:31
  • You should check the biber documentation for things like the regex syntax. I expect you'll need to escape the backslash character, for example. Maybe "$\\sim$". – npdoty Jun 1 '15 at 15:07
1

Not sure if it helps regarding your URL problem but you should give biblatex+biber a try:

\usepackage[
    backend=biber,
    style=authoryear-icomp,
    sortlocale=de_DE,
    natbib=true,
    url=true, 
    doi=false,
    eprint=false
]{biblatex}

Works for me, not escaping anything, using a bibfile exported from Mendeley. URLs are broken nicely even if they contain characters like :: or - or ; or # or & or _

0

Using the hyperref package instead of url removed the escapes and gave better overall results for me:

\usepackage{hyperref}
\hypersetup{
    colorlinks=true,
    linkcolor=blue,
    filecolor=blue,
    urlcolor=blue,
    citecolor=blue,
}
\urlstyle{same}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.