Teniendo en cuenta que \path
se puede hacer para ajustar texto arbitrario segúnForzar saltos de línea en \url, me gustaría utilizar \path
en lugar de \verb
inside de biblatex para los campos "textualmente".
Esto significaría anular ambos \verb
y \endverb
; consulte, por ejemplo, estas líneas en el .bbl
archivo generado a partir del MWE a continuación.
\verb{file}
\verb /Users/joe/Weholdthesetruthstobeself-evidentthatallmenarecreatedequalthattheyareendowedbytheirCreatorwithcertainunalienableRightsthatamongtheseareLifeLibertyandthepursuitofHappiness/dec.txt
\endverb
Estoy confundido acerca de cómo funcionaría eso sintácticamente.
La imagen aquí muestra el ajuste de línea deseado en "Ruta"; el (buen) comportamiento de un nombre de archivo con muchos guiones bajos; y el comportamiento (no muy agradable) del nombre de archivo sin guiones bajos.
Código fuente de lo anterior:
% 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}
Respuesta1
En primer lugar, la salida del .bbl
archivo es puramente para uso interno biblatex
y el uso del comando \verb
no significa que este sea el comando que realmente se usa para imprimir el campo más adelante en la bibliografía. Por lo tanto, parchear .bbl
to have \path
en lugar de \verb
simplemente rompería biblatex
, pero no las rutas de los archivos en la bibliografía.
Lo importante para la salida es el formato del campo file
. En su configuración (con el reading
estilo) la definición es
\DeclareFieldFormat{file}{\bibstring{file}\addcolon\space \url{#1}}
entonces biblatex
usa el \url
comando del url
paquete (que carga).
Pero esta no es toda la historia. biblatex
tiene su propia modificación de url
la configuración de para permitir un control más detallado sobre la división de URL en la bibliografía. En particular, \UrlBreaks
se redefine para todas las URL impresas por biblatex
. Entonces su redefinición de \UrlBreaks
se sobrescribe.
Puede obtener un resultado similar a su redefinición con biblatex
las funciones integradas de configurando biburlucpenalty
y biburllcpenalty
en valores distintos de cero. Ver también¿Saltos de línea de URL largas en la bibliografía biblatex?. Por si acaso, es posible que también quieras considerar la configuración 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}
Si no desea utilizar biblatex
las funciones integradas de y desea llevar su redefinición personalizada de la url
configuración de biblatex
, entonces se necesita un poco de trabajo adicional.
La solución más barata que encontré fue
\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}}
Un enfoque alternativo podría modificarla definición de biblatex
's\biburlsetup
directamente.