BibLaTeX: @thesis girişinde "okul" dan sonra virgülü nasıl kaldırabilirim?
Bir @thesis bibliyografya girişinde "okul" alanı ile tarih (yıl) arasındaki virgülü kaldırmak istiyorum:
İşte minimum örnek kodum:
\documentclass{minimal}
\usepackage{ngerman}
\usepackage[backend = biber, style = numeric]{biblatex}
%%%%%%%% https://tex.stackexchange.com/a/492917
\newtoggle{bbx:datemissing}
\renewbibmacro*{date}{\toggletrue{bbx:datemissing}%}
\renewbibmacro{volume+number+eid}{%
\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{eid}}
\renewbibmacro*{issue+date}{%
\toggletrue{bbx:datemissing}%
\iffieldundef{issue}{}{
\printtext[parens]{%
\printfield{issue}}}%
\newunit}
\newbibmacro*{date:print}{%
\togglefalse{bbx:datemissing}%
\printdate}
\renewbibmacro*{chapter+pages}{%
\printfield{chapter}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit
\usebibmacro{date:print}%
\newunit}
\renewbibmacro*{note+pages}{%
\printfield{note}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit
\usebibmacro{date:print}%
\newunit}
%%%%%%%%
%%% This is what I came up with
\renewbibmacro{institution+location+date}{%
\printlist{location}%
\iflistundef{institution}{%
\setunit*{\space}%
}{%
\setunit*{\addcolon\space}%
}%
\printlist{institution}%
\setunit*{\space}%
\usebibmacro{date}%
\newunit%
}
\usepackage{filecontents}
\begin{filecontents*}{lit.bib}
@thesis {mythesis,
author = {Me, I.},
school = {University},
title = {Sometitle},
type = {Phd thesis},
year = {123}
}
\end{filecontents*}
\addbibresource{lit.bib}
\begin{document}
\printbibliography
\end{document}
\nocite{*}
Zaten denedim \renewbibmacro{institution+location+date}{...}
ama bu işe yaramadı. BibLaTeX'te oldukça yeniyim.
Benim düşüncem, numeric
stilin giriş türlerini kullandığı standard
, makroyu kopyaladığım ve tüm virgülleri çıkardığım yerdi. Ancak bu açıkça işe yaramadı. Bu virgülü nasıl kaldırabilirim?
Yanıtlar
Yeniden tanımlanmış makronuzun \nopunct
hemen önüne ekleyebilirsiniz . Örneğinizin belge sınıfını olarak değiştirdim . Adına rağmen, belge sınıfı gerekir değil aslında çok az olduğu için MWEs için kullanılabilir. Ayrıca artık LaTeX çekirdeğinin bir parçası olan paketi de kaldırdım .\newunit
institution+location+date
article
minimal
filecontents
\documentclass{article}
\usepackage{ngerman}
\usepackage[backend = biber, style = numeric]{biblatex}
\newtoggle{bbx:datemissing}
\renewbibmacro*{date}{\toggletrue{bbx:datemissing}}
\renewbibmacro{volume+number+eid}{%
\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{eid}}
\renewbibmacro*{issue+date}{%
\toggletrue{bbx:datemissing}%
\iffieldundef{issue}{}{
\printtext[parens]{%
\printfield{issue}}}%
\newunit}
\newbibmacro*{date:print}{%
\togglefalse{bbx:datemissing}%
\printdate}
\renewbibmacro*{chapter+pages}{%
\printfield{chapter}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit
\usebibmacro{date:print}%
\newunit}
\renewbibmacro*{note+pages}{%
\printfield{note}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit
\usebibmacro{date:print}%
\newunit}
%%% This is what I came up with
\renewbibmacro{institution+location+date}{%
\printlist{location}%
\iflistundef{institution}{%
\setunit*{\space}%
}{%
\setunit*{\space}%
}%
\printlist{institution}%
\setunit*{\space}%
\usebibmacro{date}%
\nopunct\newunit%
}
\begin{filecontents*}[overwrite]{\jobname.bib}
@thesis {mythesis,
author = {Me, I.},
school = {University of Somewhere},
title = {Sometitle},
type = {Phd thesis},
year = {1980}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
Kodunu kullandığınız Biblatex'te sayfaların ve yılların sırasını değiştir sorusunun yanıtı , date
baskıyı daha sonra taşımak için oldukça kör aletler kullanır pages
. Bu, her durumda tam olarak istediğiniz veya ihtiyaç duyduğunuz şey olmayabilir.
Burada, tarihi yalnızca pages
(veya a chapter
) varsa hareket ettiren ve bazı durumlarda sizin için biraz daha iyi çalışan bir çıktıyla sonuçlanabilen biraz daha karmaşık bir kurulum verilmiştir .
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[backend=biber, style=numeric]{biblatex}
\newtoggle{bbx:datesuppressed}
\renewbibmacro*{date}{%
\ifboolexpr{
test {\iffieldundef{pages}}
and test {\iffieldundef{chapter}}}
{\printdate}
{\toggletrue{bbx:datesuppressed}}}
\renewbibmacro{volume+number+eid}{%
\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{eid}}
\renewbibmacro*{issue+date}{%
\toggletrue{bbx:datesuppressed}%
\iffieldundef{issue}
{}
{\printtext[parens]{%
\printfield{issue}}}%
\newunit}
\newbibmacro*{date:print}{%
\iftoggle{bbx:datesuppressed}
{\togglefalse{bbx:datesuppressed}%
\printdate}
{}}
\renewbibmacro*{chapter+pages}{%
\printfield{chapter}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit
\usebibmacro{date:print}%
\newunit}
\renewbibmacro*{note+pages}{%
\printfield{note}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\newunit
\usebibmacro{date:print}%
\newunit}
\renewbibmacro{institution+location+date}{%
\printlist{location}%
\iflistundef{institution}
{\setunit*{\space}}
{\setunit*{\addcolon\space}}%
\printlist{institution}%
\setunit*{\space}%
\usebibmacro{date}%
\newunit
}
\begin{filecontents*}{\jobname.bib}
@phdthesis{mythesis,
author = {Me, I.},
school = {University},
title = {Sometitle},
year = {123},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\nocite{mythesis,sigfridsson,westfahl:space}
\printbibliography
\end{document}
Alan'ın cevabının altındaki yorumlarda açıkladığı gibi, biblatex
noktalama işlemleri eşzamansızdır: Noktalama bir arabellekte saklanır ve yalnızca ihtiyaç duyulduğunda yazdırılır (yani bir sonraki \print...
komut aslında bir şey yazdırdığında). Sorudaki kodda, \usebibmacro{date}
giriş institution+location+date
aslında tarihi yazdırmadığından, \setunit
sonuçta tarihten önceki noktalama işaretlerini kontrol etmez. Sadece tarih ile basılmıştır date:print
in chapter+pages
diğer bu noktada, \setunit
komutlar tamponu içine farklı noktalama eklemiş olur.
\nopunct
yeni içerik / metin bir \print...
komutla yazdırılana kadar herhangi bir noktalama işareti yazdırmamak için kalıcı bir işaretçi ayarlar . Bu durumda istenmeyen dönemin bastırılmasına yardımcı olur. Yana \nopunct
kullanılan iç olabilir ve noktalama izleyici dışında o çimdik noktalama için bir araçtır, ama genellikle bunu önlemek ve istenilen görülenin ötesine etkileri olabileceği için, kullanmadığınız çözümleri tercih deneyin.