- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!plain/bibtexでの日本語文献対応
bibtexのplainで,日本語文献を列挙しようとするとあれこれ表記がおかしなことに.
とりあえず,ラストオーサーの前の and は何とかしようと,
[日本語と英語を混ぜられるようにbibtexスタイルファイルを改造しよう|https://qiita.com/HexagramNM/items/3ad757a9f5ee5d15e363] を参考に修正.
bstって,こういう文法だったんだ.
miyo@tama:% diff -up /usr/local/texlive/2020/texmf-dist/bibtex/bst/base/plain.bst plainS.bst
--- /usr/local/texlive/2020/texmf-dist/bibtex/bst/base/plain.bst 2010-12-14 10:20:07.000000000 +0900
+++ plainS.bst 2021-01-02 13:19:02.460806929 +0900
@@ -31,17 +31,19 @@ ENTRY
type
volume
year
+ isjapanese
}
{}
{ label }
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+INTEGERS { output.state before.all mid.sentence after.sentence after.block japanese.flag}
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
+ #0 'japanese.flag :=
}
STRINGS { s t }
@@ -191,14 +193,26 @@ FUNCTION {format.names}
{ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
- { ", " * t * }
+ { japanese.flag #0 =
+ { ", " * t * }
+ { "," * t * }
+ if$
+ }
{ numnames #2 >
- { "," * }
- 'skip$
+ { japanese.flag #0 =
+ { ", " * }
+ { "," * }
+ if$
+ }
+ 'skip$
if$
t "others" =
{ " et~al." * }
- { " and " * t * }
+ { japanese.flag #0 =
+ { " and " * t * }
+ { "" * t * }
+ if$
+ }
if$
}
if$
@@ -553,6 +567,10 @@ FUNCTION {article}
new.block
note output
fin.entry
+ isjapanese empty$
+ {skip$}
+ {#1 'japanese.flag :=}
+ if$
}
FUNCTION {book}