Observando que \path
pode ser feito para quebrar texto arbitrário conformeForçando quebras de linha em \url, eu gostaria de usar \path
em vez de \verb
dentro do biblatex para os campos "verbatim".
Isso significaria substituir ambos \verb
e \endverb
, veja por exemplo essas linhas no .bbl
arquivo 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.
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 .bbl
arquivo é puramente para uso interno biblatex
e o uso do comando \verb
não significa que este seja o comando realmente usado para imprimir o campo posteriormente na bibliografia. Portanto, corrigir to .bbl
have \path
em vez de \verb
apenas 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 reading
estilo) a definição é
\DeclareFieldFormat{file}{\bibstring{file}\addcolon\space \url{#1}}
então biblatex
usa o \url
comando do url
pacote (que ele carrega).
Mas esta não é toda a história. biblatex
tem sua própria modificação nas url
configuraçõ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 biblatex
os recursos integrados de definindo biburlucpenalty
e biburllcpenalty
com 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}
Se você não quiser usar biblatex
os recursos integrados do e quiser levar sua redefinição personalizada das url
configuraçõ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\biburlsetup
diretamente.