biblatex中标注压缩的处理代码解析

%首先讲一下分析的方法,tex中查看宏的定义方便,但要了解宏内部的逻辑并不容易,没有非常方便的调试手段,因此要分析其内部的逻辑,需要手动的分析整个宏的运行过程,主要在纸面上进行,也可以让宏内部进行一些输出,方便查看。

如下代码中,首先利用重定义的cite:comp:comp,cite:comp:end进行了输出,查看了一下一般情况下labelprefix相关代码的作用,从结果看,一般情况下压缩不涉及到labelprefix的问题。
```
\renewbibmacro*{cite:comp:comp}{%
  \ifboolexpr{
    ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} )
    or
    test {\iffieldequals{labelprefix}{\cbx@lastprefix}}
  }
    {\printtext{lp:\printfield{labelprefix}num:\printfield{labelnumber}}%
    \ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}}
       {\savefield{entrykey}{\cbx@lastkey}%
        \savefield{labelnumber}{\cbx@lastnumber}%
        \addtocounter{cbx@tempcnta}{1}}
       {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1}
          {}
          {\usebibmacro{cite:dump}%
           \ifnumgreater{\value{cbx@tempcntb}}{-1}
             {\multicitedelim}
             {}%
           \printtext[bibhyperref]{%
             \printfield{labelprefix}%
             \printfield{labelnumber}}}}}
    {\usebibmacro{cite:comp:end}}%
  \setcounter{cbx@tempcntb}{\thefield{labelnumber}}%
  \savefield{labelprefix}{\cbx@lastprefix}}
  
\renewbibmacro*{cite:comp:end}{%
\printtext{end}%
  \usebibmacro{cite:dump}%
  \ifnumgreater{\value{cbx@tempcntb}}{-1}
    {\multicitedelim}
    {}%
  \printtext[bibhyperref]{%
    \printfield{labelprefix}%
    \printfield{labelnumber}}}
```

为了分析清楚压缩的机制,下面的分析,除了去掉了在shorthand环境中和set环境中的处理代码外,留下普通的cite的代码也仅需要分析与labelprefix无关的代码。

```
\ProvidesFile{numeric-comp.cbx}[\abx@cbxid]

\newcounter{cbx@tempcnta}
\newcounter{cbx@tempcntb}

\newbibmacro*{cite:init}{%初始化
  \global\boolfalse{cbx:parens}%
  \global\undef\cbx@lasthash
  \global\undef\cbx@lastnumber
  \global\undef\cbx@lastprefix
  \setcounter{cbx@tempcnta}{0}%
  \setcounter{cbx@tempcntb}{-1}}

\newbibmacro*{cite:comp}{%
  \addtocounter{cbx@tempcntb}{1}%
    {\usebibmacro{cite:comp:comp}}
}

\newbibmacro*{cite:comp:comp}{%
  \ifboolexpr{
    ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} )
    or
    test {\iffieldequals{labelprefix}{\cbx@lastprefix}}
  }%当labelprefix未定义且\cbx@lastprefix未定义 或labelprefix==\cbx@lastprefix时
    {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}}%当文献序号==cbx@tempcntb
       {\savefield{entrykey}{\cbx@lastkey}%保存当前entrykey到\cbx@lastkey
        \savefield{labelnumber}{\cbx@lastnumber}%保存当前labelnumber到\cbx@lastnumber
        \addtocounter{cbx@tempcnta}{1}}%cbx@tempcnta计数器加1
        %当文献序号\=cbx@tempcntb
       {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1}%如果labelnumber==cbx@tempcntb-1
          {}
          {\usebibmacro{cite:dump}%
           \ifnumgreater{\value{cbx@tempcntb}}{-1}
             {\multicitedelim}
             {}%
           \printtext[bibhyperref]{%
             \printfield{labelprefix}%
             \printfield{labelnumber}}}}}
    {\usebibmacro{cite:comp:end}}%
  \setcounter{cbx@tempcntb}{\thefield{labelnumber}}%
  \savefield{labelprefix}{\cbx@lastprefix}}

\newbibmacro*{cite:dump}{%目的就是输出最后一个文献编号的
  \ifnumgreater{\value{cbx@tempcnta}}{0}
    {\ifnumgreater{\value{cbx@tempcnta}}{1}
       {\bibrangedash}
       {\multicitedelim}%
     \bibhyperref[\cbx@lastkey]{%
       \ifdef\cbx@lastprefix
         {\printtext[labelprefix]{\cbx@lastprefix}}
         {}%
       \printtext[labelnumber]{\cbx@lastnumber}}}
    {}%
  \setcounter{cbx@tempcnta}{0}%
  \global\undef\cbx@lastprefix}

\DeclareCiteCommand{\cite}[\mkbibbrackets]
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite:comp}}
  {}
  {\usebibmacro{cite:dump}%
   \usebibmacro{postnote}}
   
```

