我使用 amsrefs 套件來格式化參考書目。問題是有時線條排版得很糟糕。該問題通常是由 doi 字段引起的。請參考下圖。
我會接受手動換行,即使右側的條目不參差不齊。頁面欄位中簡單的 \newline 會在行中留下一個逗號,看起來很糟糕(見下圖)
知道如何透過正確的標點符號處理手動換行嗎? MWE來了
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsrefs}
\renewcommand{\PrintDOI}[1]{DOI~#1}
\begin{document}
\begin{bibdiv}
\begin{biblist}
\bib{14}{article}{
author={Kim, S.G.},
title={The unit ball},
journal={Kyungpook Math. J.},
volume={53},
date={2013},
pages={295--306},
doi={10.5666/KMJ.2013.53.2.295},
}
\end{biblist}
\end{bibdiv}
\end{document}
答案1
這個極度骯髒的駭客怎麼樣?
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsrefs}
\renewcommand{\PrintDOI}[1]{DOI~#1}
\begin{document}
\DefineSimpleKey{bib}{doinewline}
\BibSpec{article}{%
+{} {\PrintAuthors} {author}
+{,} { \textit} {title}
+{.} { } {part}
+{:} { \textit} {subtitle}
+{,} { \PrintContributions} {contribution}
+{.} { \PrintPartials} {partial}
+{,} { } {journal}
+{} { \textbf} {volume}
+{} { \PrintDatePV} {date}
+{,} { \issuetext} {number}
+{,} { \eprintpages} {pages}
+{,} { } {status}
+{} {, \newline\PrintDOI} {doinewline}
+{,} { \PrintDOI} {doi}
+{,} { available at \eprint} {eprint}
+{} { \parenthesize} {language}
+{} { \PrintTranslation} {translation}
+{;} { \PrintReprint} {reprint}
+{.} { } {note}
+{.} {} {transition}
+{} {\SentenceSpace \PrintReviews} {review}
}
\begin{bibdiv}
\begin{biblist}
\bib{14}{article}{
author={Kim, S.G.},
title={The unit ball},
journal={Kyungpook Math. J.},
volume={53},
date={2013},
pages={295--306},
doinewline={10.5666/KMJ.2013.53.2.295},
}
\end{biblist}
\end{bibdiv}
\end{document}
答案2
使用\linebreak
指令可以透過正確放置標點符號來換行。請參閱第 8.5 節包文件更多細節:
第 8.5 節 參考書目中的換行符
假設您需要向 LaTeX 建議在特定位置換行。建議在欄位中間換行並不困難:只需編輯最終
.bbl
檔案並插入\linebreak
命令:subtitle={Toward a transformative hermeneutics\linebreak[3] of quantum gravity},
但是如果你需要強制換行怎麼辦之間兩個字段?乍看之下你可能會擔心
subtitle={...hermeneutics of quantum gravity\linebreak[3]},
amsrefs
將導致通常在標題後插入的 逗號之前換行: 沒有恐懼;amsrefs
將檢測到這一點並根據需要自動將逗號移動到換行符前面: