Beachten Sie, dass \path
beliebiger Text umbrochen werden kann gemäßErzwingen von Zeilenumbrüchen in \url\path
, ich würde gerne anstelle von \verb
innerhalb von Biblatex für die „wörtlichen“ Felder verwenden .
Dies würde bedeuten, dass sowohl \verb
als auch überschrieben werden \endverb
, siehe beispielsweise diese Zeilen in der .bbl
unten aus dem MWE generierten Datei.
\verb{file}
\verb /Users/joe/Weholdthesetruthstobeself-evidentthatallmenarecreatedequalthattheyareendowedbytheirCreatorwithcertainunalienableRightsthatamongtheseareLifeLibertyandthepursuitofHappiness/dec.txt
\endverb
Ich bin verwirrt, wie das syntaktisch funktionieren würde.
Das Bild hier zeigt den gewünschten Zeilenumbruch bei „Pfad“, das (schöne) Verhalten bei einem Dateinamen mit vielen Unterstrichen und das (nicht sehr schöne) Verhalten bei Dateinamen ohne Unterstriche.
Quellcode für das Obige:
% arara: pdflatex
% arara: biber
% arara: pdflatex
% arara: pdflatex
\documentclass{article}
\usepackage[style=reading,
entryhead=true,
entrykey=false,
natbib,
hyperref=false,
url=false,
doi=false,
%style=apa,
sorting=nyt,
isbn=false,
%backref=true,
firstinits=true,
minnames=13,
maxnames=35,
minbibnames=10,
maxbibnames=100,
parentracker=true,
defernumbers=true,
backend=biber]{biblatex}
\usepackage[hyphenbreaks]{breakurl}
\PassOptionsToPackage{hyphens}{url}
\begin{filecontents}{\jobname.bib}
@inproceedings{XXXXXX,
author = {PQR},
booktitle = {BBC},
keywords = {LLM},
title = {ARP},
year = {2010a},
file = {/Users/joe/We_hold_these_truths_to_be_self-evident_that_all_men_are_created_equal_that_they_are_endowed_by_their_Creator_with_certain_unalienable_Rights_that_among_these_are_Life_Liberty_and_the_pursuit_of_Happiness/dec.txt},
}
@inproceedings{YYYYYYYY,
author = {PQR},
booktitle = {BBC},
keywords = {LLM},
title = {ARP},
year = {2010b},
file = {/Users/joe/Weholdthesetruthstobeself-evidentthatallmenarecreatedequalthattheyareendowedbytheirCreatorwithcertainunalienableRightsthatamongtheseareLifeLibertyandthepursuitofHappiness/dec.txt},
}
\end{filecontents}
\expandafter\def\expandafter\UrlBreaks\expandafter{\UrlBreaks% save the current one
\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j%
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t%
\do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D%
\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N%
\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X%
\do\Y\do\Z}
\addbibresource{\jobname.bib}
\begin{document}
Path: \path{/Users/joe/Weholdthesetruthstobeself-evidentthatallmenarecreatedequalthattheyareendowedbytheirCreatorwithcertainunalienableRightsthatamongtheseareLifeLibertyandthepursuitofHappiness/dec.txt}
\nocite{*}
\printbibliography
\end{document}
Antwort1
Zunächst einmal .bbl
ist die Ausgabe in der Datei nur für den internen Gebrauch bestimmt biblatex
und die Verwendung des Befehls \verb
bedeutet nicht, dass dies der Befehl ist, der tatsächlich verwendet wird, um das Feld später in der Bibliographie auszudrucken. Das Patchen von .bbl
in have \path
anstelle von \verb
würde also nur beschädigen biblatex
, nicht aber die Dateipfade in der Bibliographie.
Wichtig für die Ausgabe ist das Feldformat für file
. In Ihrem Setup (mit dem reading
Stil) lautet die Definition
\DeclareFieldFormat{file}{\bibstring{file}\addcolon\space \url{#1}}
biblatex
verwendet also den \url
Befehl aus dem url
Paket (das es lädt).
Aber das ist nicht die ganze Geschichte. biblatex
hat seine eigene Modifikation der url
Einstellungen, um eine feinere Kontrolle über URL-Unterbrechungen in der Bibliographie zu ermöglichen. Insbesondere \UrlBreaks
wird für alle von gedruckten URLs neu definiert biblatex
. Ihre Neudefinition von \UrlBreaks
wird also überschrieben.
Sie können ein ähnliches Ergebnis wie bei Ihrer Neudefinition mit biblatex
den integrierten Funktionen von erzielen, indem Sie biburlucpenalty
und biburllcpenalty
auf Werte ungleich Null setzen. Siehe auchZeilenumbrüche bei langen URLs in der Bibliographie von Biblatex?. Sicherheitshalber möchten Sie vielleicht auch einen Blick auf die Einstellung werfen biburlnumpenalty
.
\documentclass{article}
\usepackage[style=reading, backend=biber]{biblatex}
\setcounter{biburlucpenalty}{9000}
\setcounter{biburllcpenalty}{9000}
%\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@inproceedings{XXXXXX,
author = {PQR},
booktitle = {BBC},
keywords = {LLM},
title = {ARP},
year = {2010},
file = {/Users/joe/We_hold_these_truths_to_be_self-evident_that_all_men_are_created_equal_that_they_are_endowed_by_their_Creator_with_certain_unalienable_Rights_that_among_these_are_Life_Liberty_and_the_pursuit_of_Happiness/dec.txt},
}
@inproceedings{YYYYYYYY,
author = {PQR},
booktitle = {BBC},
keywords = {LLM},
title = {ARP},
year = {2010},
file = {/Users/joe/Weholdthesetruthstobeself-evidentthatallmenarecreatedequalthattheyareendowedbytheirCreatorwithcertainunalienableRightsthatamongtheseareLifeLibertyandthepursuitofHappiness/dec.txt},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
biblatex
Wenn Sie die integrierten Funktionen von nicht verwenden möchten und Ihre benutzerdefinierte Neudefinition der url
Einstellungen von in übernehmen möchten biblatex
, ist ein wenig zusätzliche Arbeit erforderlich.
Die billigste Lösung, die ich gefunden habe, war
\newcommand*{\mkjcurlbreaks}{%
\expandafter\def\expandafter\UrlBreaks\expandafter{\UrlBreaks% save the current one
\do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j%
\do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t%
\do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D%
\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N%
\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X%
\do\Y\do\Z}}
\mkjcurlbreaks
\DeclareFieldFormat{file}{\bibstring{file}\addcolon\space\mkjcurlbreaks\url{#1}}
Ein alternativer Ansatz könntedie Definition von biblatex
's\biburlsetup
direkt.