2

I am trying to migrate my document from Bibtex to Biblatex (biber), but after the change I cannot compile my document anymore. In this mini file I am trying to find my bug. What am I doing wrong?

I appreciate the help!!

(Background: The reason I am switching to biber is that I want to divide my literature into several groups. And I was told that biber would be the easiest option.)

TLDR: I cannot compile my code and I get the following error message (in TEXmaker):

Package biblatex Info: Reference segment=0 on input line 34.
! Illegal parameter number in definition of \abx@list@location.
<to be read again>
1
l.35 ...l durch die Medien geht \cite{Brown.2017}
und auch der Beruf des gew...
You meant to type ## instead of #, right?
Or maybe a } was forgotten somewhere earlier, and things
are all screwed up? I'm going to assume that you meant ##.

My bibfile:

@online{Brown.2017,
 author = {Brown, Meta S.},
 editor = {Forbes},
 year = {2017},
 title = {{Read This Before You Pay For That Masters In Data Science Program}},
 url = {\url{https://www.forbes.com/sites/metabrown/2017/10/31/read-this-before-you-pay-for-that-masters-in-data-science-program/#1a20e13f78b2}},
 urldate = {2018-10-19},
 origdate = {2017-10-31},
 abstract = {},
 location = {\url{https://www.forbes.com/sites/metabrown/2017/10/31/read-this-before-you-pay-for-that-masters-in-data-science-program/#1a20e13f78b2}},
 note = {Forbes. Zuletzt gepr{\"u}ft am 19.10.2018.}
}

My texfile:

    \documentclass[
    pdftex,
    oneside,            
    12pt,               
    parskip=half,       
    headheight = 14pt,
    headsepline,        
    footsepline,        
    footheight = 16pt,
    abstracton,     
    DIV=calc,       
    BCOR=8mm,
    headinclude=false,
    footinclude=false,
    listof=totoc,
    toc=bibliography,
]{scrreprt}
\usepackage{xstring}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{epigraph}
\usepackage[
backend=biber,  
bibwarn=true,
bibencoding=utf8,
sortlocale=nyt,
citestyle=authoryear,
]{biblatex}

\addbibresource{BiblatexLiteratur.bib}



\begin{document}
Dadurch, dass Data Science im Moment viel durch die Medien geht \cite{Brown.2017} und auch der Beruf des gewählt \cite{Glassdoor.2018}.
\clearpage
\printbibliography
\end{document}
1
  • 1
    It should usually not be necessary to pass pdftex as package option (or global class option), it can actually be detrimental if you happen to use a different engine than pdfTeX, so I suggest you drop that option. bibwarn=true, is already the default and need not be given as option. bibencoding=utf8, would be detected automatically with your settings and is thus also not needed. citestyle=authoryear, without bibstyle=authoryear, (which could be combined to style=authoryear,) is also a bit unusual. (With style=authoryear, sortlocale=nyt, would be the default.)
    – moewe
    Jan 11, 2019 at 16:36

1 Answer 1

1

The problem is the URL, specifically the special character #, in the location field. # is very special for LaTeX (see Escape character in LaTeX for a list of other characters with special meanings) and causes problems even with \url if the \url command is an argument of another command – and this happens to be the case in the .bbl file.

Since location is not the semantically correct field to give the URL of an entry anyway, you should just delete that field. location (and its BibTeX alias address) is meant to hold the (physical) place of publication of the work (usually that is the place where the publisher, organization or institution resides).

The URL of a work should be given in the url field. (Special URIs like DOIs may have dedicated fields: doi, eprint) In the url field special characters like # are allowed and do not cause an error. It is also not necessary to escape the URL with \url there.

Your entry could look like in the following MWE

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber]{biblatex}

%\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@online{Brown.2017,
  author  = {Brown, Meta S.},
  editor  = {Forbes},% or maybe even better: organization = {Forbes},
  year    = {2017},
  title   = {Read This Before You Pay For That Masters In Data Science Program},
  url     = {https://www.forbes.com/sites/metabrown/2017/10/31/read-this-before-you-pay-for-that-masters-in-data-science-program/},
  urldate = {2018-10-19},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\cite{Brown.2017}
\printbibliography
\end{document}

Brown, Meta S. (2017). Read This Before You Pay For That Masters In Data Science Program. Ed. by Forbes. url: https://www.forbes.com/sites/metabrown/2017/10/31/read-this-before-you-pay-for-that-masters-in-data-science-program/ (visited on 19/10/2018).

I omitted the #1a20e13f78b2 from the URL, because the link worked fine without the # bit as well (as one should be able to expect: the # usually signifies an anchor on the page, but it didn't take me anywhere else than the top of the page).

2
  • Thank you! This worked perfectly and now I can omit my dirty work-arounds to display the URL and the visited date.
    – feeder
    Jan 11, 2019 at 17:04
  • @feeder Glad I could help. Happy TeXing!
    – moewe
    Jan 11, 2019 at 17:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .