Perintah kutipan baru menelan tanda baca
Saya menetapkan perintah cite baru untuk ditampilkan shorttitle
alih-alih author
- year
kombinasi. Masalahnya adalah ia menelan tanda baca yang mengikutinya.
Saya mencoba menggunakan \DeclareCitePunctuationPosition
, tetapi tidak berhasil.
Bagaimana cara memperbaikinya?
\documentclass{article}
\usepackage{biblatex-chicago}
\DeclareCiteCommand{\citeabbr}
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{\textit{\printfield{shorttitle}}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCitePunctuationPosition{\citeabbr}{r} % doesn't work
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Howlett1975,
title = {Dictionary of Medieval Latin from British Sources},
shorttitle = {DMLBS},
editor = {Howlett, D.R.},
date = {1975/2013},
publisher = {Oxford University Press},
location = {Oxford},
addendum = {DMLBS},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\usepackage{hyperref}
\begin{document}
\citeabbr[s.v.]{Howlett1975}; this cite command has swallowed my semicolon.
\end{document}

Jawaban
biblatex
memiliki sistem yang sangat canggih untuk menghindari tanda baca ganda atau benturan tanda baca yang tidak diinginkan.
Secara khusus biblatex
akan menekan tanda baca apa pun setelah titik akhir kalimat (tanda titik). Jadi '.;' menjadi hanya '.'. 'Masalahnya' adalah Anda tidak ingin menekan koma atau titik koma setelah titik yang menandakan singkatan, jadi 'sv;' baik-baik saja dan tidak perlu direduksi menjadi 'sv'. Sejak '.' pada dasarnya memiliki dua fungsi, Anda harus membantu biblatex
dan menjelaskan apa yang Anda maksud saat mengetik .
. Secara default biblatex
mengasumsikan a .
adalah titik. Jika Anda ingin memasukkan titik singkatan, Anda dapat mengucapkan \adddot
atau hanya .\isdot
.
Karenanya, berikut ini menampilkan 'sv;' baik baik saja.
\documentclass{article}
\usepackage{biblatex-chicago}
\DeclareCiteCommand{\citeabbr}
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{\printfield[emph]{shorttitle}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\begin{filecontents}{\jobname.bib}
@book{Howlett1975,
title = {Dictionary of Medieval Latin from British Sources},
shorttitle = {DMLBS},
editor = {Howlett, D.R.},
date = {1975/2013},
publisher = {Oxford University Press},
location = {Oxford},
addendum = {DMLBS},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\usepackage{hyperref}
\begin{document}
\citeabbr[s.v.\isdot]{Howlett1975}; this cite command has swallowed my semicolon.
\end{document}

Jika semua .
yang mengakhiri catatan postingan Anda adalah titik singkatan, Anda dapat mengotomatiskannya dengan mengubah postnote
format bidang (definisi aslinya dapat ditemukan di chicago-notes.cbx
)
\DeclareFieldFormat{postnote}{% Changed for page compression option
\ifboolexpr{%
togl {cms@comprange}%
and
test {\ifpages{#1}}%
}%
{\iffieldundef{pagination}%
{\mkcomprange{#1}}%
{\mkcomprange[{\mkpageprefix[pagination]}]{#1}}}%
{\iffieldundef{pagination}%
{#1}%
{\mkpageprefix[pagination]{#1}}%
\isdot}}%
Kemudian Anda dapat menghindari keharusan menulis \isdot
setiap kali Anda menggunakan s.v.
catatan pos. Tetapi tentu saja itu berarti bahwa a .
yang seharusnya menjadi periode akhir kalimat di akhir catatan pos tidak akan dikenali seperti itu.
Jika Anda s.v.
sangat sering menggunakan, Anda mungkin ingin menentukan perintah praktis untuk itu yang menghindari kebutuhan akan \isdot
.
\documentclass{article}
\usepackage{biblatex-chicago}
\DeclareCiteCommand{\citeabbr}
{\usebibmacro{cite:init}%
\usebibmacro{prenote}}
{\usebibmacro{citeindex}%
\printtext[bibhyperref]{\printfield[emph]{shorttitle}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\NewBibliographyString{sv}
\DefineBibliographyStrings{english}{
sv = {s\adddot v\adddot},
}
\newcommand*{\sv}{\bibstring{sv}}
\begin{filecontents}{\jobname.bib}
@book{Howlett1975,
title = {Dictionary of Medieval Latin from British Sources},
shorttitle = {DMLBS},
editor = {Howlett, D.R.},
date = {1975/2013},
publisher = {Oxford University Press},
location = {Oxford},
addendum = {DMLBS},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\usepackage{hyperref}
\begin{document}
\citeabbr[\sv]{Howlett1975}; this cite command has swallowed my semicolon.
\end{document}