plk / biblatex

biblatex is a sophisticated bibliography system for LaTeX users. It has considerably more features than traditional bibtex and supports UTF-8
520 stars 118 forks source link

Biblatex 2.8 and end-of-note punctuation in American style. #168

Closed dfussner closed 11 years ago

dfussner commented 11 years ago

Using what looked to be the final biblatex 2.8 package, downloaded on October 20, 2013, I am seeing punctuation being left outside quotation marks at the end of full, long notes. In subsequent short notes, the punctuation appears inside quotation marks. With a 2.8 development release downloaded on August 6, 2013, the end-of-note punctuation appears correctly inside the quotation marks in all cases. I have used biber 1.8, downloaded October 20, 2013, in all testing.

I used style=verbose when loading biblatex.

Thanks, and sorry for the bad .png. minexam1

Here's the relevant .bib entry for testing:

@Article{lewis, author = {Lewis, Judith}, title = {\mkbibquote{'Tis a Misfortune to Be a Great Ladie}}, journaltitle = {Journal of British Studies}, subtitle = {Maternal Mortality in the British Aristocracy, 1558--1959}, year = 1998, volume = 37, pages = {Weekend \mkbibquote{edition}}, shorttitle = {\mkbibquote{'Tis a Misfortune to Be a Great Ladie}}}

File list from end of .log:

File List article.cls 2004/02/16 v1.4f Standard LaTeX document class size12.clo 2004/02/16 v1.4f Standard LaTeX file (size option) fontenc.sty t1enc.def 2004/02/22 v1.99f Standard LaTeX file textcomp.sty 2004/02/22 v1.99f Standard LaTeX package ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file inputenc.sty 2004/02/05 v1.0d Input encoding file latin1.def 2004/02/05 v1.0d Input encoding file babel.sty 2004/11/20 v3.8d The Babel package germanb.ldf 2004/02/19 v2.6k German support from the babel system frenchb.ldf frenchb.cfg english.ldf 2004/06/14 v3.3o English support from the babel system csquotes.sty 2011/01/20 v5.1b context-sensitive quotations etoolbox.sty 2011/01/03 v2.1 e-TeX tools for LaTeX etex.sty 1998/03/26 v2.0 eTeX basic definition package (PEB) keyval.sty 1999/03/16 v1.13 key=value parser (DPC) csquotes.def 2011/01/20 v5.1b csquotes generic definitions csquotes.cfg
biblatex.sty 2013/10/18 v2.8 programmable bibliographies (PK/JW/AB) biblatex2.sty 2013/10/18 v2.8 programmable bibliographies (biber) (PK/JW/AB)

kvoptions.sty 2011/06/30 v3.11 Key value format for package options (HO) ltxcmds.sty 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) kvsetkeys.sty 2012/04/25 v1.16 Key value parser (HO) infwarerr.sty 2010/04/08 v1.3 Providing info/warning/error messages (HO) etexcmds.sty 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) ifluatex.sty 2010/03/01 v1.3 Provides the ifluatex switch (HO) logreq.sty 2010/08/04 v1.0 xml request logger logreq.def 2010/08/04 v1.0 logreq spec v1.0 ifthen.sty 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) url.sty 2004/03/15 ver 3.1 Verb mode for urls, etc. blx-dm.def verbose.dbx biblatex-dm.cfg blx-compat.def 2013/10/18 v2.8 biblatex compatibility (PK/JW/AB) biblatex.def
standard.bbx 2013/10/18 v2.8 biblatex bibliography style (PK/JW/AB) authortitle.bbx 2013/10/18 v2.8 biblatex bibliography style (PK/JW/AB) verbose.bbx 2013/10/18 v2.8 biblatex bibliography style (PK/JW/AB) verbose.cbx 2013/10/18 v2.8 biblatex citation style (PK/JW/AB) biblatex.cfg
setspace.sty 2000/12/01 6.7 Contributed and Supported LaTeX2e package vmargin.sty 2004/07/15 V2.5 set document margins (VK) english.lbx 2013/10/18 v2.8 biblatex localization (PK/JW/AB) american.lbx 2013/10/18 v2.8 biblatex localization (PK/JW/AB) t1lmr.fd 2007/01/14 v1.3 Font defs for Latin Modern ts1cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions minexam.bbl


plk commented 11 years ago

Do you have a complete MWE we can look at? I wonder if it's babel related as your babel is quite old.

plk commented 11 years ago

@audrey - could this be a style-related change issue?

aboruvka commented 11 years ago

AFAIK no relevant changes have been made between those releases to cause the issue. I just installed biblatex 2.8 and biber 1.8 from SF and can't reproduce your issue with the following document and babel 3.9f.

\documentclass{article}
\usepackage{csquotes}
\usepackage[american]{babel}
%\usepackage[german,british]{babel}
\usepackage[style=verbose]{biblatex}

%\DefineBibliographyExtras{british}{\DeclareQuotePunctuation{.,}}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{lewis,
author = {Lewis, Judith},
title = {\mkbibquote{'Tis a Misfortune to Be a Great Ladie}},
journaltitle = {Journal of British Studies},
subtitle = {Maternal Mortality in the British Aristocracy,
1558--1959},
year = 1998,
volume = 37,
pages = {Weekend \mkbibquote{edition}},
shorttitle = {\mkbibquote{'Tis a Misfortune to Be a Great Ladie}}}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\null\vfill
Filler text.\autocite{lewis}
\end{document}
plk commented 11 years ago

If it's a babel version issue (we did some work on babel and polyglossia support for 2.8), then perhaps we should enforce babel version 3.9 at least for 2.8+

dfussner commented 11 years ago

Many thanks for looking at this. I tried a quick update of babel, which didn't make any difference. My whole TeX setup is very old indeed, so it may finally be biting me. It does seem curious, all the same, that this issue didn't appear until very recently -- I'll see whether I can update a few other things and discover if it makes a difference. With any luck, I'm the only one seeing this bug.

My preamble looks like this, in case it might give a clue:

\nonstopmode \listfiles \documentclass[a4paper,12pt]{article} \usepackage[T1]{fontenc} \usepackage{textcomp} %\usepackage{endnotes} \usepackage[latin1]{inputenc} \usepackage[german,french,american]{babel} \usepackage[autostyle]{csquotes} %\usepackage[document]{ragged2e} \usepackage[style=verbose,backend=biber,alldates=comp,% autolang=other,bibencoding=ascii]{biblatex} \usepackage{ifthen} \usepackage{setspace} \usepackage{vmargin} \setpapersize{A4} \setmarginsrb{1in}{20pt}{1in}{.5in}{1pt}{2pt}{0pt}{2mm} \usepackage{url} \appto\bibsetup{\sloppy} \appto\citesetup{\sloppy} \setlength{\dimen\footins}{9.5in} \setlength{\parindent}{0pt} \bibliography{tiny} %%\onehalfspacing \begin{document}

Thanks again, and I'll keep looking.

dfussner commented 11 years ago

An update: I tested in the same file setting autolang=none, and the problem went away. autolang=other and autolang=other* both have the problem, while autolang=hyphen does not. I wonder, Audrey, if you could test in your example by setting autolang=other and see whether the footnote shows the punctuation in the wrong place. I'm fairly certain that this isn't a babel version problem, but I could be wrong.

aboruvka commented 11 years ago

OK, I can reproduce the problem with autolang=other or other*. Looks like it is related to the recent changes to support polyglossia and limited to \usedriver. I could look further, but won't find time till the weekend.

dfussner commented 11 years ago

I had a look at biblatex2.sty, and I believe I have a patch for the issue, at least as regards babel. I can't test polyglossia, so I'm leaving that alone. The patch basically moves the redefinition of \blx@endlang back inside the test for \abx@field@langid, which is where it was in the dev version of 2.8 that didn't have the issues. I can't find any bad side-effects to the patch with my test files, so I'll include it here in case it might be helpful:

--- biblatex.orig/latex/biblatex2.sty   2013-10-18 21:31:59.000000000 +0100
+++ biblatex/latex/biblatex2.sty    2013-10-23 17:13:58.000000000 +0100
@@ -4861,26 +4861,26 @@
 \@makeother\#
 \gdef\blx@mkautolangbabel{%
   \pretocmd\select@language{\blx@langsetup{#1}}
-    {\ifdef\blx@thelangenv
-       {\gdef\blx@beglang{%
-          \blx@clearlang
-          \begingroup
-          \ifdef\abx@field@langid
-            {\ifcsundef{l@\abx@field@langid}
-               {\blx@warn@nohyph{\abx@field@langid}}
-               {\blx@hook@initlang
-                \csname\blx@thelangenv\expandafter\endcsname
-                \expandafter{\abx@field@langid}}}
-            {}}%
-        \gdef\blx@endlang{%
-          \blx@hook@endlang
-          \csname end\blx@thelangenv\endcsname
-          \endgroup}}
-       {}%
-     \def\blx@imc@mainlang{\select@language{\bbl@main@language}}%
-     \blx@langsetup\bbl@main@language}
-    {\blx@err@patch{'babel' package}%
-     \blx@mknoautolang}}
+  {\ifdef\blx@thelangenv
+    {\gdef\blx@beglang{%
+        \blx@clearlang
+        \begingroup
+        \ifdef\abx@field@langid
+        {\ifcsundef{l@\abx@field@langid}
+          {\blx@warn@nohyph{\abx@field@langid}}
+          {\blx@hook@initlang
+            \gdef\blx@endlang{%
+              \blx@hook@endlang
+              \csname end\blx@thelangenv\endcsname
+              \endgroup}%
+            \csname\blx@thelangenv\expandafter\endcsname
+            \expandafter{\abx@field@langid}}}}
+      {}}%
+    {}%
+    \def\blx@imc@mainlang{\select@language{\bbl@main@language}}%
+    \blx@langsetup\bbl@main@language}
+  {\blx@err@patch{'babel' package}%
+    \blx@mknoautolang}}

 \gdef\blx@mkautolangpoly{%
   \catcode`\_=11% polyglossia uses "_" as a letter

Thanks again.

dfussner commented 11 years ago

Oops, obviously I don't know how to present a patch to the GitHub commenting system. If it's any help I can send it as an attachment.

plk commented 11 years ago

Hmm, that was moved to prevent amother issue. I'll investigate.

dfussner commented 11 years ago

You're quite right -- if you have a langid in an entry then the \usedriver code in notes doesn't always work with my patch, at least here. The problem doesn't seem universal, so I'll keep looking. Sorry if the patch was noise.

plk commented 11 years ago

Yes, you can get into a situation where endlang is never actually called and TEX has to rudely exit many groups which generates errors. Not noise though, it's interesting that this patch did something.

dfussner commented 11 years ago

I'm enclosing another patch, very similar to the first, but it seems to work much better. The principle is the same -- moving endlang back inside the langid test, but I had to move a closing bracket from inside that test to outside it, and I also had to change the gdef to def, or else the same punctuation problem recurred anywhere after a langid field had been used by any entry. I've tested it fairly thoroughly, but you'll no doubt have better ideas. Once again, this only addresses babel, not polyglossia, which I can't test.

--- biblatex.orig/latex/biblatex2.sty   2013-10-18 21:31:59.000000000 +0100
+++ biblatex/latex/biblatex2.sty    2013-10-25 17:10:23.000000000 +0100
@@ -4861,26 +4861,26 @@
 \@makeother\#
 \gdef\blx@mkautolangbabel{%
   \pretocmd\select@language{\blx@langsetup{#1}}
-    {\ifdef\blx@thelangenv
-       {\gdef\blx@beglang{%
-          \blx@clearlang
-          \begingroup
-          \ifdef\abx@field@langid
-            {\ifcsundef{l@\abx@field@langid}
-               {\blx@warn@nohyph{\abx@field@langid}}
-               {\blx@hook@initlang
-                \csname\blx@thelangenv\expandafter\endcsname
-                \expandafter{\abx@field@langid}}}
-            {}}%
-        \gdef\blx@endlang{%
-          \blx@hook@endlang
-          \csname end\blx@thelangenv\endcsname
-          \endgroup}}
-       {}%
-     \def\blx@imc@mainlang{\select@language{\bbl@main@language}}%
-     \blx@langsetup\bbl@main@language}
-    {\blx@err@patch{'babel' package}%
-     \blx@mknoautolang}}
+  {\ifdef\blx@thelangenv
+    {\def\blx@beglang{%
+        \blx@clearlang
+        \begingroup
+        \ifdef\abx@field@langid
+        {\ifcsundef{l@\abx@field@langid}
+          {\blx@warn@nohyph{\abx@field@langid}}
+          {\blx@hook@initlang
+            \def\blx@endlang{%
+              \blx@hook@endlang
+              \csname end\blx@thelangenv\endcsname
+              \endgroup}%
+            \csname\blx@thelangenv\expandafter\endcsname
+            \expandafter{\abx@field@langid}}}
+        {}}}%
+    {}%
+    \def\blx@imc@mainlang{\select@language{\bbl@main@language}}%
+    \blx@langsetup\bbl@main@language}
+  {\blx@err@patch{'babel' package}%
+    \blx@mknoautolang}}

 \gdef\blx@mkautolangpoly{%
   \catcode`\_=11% polyglossia uses "_" as a letter

Thanks again.

plk commented 11 years ago

After looking at your patch, I realised I may have made a rather subtle bracket error when I changed this and in fact the change as such wasn't necessary. I have reverted based on your patch and also removed the \gdef for the \blx@beglang call too which shouldn't be necessary. I don't get the errors I had before which seemed to make my patch necessary. Would be grateful if you could pull 2.8 from SF and try it. I updated 2.8 since it hasn't made its way into TL yet.

dfussner commented 11 years ago

I'll pull 2.8 again and let you know how it goes, but I may not be able to get to it until tomorrow -- many thanks!

dfussner commented 11 years ago

Perhaps I've made a mistake -- I just pulled 2.8 from SF (the tgz, not the tds.tgz version), and diff reports no changes in biblatex2.sty between it and the pull from a few days ago. Running a quick test file confirmed this. Have I missed something?

plk commented 11 years ago

Could be SF mirroring problems. I've uploaded again.

dfussner commented 11 years ago

I only thought of trying a different mirror after I'd shut down the machine. Anyway, I pulled 2.8 from CTAN today and everything looks great. Thanks very much, and congratulations on the release.

plk commented 11 years ago

Glad it's fixed, thanks for testing.