平均能量损失

平均能量损失

我如何使用修改后的版本biblatex-chicago(以符合期刊的风格伊斯兰国)由@moewe 提供这里在命令的页面字段中使用某些个人宏时\cite

尤其是该杂志伊斯兰国要求在页码范围前加上“p./pp.” 。引用页码范围时,我经常添加行号、段落号和注释引用。例如,如果我引用第 42 页的第 3 条注释,我会写\cite[42 \note 3]{...},并输出以下所需输出(用于简短的书籍引用):

作者,标题,第 42 页注 3

为了使事情变得更加复杂,我有时会参考打印尾注的页面(以节省读者的时间),例如\cite[42 \note 3 printed on \pa 250]{...}

作者,标题,第 42 页注 3 印于第 250 页

我在页面字段中经常使用的个人宏有:

\newcommand{\Line}[1]{\mbox{\textsubscript{#1}}}
\newcommand{\Lines}[2]{\mbox{\textsubscript{#1-#2}}}
\newcommand{\Linebot}[1]{\mbox{\textsubscript{⌂#1}}} % line number, counting from bottom
\newcommand{\Linesbot}[2]{\mbox{\textsubscript{⌂#1-⌂#2}}} % line range both counting from bottom
\newcommand{\Linestopbot}[2]{\mbox{\textsubscript{#1-⌂#2}}} % line range first from top, second from bottom
\newcommand\note{n.\unspace~}   % note
\newcommand\notes{nn.\@ }       % notes
\newcommand\para{¶}         % paragraph
\newcommand\paras{¶}%{¶¶}   % paragraphs
\newcommand\Para{¶}         % Paragraph
\newcommand\Paras{¶}%{¶¶}   % Paragraphs
\newcommand\pa{p.\unspace~}     % page
\newcommand\pp{pp.\@\xspace}    % pages

(另请参阅下面的 MWE。)

我期望的输出是,即使使用了这些宏,也要保留前缀“p./pp。”,但当我的页面引用实际上不包含页码时则不然,例如,当我引用没有页码的注释时\cite[\note 3]{...}

作者,标题,注 3

[\S 4](或者当我单独引用某个章节或段落时也类似[\para 7])。

这可能吗?我试过摆弄\PagesCheckSetup\NumCheckSetup\DeclareNumChars,但显然我不明白它们到底是如何工作的。

平均能量损失

\documentclass{article}

\usepackage{xspace}

\usepackage[notes]{biblatex-chicago}

% My macros
\xspaceaddexceptions{\ccc \Line \Lines \Linebot \Linesbot \Linestopbot}
\newcommand{\Line}[1]{\mbox{\textsubscript{#1}}}
\newcommand{\Lines}[2]{\mbox{\textsubscript{#1-#2}}}
\newcommand{\Linebot}[1]{\mbox{\textsubscript{⌂#1}}} % line number, counting from bottom
\newcommand{\Linesbot}[2]{\mbox{\textsubscript{⌂#1-⌂#2}}} % line range both counting from bottom
\newcommand{\Linestopbot}[2]{\mbox{\textsubscript{#1-⌂#2}}} % line range first from top, second from bottom
\newcommand\note{n.\unspace~}   % note
\newcommand\notes{nn.\@ }       % notes
\newcommand\para{¶}         % paragraph
\newcommand\paras{¶}%{¶¶}   % paragraphs
\newcommand\Para{¶}         % Paragraph
\newcommand\Paras{¶}%{¶¶}   % Paragraphs
\newcommand\pa{p.\unspace~}     % page
\newcommand\pp{pp.\@\xspace}    % pages

% moewe's earlier solution
\DeclareFieldFormat{jourvol}{\mkbibitalic{#1}}
\DeclareFieldFormat{journum}{\mkbibparens{#1}}%

\renewbibmacro*{cjournal+issue+year+pages}{%
  \ifentrytype{periodical}%
  {\usebibmacro{cperiodical+ser+vol+num}}%
  {\usebibmacro{cjournal+ser+vol+num}}}

\renewbibmacro*{cjournal+ser+vol+num}{%
  \usebibmacro{journal+sub}%
  \setunit*{\addspace}%
  \printlist[periodplace]{location}%
  \setunit*{\addspace}%
  \iffieldundef{series}%
    {}%
    {\newcunit%
      \printfield[jourser]{series}%
      \newcunit}%\setunit*{\addspace}?
  \newcunit
  \iffieldundef{issue}%
    {\usebibmacro{number+or+month}}%
    {\printfield{issue}%
     \setunit{\addspace}%
     \usebibmacro{cmsyear}}%
  \newcunit
  \printfield[jourvol]{volume}%
  \printfield[journum]{number}%
  \setunit{\postvolpunct}}% Moved eid for 17th ed.

\DefineBibliographyStrings{english}{
  thiscite = {on},
}

\AtEveryCitekey{\savefield{postnote}{\cbxsavepostnote}\clearfield{postnote}}

\DeclareFieldFormat{pages}{%
  \ifboolexpr{%
    togl {cms@comprange}%
    and
    test {\ifpages{#1}}%
  }%
  {\mkpageprefix[bookpagination][\mkcomprange]{#1}}%
  {\mkpageprefix[bookpagination][\mknormrange]{#1}}}
\DeclareFieldFormat[article,periodical]{pages}{%
  \ifboolexpr{%
    togl {cms@comprange}%
    and
    test {\ifpages{#1}}%
  }%
  {\mkcomprange{#1}}%
  {\mknormrange{#1}}}

\DeclareFieldFormat{postnote}{%
  \ifboolexpr{%
    togl {cms@comprange}%
    and
    test {\ifpages{#1}}%
  }%
  {\mkpageprefix[pagination][\mkcomprange]{#1}}%
  {\mkpageprefix[pagination][\mknormrange]{#1}}}

\renewbibmacro*{postnote}{%
  \restorefield{postnote}{\cbxsavepostnote}%
  \iffieldundef{postnote}
    {}
    {\setunit{\addcomma\space}%
     \iftoggle{cms@fullnote}
       {\iffieldundef{pages}
          {}
          {\iffieldpages{postnote}
             {\bibstring{thiscite}%
              \setunit{\addspace}}
             {}}}
       {}%
     \printfield{postnote}}}
     
% MY ADDITION IN AN ATTEMPT TO KEEP PAGE REFS
%\PagesCheckSetup{\def\Line{}\def\Lines{}\def\pa{}\def\pp{}}
%\NumCheckSetup{\def\Line{}\def\Lines{}\def\pa{}\def\pp{}}
%\DeclareNumChars{}     


\addbibresource{biblatex-examples.bib}

\begin{document}
\cite{westfahl:space}.
\mancite

\cite[32]{westfahl:space}.
\mancite

\cite[32\Lines{3}{9}]{westfahl:space}.
\mancite

\cite[32 \note 3]{westfahl:space}.

\end{document}

电流输出:

在此处输入图片描述

期望输出的最后三行是:

Westfahl,《真正的边疆》,第 32 页。Westfahl
,《真正的边疆》,第 32 页_{3-9}。Westfahl
,《真正的边疆》,第 32 页注 3。

其中_{...}代表下标。

答案1

我认为我同意 Ulrike 在这个问题下的评论:这可能有点过头了。

您可以通过在\NumCheckSetup

\NumCheckSetup{%
  \def\Line#1{}%
  \def\Lines#1#2{}%
  \def\pa{}%
  \def\pp{}%
  \def\Linebot#1{}%
  \def\Linesbot#1#2{}%
  \def\Linestopbot#1#2{}%
}

接受参数的命令应该将其参数用于测试。我们必须使用,因为使用您的后记格式,该字段将通过几个不同的、、测试\NumCheckSetup进行传输,并且所有这些测试都需要结果为真。\ifpages\ifnumerals\ifnumeral

但只有当您隐藏的命令总是与正常页码一起出现时,此方法才有效。隐藏的命令将被忽略,然后正常页码将接管。

biblatex目前的页面格式化、数字检查等实现无法区分大小写

\cite[32 \note 3]{westfahl:space}

\cite[\note 3]{westfahl:space}

要么两者都得到“p.”,因为\note实际上被忽略了,要么两者都得不到“p.”,因为这\note使得这成为一个非数字的后记。

我认为,只要您处理的是更复杂的后记,而不仅仅是单页或简单的页面范围,您就必须自己接管整个格式化。biblatex只能为您做这么多。为该工作定义一组一致且可用的命令并使用它们。

相关内容