首先看顺序编号标注的输出,从cite定义中可以看到(不考虑prenote,index和postnote),首先是cite:init宏,接着根据引用关键词循环处理cite:comp,最后是处理cite:dump。

我们来看一个实际的输出例子:比如有[3-5,7]这样的标注,其世纪输入是3,4,5,7。这些值来自于labelnumber域。

```
cite:init:      cbx@tempcntb=-2
                cbx@tempcnta=0
cite:comp:      cbx@tempcntb+1=-1
                labelnumber=3
                call cite:comp:comp
cite:comp:comp: call cite:dump
cite:dump:      cbx@tempcnta=0
                return cite:comp:comp 
cite:comp:comp: print labelnumber=3
                cbx@tempcntb=labelnumber=3
                go upper loop
                
cite:comp:      cbx@tempcntb+1=4
                labelnumber=4
                call cite:comp:comp
cite:comp:comp: save key
                save num=4
                cbx@tempcnta+1=1
                cbx@tempcntb=labelnumber=4
                go upper loop
                
cite:comp:      cbx@tempcntb+1=5
                labelnumber=5
                call cite:comp:comp
cite:comp:comp: save key
                save num=5
                cbx@tempcnta+1=2
                cbx@tempcntb=labelnumber=5
                go upper loop
                
cite:comp:      cbx@tempcntb+1=6
                labelnumber=7
                call cite:comp:comp
cite:comp:comp: call cite:dump
cite:dump:      print dash
                print savenum=5
                cbx@tempcnta=0
                return cite:comp:comp
cite:comp:comp: print multidelim
                print labelnumber=7
```

因此输出的结果就是3-5,7。

可以看到cbx@tempcntb帮助抛弃被压缩的编号,而cbx@tempcnta帮助输出最后的一个编号。

设置cite:dump中cbx@tempcnta的判别值1为0,是否可以将3个编号压缩变为2个编号压缩,下面来分析看看,对于3,4,5,7的输出来说,跟上面的输出是一样的,因此仅涉及到dump中的判断,即在labelnumber=7时,此时cbx@tempcnta=2,这个判断值等于1和0不影响。

看一下如果是3,4,7这样的输入情况会如何?

```
cite:init:      cbx@tempcntb=-2
                cbx@tempcnta=0
cite:comp:      cbx@tempcntb+1=-1
                labelnumber=3
                call cite:comp:comp
cite:comp:comp: call cite:dump
cite:dump:      cbx@tempcnta=0
                return cite:comp:comp 
cite:comp:comp: print labelnumber=3
                cbx@tempcntb=labelnumber=3
                go upper loop
                
cite:comp:      cbx@tempcntb+1=4
                labelnumber=4
                call cite:comp:comp
cite:comp:comp: save key
                save num=4
                cbx@tempcnta+1=1
                cbx@tempcntb=labelnumber=4
                go upper loop
                
cite:comp:      cbx@tempcntb+1=5
                labelnumber=7
                call cite:comp:comp
cite:comp:comp: call cite:dump
cite:dump:      print dash
                print savenum=4
                cbx@tempcnta=0
                return cite:comp:comp
cite:comp:comp: print multidelim
                print labelnumber=7
```

因此输出的结果就是3-4,7。

如果考虑判别值变大为2,抛弃的压缩值仍然会被抛下,且当cbx@tempcnta=2时,dump不输出,因此3,4,5,7这样的输入会产生输出为:3,5,7。这样可以反映出,目前的压缩机制是能输出连续编号的第一个和最后一个,当判别值过大时,压缩符号无法给出。也就是说,压缩量并不能灵活设置,而是固定好了的。默认是三个编号压缩情况下,当输入是3个连续的编号,那么输出第一个和最后一个加中间的dash形成压缩,而输入是两个连续编号时,仍然输出第一个和最后一个,加中间的multicitedelim构成不压缩的输出。

