biblatex では \verb の代わりに \path を使用する

biblatex では \verb の代わりに \path を使用する

\path任意のテキストを折り返すことができることに注意してください\url で強制的に改行する、私は「verbatim」フィールドの代わりに、biblatex 内部を\path使用したいと思います。\verb

\verbこれは、と の両方をオーバーライドすることを意味します\endverb。たとえば、.bbl以下の MWE から生成されたファイル内のこれらの行を参照してください。

  \verb{file}
  \verb /Users/joe/Weholdthesetruthstobeself-evidentthatallmenarecreatedequalthattheyareendowedbytheirCreatorwithcertainunalienableRightsthatamongtheseareLifeLibertyandthepursuitofHappiness/dec.txt
  \endverb

それが構文的にどのように機能するかについて混乱しています。

この画像は、「パス」での望ましい行の折り返し、多数のアンダースコアを含むファイル名の (適切な) 動作、およびアンダースコアのないファイル名の (あまり適切ではない) 動作を示しています。

ここに画像の説明を入力してください

上記のソースコード:

% 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}

答え1

まず、.bblファイル内の出力は の内部使用のみを目的としておりbiblatex、 コマンドの使用は、\verbこれが参考文献の後のフィールドを印刷するために実際に使用されるコマンドであることを意味するものではありません。したがって、.bblを の\path代わりに にパッチすると、 が\verb壊れるだけbiblatexで、参考文献内のファイル パスは壊れません。

出力にとって重要なのは、フィールドのフォーマットですfile。あなたの設定(スタイル付きreading)では、定義は次のようになります。

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

そのため、パッケージ(ロードされる)からのコマンドbiblatexを使用します。\urlurl

しかし、これですべてではありません。 は、の設定biblatexを独自に変更してurl、参考文献内の URL 分割をより細かく制御できるようにします。特に、\UrlBreaksによって印刷されるすべての URL に対して が再定義されますbiblatex。そのため、 の再定義は\UrlBreaks上書きされます。

biblatexの組み込み機能を使用してbiburlucpenalty、 とbiburllcpenaltyをゼロ以外の値に設定することで、再定義と同様の結果を得ることができます。Biblatex 参考文献内の長い URL の改行は行われますか?念のため、 の設定も確認しておくとよいでしょう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の組み込み機能を使用せず、urlの設定のカスタム再定義を に持ち込みたい場合はbiblatex、少し余分な作業が必要になります。

私が見つけた最も安価な解決策は

\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}}

代替アプローチは、biblatexの定義\biburlsetup直接。

関連情報