verwenden Sie \path statt \verb in Biblatex

verwenden Sie \path statt \verb in Biblatex

Beachten Sie, dass \pathbeliebiger Text umbrochen werden kann gemäßErzwingen von Zeilenumbrüchen in \url\path, ich würde gerne anstelle von \verbinnerhalb von Biblatex für die „wörtlichen“ Felder verwenden .

Dies würde bedeuten, dass sowohl \verbals auch überschrieben werden \endverb, siehe beispielsweise diese Zeilen in der .bblunten 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.

Bildbeschreibung hier eingeben

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 .bblist die Ausgabe in der Datei nur für den internen Gebrauch bestimmt biblatexund die Verwendung des Befehls \verbbedeutet nicht, dass dies der Befehl ist, der tatsächlich verwendet wird, um das Feld später in der Bibliographie auszudrucken. Das Patchen von .bblin have \pathanstelle von \verbwü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 readingStil) lautet die Definition

\DeclareFieldFormat{file}{\bibstring{file}\addcolon\space \url{#1}}

biblatexverwendet also den \urlBefehl aus dem urlPaket (das es lädt).

Aber das ist nicht die ganze Geschichte. biblatexhat seine eigene Modifikation der urlEinstellungen, um eine feinere Kontrolle über URL-Unterbrechungen in der Bibliographie zu ermöglichen. Insbesondere \UrlBreakswird für alle von gedruckten URLs neu definiert biblatex. Ihre Neudefinition von \UrlBreakswird also überschrieben.

Sie können ein ähnliches Ergebnis wie bei Ihrer Neudefinition mit biblatexden integrierten Funktionen von erzielen, indem Sie biburlucpenaltyund biburllcpenaltyauf 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}

Dateipfade werden am Zeilenende unterbrochen.


biblatexWenn Sie die integrierten Funktionen von nicht verwenden möchten und Ihre benutzerdefinierte Neudefinition der urlEinstellungen 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\biburlsetupdirekt.

verwandte Informationen