最后的测试文件见:
```
\documentclass[twoside]{article}
    \usepackage{ctex}
    \usepackage{xcolor}
    \usepackage{hyperref}
    \usepackage{lipsum}
    \usepackage[top=10pt,bottom=10pt,left=2cm,right=2cm]{geometry}
    \usepackage{amsmath}
    \usepackage{amsfonts}
%\usepackage[backend=biber,style=gb7714-2015,gbalign=gb7714-2015,
%gbnamefmt=none,gbfieldstd=false,gbtype=true,gbpunctin=true,gbpub=true]{biblatex}

\usepackage[backend=biber,style=numeric-comp,sorting=none]{biblatex}

\makeatletter
%\newbibmacro*{cite:reinit}{%
%\ifnumequal{\value{citecount}}{1}{}{\setcounter{cbx@tempcntb}{0}}
%}
%\AtEveryCitekey{\usebibmacro{cite:reinit}}

\renewbibmacro*{cite:comp:comp}{%
  \ifboolexpr{
    ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} )
    or
    test {\iffieldequals{labelprefix}{\cbx@lastprefix}}
  }
    {%\printtext{lp:\printfield{labelprefix}num:\printfield{labelnumber}}
    \ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}}
       {\savefield{entrykey}{\cbx@lastkey}%
        \savefield{labelnumber}{\cbx@lastnumber}%
        \addtocounter{cbx@tempcnta}{1}}
       {\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1}
          {}
          {\usebibmacro{cite:dump}%
           \ifnumgreater{\value{cbx@tempcntb}}{-1}
             {\multicitedelim}
             {}%
           \printtext[bibhyperref]{%
             \printfield{labelprefix}%
             \printfield{labelnumber}}}}}
    {\usebibmacro{cite:comp:end}}%
  \setcounter{cbx@tempcntb}{\thefield{labelnumber}}%
  \savefield{labelprefix}{\cbx@lastprefix}}
  
\renewbibmacro*{cite:comp:end}{%
\printtext{end}%
  \usebibmacro{cite:dump}%
  \ifnumgreater{\value{cbx@tempcntb}}{-1}
    {\multicitedelim}
    {}%
  \printtext[bibhyperref]{%
    \printfield{labelprefix}%
    \printfield{labelnumber}}}
    
\renewbibmacro*{cite:dump}{%
  \ifnumgreater{\value{cbx@tempcnta}}{0}
    {\ifnumgreater{\value{cbx@tempcnta}}{1}%修改1为0,将从3个编号开始压缩变为从2开始
       {\bibrangedash}
       {\multicitedelim}%
     \bibhyperref[\cbx@lastkey]{%
       \ifdef\cbx@lastprefix
         {\printtext[labelprefix]{\cbx@lastprefix}}
         {}%
       \printtext[labelnumber]{\cbx@lastnumber}}}
    {}%
  \setcounter{cbx@tempcnta}{0}%
  \global\undef\cbx@lastprefix}

\makeatother

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@database{databaseeg,
  AUTHOR = {Zhang, San},
  DATE = {2007},
  TITLE = {A data base},
  medium={CD}
}

@dataset{dataseteg,
  AUTHOR = {Zhang, Yi},
  DATE = {2008},
  TITLE = {A data set},
  medium={DK}
}

@archive{archiveeg,
  AUTHOR = {Zhang, Er},
  DATE = {2009},
  TITLE = {An archive for friend B},
  medium={MT}
}

@software{softwareeg,
  AUTHOR = {Zhang, Liu},
  DATE = {2009},
  TITLE = {A software for science computation},
  medium={CD}
}

@map{mapeg,
  AUTHOR = {Zhang, Si},
  DATE = {2010},
  TITLE = {An map},
}

@Misc{Misceg,
  AUTHOR = {Zhang, Wu},
  DATE = {2010},
  TITLE = {An unknow type reference},
}

@ARTICLE{aritileeg,
  AUTHOR = {Zhang, Qi},
  DATE = {2007},
  JOURNALTITLE = {An periodical},
  PAGES = {82--92},
  TITLE = {An article for test},
  VOLUME = {12},
  NUMBER ={2},
  mark={J},
  medium={OL},
}

@ARTICLE{方军雄2007所有制,
  AUTHOR = {方军雄},
  DATE = {2007},
  JOURNALTITLE = {经济研究},
  PAGES = {82--92},
  TITLE = {所有制, 制度环境与信贷资金配置},
  VOLUME = {12},
}

@ARTICLE{李晓西1994转轨过程中的结构性通货膨胀,
  AUTHOR = {李晓西},
  DATE = {1994},
  JOURNALTITLE = {经济研究},
  KEYWORDS = {李晓西1994转轨过程中的结构性通货膨胀},
  NUMBER = {10},
  PAGES = {28--32},
  TITLE = {转轨过程中的结构性通货膨胀},
}

@ARTICLE{刘凤良2017,
  AUTHOR = {刘凤良 and 章潇萌 and 于泽},
  DATE = {2017},
  JOURNALTITLE = {金融研究},
  KEYWORDS = {刘凤良2017},
  NUMBER = {2},
  PAGES = {54--69},
  TITLE = {高投资、结构失衡与价格指数二元分化},
}

@ARTICLE{楼继伟2016改革,
  AUTHOR = {楼继伟},
  DATE = {2016},
  JOURNALTITLE = {求是},
  KEYWORDS = {楼继伟2016改革},
  NUMBER = {1},
  PAGES = {24--26},
  TITLE = {中国经济最大潜力在于改革},
}

@ARTICLE{吕捷2015cpi,
  AUTHOR = {吕捷 and 王高望},
  DATE = {2015},
  JOURNALTITLE = {经济研究},
  KEYWORDS = {吕捷2015cpi},
  PAGES = {011},
  TITLE = {CPI 与 PPI “背离” 的结构性解释},
  VOLUME = {4},
}

@ARTICLE{罗德明2012要素市场扭曲,
  AUTHOR = {罗德明 and 李晔 and 史晋川},
  DATE = {2012},
  JOURNALTITLE = {经济研究},
  KEYWORDS = {罗德明2012要素市场扭曲},
  NUMBER = {3},
  PAGES = {4--14},
  TITLE = {要素市场扭曲、资源错置与生产率},
}

@ARTICLE{王国静2014金融冲击,
  AUTHOR = {王国静 and 田国强},
  DATE = {2014},
  JOURNALTITLE = {经济研究},
  KEYWORDS = {王国静2014金融冲击},
  NUMBER = {3},
  PAGES = {20--34},
  TITLE = {金融冲击和中国经济波动},
  VOLUME = {49},
}

@ARTICLE{王文甫2010价格粘性,
  AUTHOR = {王文甫},
  DATE = {2010},
  JOURNALTITLE = {管理世界},
  KEYWORDS = {王文甫2010价格粘性},
  NUMBER = {9},
  PAGES = {11--25},
  TITLE = {价格粘性, 流动性约束与中国财政政策的宏观效应——动态新凯恩斯主义视角},
}

@ARTICLE{徐伟康2010对,
  AUTHOR = {徐伟康},
  DATE = {2010},
  JOURNALTITLE = {经济研究},
  KEYWORDS = {徐伟康2010对},
  NUMBER = {5},
  PAGES = {139--148},
  TITLE = {对《 消费者价格指数与生产者价格指数: 谁带动谁?》 一文的质疑},
}

@ARTICLE{杨光2015经济波动,
  AUTHOR = {杨光 and 孙浦阳 and 龚刚},
  DATE = {2015},
  JOURNALTITLE = {经济研究},
  KEYWORDS = {杨光2015经济波动},
  NUMBER = {2},
  PAGES = {47--60},
  TITLE = {经济波动, 成本约束与资源配置},
  VOLUME = {50},
}

@ARTICLE{杨汝岱2015中国制造,
  AUTHOR = {杨汝岱},
  DATE = {2015},
  JOURNALTITLE = {经济研究},
  KEYWORDS = {杨汝岱2015中国制造},
  PAGES = {61--74},
  TITLE = {中国制造业企业全要素生产率研究},
  VOLUME = {2},
}

@ARTICLE{张成思2010长期均衡,
  AUTHOR = {张成思},
  DATE = {2010},
  JOURNALTITLE = {经济研究},
  KEYWORDS = {张成思2010长期均衡},
  PAGES = {42--52},
  TITLE = {长期均衡, 价格倒逼与货币驱动},
  VOLUME = {6},
}

@INCOLLECTION{adam2011house,
  AUTHOR = {Adam, Klaus and Kuang, Pei and Marcet, Albert},
  PUBLISHER = {University of Chicago Press},
  BOOKTITLE = {NBER Macroeconomics Annual 2011, Volume 26},
  DATE = {2011},
  KEYWORDS = {adam2011house},
  PAGES = {77--122},
  TITLE = {House price booms and the current account},
}

@ARTICLE{bernanke1989agency,
  AUTHOR = {Bernanke, Ben and Gertler, Mark},
  PUBLISHER = {JSTOR},
  DATE = {1989},
  JOURNALTITLE = {The American Economic Review},
  KEYWORDS = {bernanke1989agency},
  PAGES = {14--31},
  TITLE = {Agency costs, net worth, and business fluctuations},
}

@REPORT{calvo2006phoenix,
  AUTHOR = {Calvo, Guillermo A and Izquierdo, Alejandro and Talvi, Ernesto},
  INSTITUTION = {National Bureau of Economic Research},
  DATE = {2006},
  KEYWORDS = {calvo2006phoenix},
  TITLE = {Phoenix miracles in emerging markets: recovering without credit from systemic financial crises},
}

@ARTICLE{davis2005housing,
  AUTHOR = {Davis, Morris A and Heathcote, Jonathan},
  PUBLISHER = {Wiley Online Library},
  DATE = {2005},
  JOURNALTITLE = {International Economic Review},
  KEYWORDS = {davis2005housing},
  NUMBER = {3},
  PAGES = {751--784},
  TITLE = {Housing and the business cycle},
  VOLUME = {46},
}

@ARTICLE{enders2009international,
  AUTHOR = {Enders, Zeno and M{ü}ller, Gernot J},
  PUBLISHER = {Elsevier},
  DATE = {2009},
  JOURNALTITLE = {Journal of International Economics},
  KEYWORDS = {enders2009international},
  NUMBER = {1},
  PAGES = {45--59},
  TITLE = {On the international transmission of technology shocks},
  VOLUME = {78},
}

@ARTICLE{fazzari1993working,
  AUTHOR = {Fazzari, Steven M and Petersen, Bruce C},
  PUBLISHER = {JSTOR},
  DATE = {1993},
  JOURNALTITLE = {The RAND Journal of Economics},
  KEYWORDS = {fazzari1993working},
  PAGES = {328--342},
  TITLE = {Working capital and fixed investment: new evidence on financing constraints},
}

@ARTICLE{greenwood1988investment,
  AUTHOR = {Greenwood, Jeremy and Hercowitz, Zvi and Huffman, Gregory W},
  PUBLISHER = {JSTOR},
  DATE = {1988},
  JOURNALTITLE = {The American Economic Review},
  KEYWORDS = {greenwood1988investment},
  PAGES = {402--417},
  TITLE = {Investment, capacity utilization, and the real business cycle},
}

@ARTICLE{hayashi1985tests,
  AUTHOR = {Hayashi, Fumio},
  DATE = {1985},
  JOURNALTITLE = {NBER Working Paper},
  KEYWORDS = {hayashi1985tests},
  NUMBER = {w1720},
  TITLE = {Tests for Liquidity Constraints: a Critical Survey},
}

@ARTICLE{iacoviello2005house,
  AUTHOR = {Iacoviello, Matteo},
  PUBLISHER = {American Economic Association},
  DATE = {2005},
  JOURNALTITLE = {The American economic review},
  KEYWORDS = {iacoviello2005house},
  NUMBER = {3},
  PAGES = {739--764},
  TITLE = {House prices, borrowing constraints, and monetary policy in the business cycle},
  VOLUME = {95},
}

@ARTICLE{jermann2012macroeconomic,
  AUTHOR = {Jermann, Urban and Quadrini, Vincenzo},
  PUBLISHER = {American Economic Association},
  DATE = {2012},
  JOURNALTITLE = {The American Economic Review},
  KEYWORDS = {jermann2012macroeconomic},
  NUMBER = {1},
  PAGES = {238--271},
  TITLE = {Macroeconomic effects of financial shocks},
  VOLUME = {102},
}

@ARTICLE{khan2013credit,
  AUTHOR = {Khan, Aubhik and Thomas, Julia K},
  PUBLISHER = {University of Chicago Press},
  DATE = {2013},
  JOURNALTITLE = {Journal of Political Economy},
  KEYWORDS = {khan2013credit},
  NUMBER = {6},
  PAGES = {1055--1107},
  TITLE = {Credit shocks and aggregate fluctuations in an economy with production heterogeneity},
  VOLUME = {121},
}

@ARTICLE{kiyotaki1997credit,
  AUTHOR = {Kiyotaki, Nobuhiro and Moore, John},
  PUBLISHER = {University of Chicago Press},
  DATE = {1997},
  JOURNALTITLE = {Journal of Political Economy},
  KEYWORDS = {kiyotaki1997credit},
  NUMBER = {2},
  PAGES = {211--248},
  TITLE = {Credit cycles},
  VOLUME = {105},
}

@ARTICLE{kocherlakota2000creating,
  AUTHOR = {Kocherlakota, Narayana and others},
  DATE = {2000},
  JOURNALTITLE = {Federal Reserve Bank of Minneapolis Quarterly Review},
  KEYWORDS = {kocherlakota2000creating},
  NUMBER = {3},
  PAGES = {2--10},
  TITLE = {Creating business cycles through credit constraints},
  VOLUME = {24},
}

@INPROCEEDINGS{lucas1976econometric,
  AUTHOR = {Lucas, Robert E},
  ORGANIZATION = {North-Holland},
  BOOKTITLE = {Carnegie-Rochester conference series on public policy},
  DATE = {1976},
  KEYWORDS = {lucas1976econometric},
  PAGES = {19--46},
  TITLE = {Econometric policy evaluation: A critique},
  VOLUME = {1},
}

@ARTICLE{lucas1987money,
  AUTHOR = {Lucas, Robert and Stokey, Nancy},
  PUBLISHER = {Econometric Society},
  DATE = {1987},
  JOURNALTITLE = {Econometrica},
  KEYWORDS = {lucas1987money},
  NUMBER = {3},
  PAGES = {491--513},
  TITLE = {Money and Interest in a Cash-in-Advance Economy},
  VOLUME = {55},
}

@ARTICLE{quadrini2011financial,
  AUTHOR = {Quadrini, Vincenzo},
  DATE = {2011},
  JOURNALTITLE = {Economic Quarterly},
  KEYWORDS = {quadrini2011financial},
  NUMBER = {3},
  PAGES = {209--254},
  TITLE = {Financial Frictions in Macroeconomic Fluctuations},
  VOLUME = {79},
}

@ARTICLE{saiz2010geographic,
  AUTHOR = {Saiz, Albert},
  PUBLISHER = {JSTOR},
  DATE = {2010},
  JOURNALTITLE = {quarterly Journal of Economics},
  KEYWORDS = {saiz2010geographic},
  NUMBER = {3},
  TITLE = {The geographic determinants of housing supply},
  VOLUME = {125},
}

@ARTICLE{wang2006another,
  AUTHOR = {Wang, Peng-fei and Wen, Yi},
  PUBLISHER = {Elsevier},
  DATE = {2006},
  JOURNALTITLE = {Journal of Economic Dynamics and Control},
  KEYWORDS = {wang2006another},
  NUMBER = {12},
  PAGES = {2533--2552},
  TITLE = {Another look at sticky prices and output persistence},
  VOLUME = {30},
}

@REPORT{xu2012role,
  AUTHOR = {Xu, TengTeng},
  INSTITUTION = {Faculty of Economics, University of Cambridge},
  DATE = {2012},
  KEYWORDS = {xu2012role},
  TITLE = {The role of credit in international business cycles},
}

@ARTICLE{zhang2009china,
  AUTHOR = {Zhang, Wenlang},
  PUBLISHER = {Elsevier},
  DATE = {2009},
  JOURNALTITLE = {Journal of Macroeconomics},
  KEYWORDS = {zhang2009china},
  NUMBER = {3},
  PAGES = {473--484},
  TITLE = {China’s monetary policy: Quantity versus price rules},
  VOLUME = {31},
}

@Book{Yi2014--,
      Title                    = {Test},
      Address                  = {Address},
      Author                   = {Yi and B and C},
      Publisher                = {Publisher},
      Year                     = {2014}
    }
    @Book{Yi2013--,
      Title                    = {Supersonic and hypersonic nozzle design},
      Address                  = {BeiJing},
      Author                   = {Yi, S H and Zhao, Y X and He, L and Zhang, M L},
      Publisher                = {National Defense Industry Press},
      Year                     = {2013}
    }

@Periodical{AAAS1883--,
  Title                    = {Science},
  Date                     = {1883},
  Editor                   = {{American Association for the Advancement of Science}},
  Number                   = {1},
  Volume                   = {1},
  Location                 = {Washington, D.C.},
  Publisher                = {American Association for the Advancement of Science}
}

@Proceedings{ROSENTHALL1963--,
  Title                    = {Proceedings of the Fifth Canadian Mathematical Congress, University of Montreal, 1961},
  Date                     = {1963},
  Publisher                = {University of Toronto Press},
  Editor                   = {E M ROSENTHALL},
  Location                 = {Toronto}
}

@Thesis{CALMS1965--,
  Title                    = {Infrared spectroscopic studies on solid oxygen},
  Author                   = {R B CALMS},
  Date                     = {1965},
  Institution              = {Univ. of California},
  Location                 = {Berkeley}
}

@Report{WHO1970--,
  Title                    = {Factors regulating the immune response},
  Author                   = {{World Health Organization}},
  Date                     = {1970},
  Institution              = {WHO},
  Location                 = {Geneva},
  Titleaddon               = {report of WHO Scientific Group}
}

@Inproceedings{FOURNEY1971-17-38,
  Title                    = {Advances in holographic photoelasticity$\mathbb{R}$},
  Author                   = {M E FOURNEY},
  Booktitle                = {Symposium on Applications of Holography in Mechanics, August 23-25, 1971, University of Southern California, Los Angeles, California},
  Date                     = {1971},
  Pages                    = {17-38},
  Publisher                = {ASME},
  Location                 = {New York}
}
    
    @Article{abx2007-500-503,
      Title                    = {超声速短化喷管的设计和$\mathbb{R}$试验研究},
      Author                   = {张敏莉 and 易仕和 and 赵玉新 and 李明},
      Journal                  = {空气动力学报},
      Year                     = {2007},
      Number                   = {4},
      Pages                    = {500-503},
      Volume                   = {25},
      language                 = {chinese}
    }

@BOOK{张伯伟2002--,
  AUTHOR = {张伯伟},
  LOCATION = {南京},
  PUBLISHER = {江苏古籍出版社},
  DATE = {2002},
  KEYWORDS = {张伯伟2002--},
  PAGES = {288},
  TITLE = {全唐五代诗格会考},
  language = {chinese}
}

@PROCEEDINGS{雷光春2012--,
  AUTHOR = {雷光春},
  LOCATION = {北京},
  PUBLISHER = {海洋出版社},
  DATE = {2012},
  KEYWORDS = {雷光春2012--},
  TITLE = {综合湿地管理:综合湿地管理国际研讨会论文集},
  language = {chinese}
}

@REPORT{汤万金2013-09-30--,
  AUTHOR = {汤万金 and 杨跃翔 and 刘文 and others},
  URL = {http://www.nstrs.org.cn},
  DATE = {2013-09-30},
  KEYWORDS = {汤万金2013-09-30--},
  TITLE = {人体安全重要技术标准研制最终报告:7178999X},
  URLDATE = {2014-06-24},
  language = {chinese}
}

@INPROCEEDINGS{贾东琴2011-45-52,
  AUTHOR = {贾东琴 and 柯平},
  BOOKAUTHOR = {中国图书馆学会},
  LOCATION = {北京},
  PUBLISHER = {国家图书馆出版社},
  BOOKTITLE = {中国图书馆学会年会论文集:2011年卷},
  DATE = {2011},
  KEYWORDS = {贾东琴2011-45-52},
  PAGES = {45--52},
  TITLE = {面向数字素养的高校图书馆数字服务体系研究},
  language = {chinese}
}

@INCOLLECTION{韩吉人1985-90-99,
  AUTHOR = {韩吉人},
  BOOKAUTHOR = {中国职工教育研究会},
  LOCATION = {北京},
  PUBLISHER = {人民教育出版社},
  BOOKTITLE = {职工教育研究论文集},
  DATE = {1985},
  KEYWORDS = {韩吉人1985-90-99},
  PAGES = {90--99},
  TITLE = {论职工教育的特点},
  language = {chinese}
}

@THESIS{马欢2011-27-27,
  AUTHOR = {马欢},
  INSTITUTION = {清华大学},
  LOCATION = {北京},
  URL = {http://www.cnki.net},
  DATE = {2011},
  KEYWORDS = {马欢2011-27-27},
  PAGES = {27},
  TITLE = {人类活动影响下海河流域典型区水循环变化分析},
  URLDATE = {2013-10-14},
  language = {chinese}
}

@PATENT{张凯军2012-04-05--,
  AUTHOR = {张凯军},
  DATE = {2012-04-05},
  KEYWORDS = {张凯军2012-04-05--},
  NUMBER = {201220158825.2},
  TITLE = {轨道火车及高速轨道火车紧急安全制动辅助装置},
  language = {chinese}
}

@BOOK{国家环境保护局科技标准司1996-2-3,
  AUTHOR = {国家环境保护局科技标准司},
  LOCATION = {北京},
  PUBLISHER = {中国标准出版社},
  URL = {http://wenku.baidu.com},
  DATE = {1996},
  KEYWORDS = {国家环境保护局科技标准司1996-2-3,standard},
  NOTE = {standard},
  PAGES = {2--3},
  TITLE = {土壤环境质量标准:GB 15616-1995},
  URLDATE = {2013-10-14},
  language = {chinese}
}

@INBOOK{白书农1998-146-163,
  AUTHOR = {白书农},
  BOOKAUTHOR = {李承森},
  LOCATION = {北京},
  PUBLISHER = {高等教育出版社},
  BOOKTITLE = {植物科学进展},
  DATE = {1998},
  KEYWORDS = {白书农1998-146-163},
  PAGES = {146--163},
  TITLE = {植物开花研究},
  language = {chinese}
}

@ARTICLE{杨洪升2013-56-75,
  AUTHOR = {杨洪升},
  DATE = {2013},
  JOURNALTITLE = {文献},
  KEYWORDS = {杨洪升2013-56-75},
  NUMBER = {1},
  PAGES = {56--75},
  TITLE = {四库馆私家抄校书考略},
  language = {chinese}
}

@COLLECTION{中国职工教育研究会1985--,
  AUTHOR = {中国职工教育研究会},
  LOCATION = {北京},
  PUBLISHER = {人民教育出版社},
  DATE = {1985},
  KEYWORDS = {中国职工教育研究会1985--},
  TITLE = {职工教育研究论文集},
  language = {chinese}
}

@ARTICLE{丁文祥2000--,
  AUTHOR = {丁文祥},
  DATE = {2000-11-20},
  JOURNALTITLE = {中国青年报},
  KEYWORDS = {丁文祥2000--,news},
  NOTE = {news},
  NUMBER = {15},
  TITLE = {数字革命与竞争国际化},
  language = {chinese}
}

@ONLINE{李强2012-05-03--,
  AUTHOR = {李强},
  URL = {http://wenku.baidu.com},
  DATE = {2012-05-03},
  KEYWORDS = {李强2012-05-03--},
  TITLE = {化解医患矛盾需釜底抽薪},
  URLDATE = {2013-03-25},
  language = {chinese}
}

@PERIODICAL{中华医学会湖北分会1984--,
  EDITOR = {中华医学会湖北分会},
  INSTITUTION = {中华医学会湖北分会},
  LOCATION = {武汉},
  DATE = {1984},
  KEYWORDS = {中华医学会湖北分会1984--},
  NUMBER = {1},
  TITLE = {临床内科杂志},
  VOLUME = {1},
  language = {chinese}
}
\end{filecontents}
    \addbibresource{\jobname.bib}
    %

\begin{document}
    \section{sec title}
    
    文献\cite{calvo2006phoenix}
    
    文献\cite{CALMS1965--}

文献\cite{abx2007-500-503,aritileeg,FOURNEY1971-17-38,calvo2006phoenix,CALMS1965--,adam2011house}

文献\cite{abx2007-500-503,aritileeg,FOURNEY1971-17-38,iacoviello2005house}

文献\cite{abx2007-500-503,aritileeg}

\printbibliography

\end{document} 
```

