\setupbtxlist
  [default]
  [align={normal,verytolerant,stretch},
   before={\blank[quarterline]},after={\blank[quarterline]},
   numberalign=middle,
   width=2.5em] % width 居然列表编号宽度，若设为 fit，则列表内容左侧不齐

\definebtx
  [default:list:numbering]
  [default:list]
  [left={[},right={]}]

\setupbtx
  [default:list:author]
  [authorconversion=invertedshort,
    separator:invertedinitials=\btxspace,
    otherstext={\nospace，et al},
    stopper:initials=\btxspace,
    separator:names:2={\nospace，}]
\setupbtx[default:list:journal][style=normal]

\definebtx
  [default:title:online]
  [default:list:title]

\startsetups btx:default:list:article
  \texdefinition{btx:default:author}\nospace．
  \texdefinition{btx:default:title} [J]．
  \texdefinition{btx:default:journal}．
\stopsetups

\startsetups btx:default:list:online
  \texdefinition{btx:default:author}\nospace．
  \texdefinition{btx:default:title}．
  \texdefinition{btx:default:url}，
  \btxdoif {year} {
    \btxflush{year}．
  }
\stopsetups

\starttexdefinition btx:default:url
  「\underbar{\goto{\hyphenatedurl{\btxflush{url}}}
       [url(\btxflush{url})]}」
\stoptexdefinition
  
\starttexdefinition btx:default:author
  \btxflush{author}
\stoptexdefinition

\starttexdefinition btx:default:title
  \btxflush{title}
\stoptexdefinition

\starttexdefinition btx:default:journal
  \btxdoif {journal} {
    \btxstartstyleandcolor [default:list:journal]
    \btxusecommand [default:list:journal] {
      \btxflush{journal}，
    }
    \btxstopstyleandcolor
    \btxdoif {year} {
      \btxflush{year}，\nospace
    }
    \btxdoifelse {volume} {
      \btxspace
      \btxflush{volume}
      \btxdoif {number} {
        \ignorespaces % brrr
        \btxleftparenthesis
        \btxflush{number}
        \btxrightparenthesis
      }
    } {
      \btxdoif {number} {
        \btxlabeltext{default:number}
        \btxspace
        \btxflush{number}
      }
    }
    \btxdoif {pages} {
     \nospace：\kern-.1em\btxflush{pages}
    }
  }
\stoptexdefinition