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

그것이 구문적으로 어떻게 작동하는지 혼란스러워요.

여기 이미지는 "Path"에서 원하는 줄 바꿈을 보여줍니다. 밑줄이 많은 파일 이름에 대한 (좋은) 동작; 밑줄이 없는 파일 이름에 대한 (별로 좋지는 않은) 동작입니다.

여기에 이미지 설명을 입력하세요

위의 소스 코드:

% 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나중에 참고문헌에서 해당 필드를 인쇄하는 데 실제로 사용되는 명령이라는 의미는 아닙니다. 따라서 .bblto have \path대신 에 를 패치하면 \verbbreak 만 발생 biblatex하지만 참고문헌의 파일 경로는 그렇지 않습니다.

출력에서 중요한 것은 의 필드 형식입니다 file. 설정(스타일 포함 reading)에서 정의는 다음과 같습니다.

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

따라서 (로드되는) 패키지 의 명령을 biblatex사용합니다 .\urlurl

그러나 이것이 전부는 아닙니다. 에는 참고문헌의 URL 중단을 보다 세밀하게 제어할 수 있도록 의 설정이 biblatex자체적으로 수정되었습니다 . url특히 는 \UrlBreaks에 의해 인쇄된 모든 URL에 대해 재정의됩니다 biblatex. 따라서 재정의가 \UrlBreaks덮어 쓰여집니다.

및 을 0이 아닌 값으로 설정 biblatex하여 의 내장 기능을 사용하여 재정의한 것과 유사한 결과를 얻을 수 있습니다 . 또한보십시오biburlucpenaltybiburllcpenaltyBiblatex 참고문헌에서 긴 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곧장.

관련 정보