use \path em vez de \verb no biblatex

use \path em vez de \verb no biblatex

Observando que \pathpode ser feito para quebrar texto arbitrário conformeForçando quebras de linha em \url, eu gostaria de usar \pathem vez de \verbdentro do biblatex para os campos "verbatim".

Isso significaria substituir ambos \verbe \endverb, veja por exemplo essas linhas no .bblarquivo gerado a partir do MWE abaixo.

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

Estou confuso sobre como isso funcionaria sintaticamente.

A imagem aqui mostra a quebra de linha desejada em "Caminho"; o comportamento (legal) para um nome de arquivo com muitos sublinhados; e o comportamento (não muito agradável) do nome do arquivo sem sublinhados.

insira a descrição da imagem aqui

Código fonte do acima:

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

Responder1

Em primeiro lugar, a saída no .bblarquivo é puramente para uso interno biblatexe o uso do comando \verbnão significa que este seja o comando realmente usado para imprimir o campo posteriormente na bibliografia. Portanto, corrigir to .bblhave \pathem vez de \verbapenas quebraria biblatex, mas não os caminhos dos arquivos na bibliografia.

O importante para a saída é o formato do campo para file. Na sua configuração (com o readingestilo) a definição é

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

então biblatexusa o \urlcomando do urlpacote (que ele carrega).

Mas esta não é toda a história. biblatextem sua própria modificação nas urlconfigurações do para permitir um controle mais refinado sobre a quebra de URL na bibliografia. Em particular, \UrlBreaksé redefinido para todos os URLs impressos por biblatex. Portanto, sua redefinição de \UrlBreaksé substituída.

Você pode obter um resultado semelhante à sua redefinição com biblatexos recursos integrados de definindo biburlucpenaltye biburllcpenaltycom valores diferentes de zero. Veja tambémQuebras de linha de URLs longos na bibliografia do biblatex?. Para garantir, você também pode querer dar uma olhada na configuração 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}

Os caminhos dos arquivos são quebrados nos finais das linhas.


Se você não quiser usar biblatexos recursos integrados do e quiser levar sua redefinição personalizada das urlconfigurações do biblatex, será necessário um pouco de trabalho extra.

A solução mais barata que encontrei foi

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

Uma abordagem alternativa poderia modificara definição de biblatex's\biburlsetupdiretamente.

informação relacionada