biblatex中标注压缩的处理代码解析相关推荐

  1. Python中sort和sorted函数代码解析

    Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...

  2. java中怎么实现指数幂,java中幂指数值的运算代码解析

    说到幂指数的运算我们就会用到Math.pow(doublea,doubleb),返回的结果是a的b次方. 在Java中,当我们计算2的n次方时,可以直接用Math.pow来计算.非常方便. 但是,已知 ...

  3. java怎么计算幂函数,java中幂指数值的运算代码解析

    说到幂指数的运算我们就会用到Math.pow(doublea,doubleb),返回的结果是a的b次方. 在Java中,当我们计算2的n次方时,可以直接用Math.pow来计算.非常方便. 但是,已知 ...

  4. python中sort函数源代码_Python中sort和sorted函数代码解析

    Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...

  5. html的段落标志中 标注行中断,?HTML的段落标志中,标注行中断的是?

    A:,B:,C: ,D: 答案 查看答案 ?HTML的段落标志中,标注行中断的是? 解析 [单选题]下列关于元素在网页中的叠放顺序描述,不正确的是? [单选题]HTML代码表示? [单选题]创建选项菜 ...

  6. [从零手写VIO|第五节]——后端优化实践——单目BA求解代码解析

    长篇警告⚠⚠⚠ 目录 solver 全流程回顾 Solver三要素 Solver求解中的疑问 核心问题 代码解析 1. TestMonoBA.cpp 2. 后端部分: 2.1 顶点 2.2 边(残差) ...

  7. python中的doc_基于Python获取docx/doc文件内容代码解析

    这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...

  8. 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )

    文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...

  9. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )

    文章目录 一.JNI 中 main 函数声明 二.命令字符串切割并传入 main 函数 三.完整代码示例 1.完整 jni 代码 2.完整 java 代码 3.执行结果 四.参考资料 前置博客 : [ ...

最新文章

  1. 月结 sap_乡村基SAP:领跑中式快餐数字化转型
  2. Minio分布式集群示例:8个节点,每节点1块盘
  3. 随着firefox的迭代更新:FireBug不能用了?使用火狐Try Xpath插件替代Firebug和Firepath...
  4. 快速排序+统计→奶牛的耳语(洛谷P1296题题解,Java语言描述)
  5. linux+gpio+嵌入式,嵌入式Linux系统中对GPIO操作的方法总结
  6. 如何在CSDN中免费下载资料
  7. 移动技术--从网页游戏谈起1--网页游戏的兴起和现状
  8. Vsftpd-系统用户配置
  9. ABBYY FineReader15最新免费下载安装地址激活2020注册机教程
  10. 燕十八的php教材学完能找工作吗,燕十八的布尔教育怎么样? - php完全自学手册...
  11. 2019蓝桥杯Java决赛题答案_2019第十届蓝桥杯Java题
  12. python可视化3d柱状图_「Python实现数据可视化」创建3D柱状图
  13. EMV(一):初步了解EMV和EMV的分层结构
  14. 快手,字节跳动,百度,美团Offer之旅(Android面经分享)
  15. 路缘石滑模机一次成型因地制宜做项目
  16. 【经营智慧】002.赚钱主要靠知识和智慧
  17. DateTimePicker 日期时间选择器设置默认时间
  18. 信号发生器输出电阻与负载电阻问题,影响实际的信号输出
  19. 计算机入门模拟卷A(有详细答案),《计算机入门》模拟卷C答案-华东师范大学
  20. Spring中开启组件扫描细节配置

热门文章

  1. BICOMB文献统计软件
  2. MySQL误删数据后,查找操作日志并恢复数据
  3. Position信息的处理
  4. 基于ESP8266之使用MQTT通讯的迷你空气质量监测站制作(含手机APK)
  5. PIL之ImageFilter下的基本操作
  6. 关于获取监控摄像头数据。车联网
  7. TensorFlow神经网络模型训练
  8. c++快递费用计算代码出现的错误
  9. 淘宝店铺装修添加微博链接
  10. 学习商业思维的重要性