\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