|
18 | 18 | "method": "Methodology",
|
19 | 19 | "structure": "Structure Preservation",
|
20 | 20 | "theory": "Theory",
|
| 21 | + "software": "Software / Implementation", |
21 | 22 | "application": "Applications",
|
22 | 23 | "thesis": "Dissertations and Theses",
|
23 | 24 | "other": "Other",
|
|
30 | 31 |
|
31 | 32 | # Author citation IDs (https://scholar.google.com/citation?user=<this ID>)
|
32 | 33 | scholarIDS = {
|
33 |
| - "iman_adibnazari": "u8vJ9-oAAAAJ", |
| 34 | + "nicole_aretz": "Oje7mbAAAAAJ", |
34 | 35 | "anthony_ashley": "9KFAXLYAAAAJ",
|
| 36 | + "sean_babiniec": "xcSVh00AAAAJ", |
35 | 37 | "laura_balzano": "X6fRNfUAAAAJ",
|
36 | 38 | "peter_benner": "6zcRrC4AAAAJ",
|
| 39 | + "patrick_blonigan": "lOmH5XcAAAAJ", |
37 | 40 | "anirban_chaudhuri": "oGL9YJIAAAAJ",
|
| 41 | + "pascal_denboef": "vFlzL7kAAAAJ", |
38 | 42 | "igor_duff": "OAkPFdkAAAAJ",
|
| 43 | + "melina_freitag": "iE4t4WcAAAAJ", |
39 | 44 | "ionut-gabriel_farcas": "Cts5ePIAAAAJ",
|
40 | 45 | "rudy_geelen": "vBzKRMsAAAAJ",
|
| 46 | + "yuwei_geng": "lms4MbwAAAAJ", |
41 | 47 | "omar_ghattas": "A5vhsIYAAAAJ",
|
| 48 | + "leonidas_gkimisis": "0GzUUzMAAAAJ", |
42 | 49 | "marcos_gomes": "s6mocWAAAAAJ",
|
43 | 50 | "pawan_goyal": "9rEfaRwAAAAJ",
|
44 | 51 | "anthony_gruber": "CJVuqfoAAAAJ",
|
|
50 | 57 | "lili_ju": "JkKUWoAAAAAJ",
|
51 | 58 | "bülent_karasözen": "R906kj0AAAAJ",
|
52 | 59 | "parisa_khodabakhshi": "lYr_g-MAAAAJ",
|
| 60 | + "hyeonghun_kim": "sdR-LZ4AAAAJ", |
53 | 61 | "tomoki_koike": "HFoIGcMAAAAJ",
|
54 | 62 | "boris_kramer": "yfmbPNoAAAAJ",
|
| 63 | + "diana_manvelyan": "V0k8Xb4AAAAJ", |
| 64 | + "jan_nicolaus": "47DRMUwAAAAJ", |
| 65 | + "joseph_maubach": "nBRKw6cAAAAJ", |
| 66 | + "alexandre_marquez": "p9zb2Y0AAAAJ", |
55 | 67 | "shane_mcquarrie": "qQ6JDJ4AAAAJ",
|
| 68 | + "jonathan_murray": "NScAg7AAAAAJ", |
56 | 69 | "david_najera-flores": "HJ-Dfl8AAAAJ",
|
57 | 70 | "alberto_nogueira": "66DEy5wAAAAJ",
|
58 | 71 | "benjamin_peherstorfer": "C81WhlkAAAAJ",
|
59 |
| - "arthur-pires": "qIUw-GEAAAAJ", |
60 |
| - "gleb-pogudin": "C5NP1o0AAAAJ", |
| 72 | + "arthur_pires": "qIUw-GEAAAAJ", |
| 73 | + "gleb_pogudin": "C5NP1o0AAAAJ", |
61 | 74 | "elizabeth_qian": "jnHI7wQAAAAJ",
|
| 75 | + "thomas_richter": "C8R6xtMAAAAJ", |
| 76 | + "wil_schilders": "UGKPyqkAAAAJ", |
62 | 77 | "harsh_sharma": "Pb-tL5oAAAAJ",
|
| 78 | + "jasdeep_singh": "VcmXMxgAAAAJ", |
63 | 79 | "renee_swischuk": "L9D0LBsAAAAJ",
|
| 80 | + "john_tencer": "M6AwtC4AAAAJ", |
64 | 81 | "irina_tezaur": "Q3fx78kAAAAJ",
|
| 82 | + "marco_tezzele": "UPcyNXIAAAAJ", |
65 | 83 | "michael_todd": "jzY8TSkAAAAJ",
|
66 | 84 | "michael_tolley": "0kOHVOkAAAAJ",
|
67 | 85 | "wayne_uy": "hNN_KRQAAAAJ",
|
| 86 | + "nathan_vandewouw": "pcQCbN8AAAAJ", |
| 87 | + "arjun_vijaywargiya": "_fcSwDYAAAAJ", |
68 | 88 | "zhu_wang": "jkmwEF0AAAAJ",
|
69 | 89 | "yuxiao_wen": "uXJoQCAAAAAJ",
|
70 | 90 | "karen_willcox": "axvGyXoAAAAJ",
|
71 | 91 | "stephen_wright": "VFQRIOwAAAAJ",
|
72 | 92 | "süleyman_yıldız": "UVPD79MAAAAJ",
|
| 93 | + "benjamin_zastrow": "ODLjrBAAAAAJ", |
73 | 94 | }
|
74 | 95 |
|
75 | 96 | # LaTeX special characters to convert for the markdown version.
|
|
132 | 153 |
|
133 | 154 | `authors = {{First1 Last1 and First2 Last2}},`
|
134 | 155 |
|
| 156 | + Enclose multi-word names in braces, for example, |
| 157 | +
|
| 158 | + `authors = {{Vincent {{van Gogh}} and Balthasar {{van der Pol}}}},` |
135 | 159 | - Include a "doi" field if applicable.
|
136 | 160 | - Add a "category" field to indicate which section the reference should be
|
137 | 161 | listed under on this page. Options include `survey`, `method`,
|
138 |
| - `structure`, `theory`, `application`, `thesis`, and `other`. |
| 162 | + `structure`, `theory`, `software`, `application`, `thesis`, and `other`. |
139 | 163 | 3. Add the Google Scholar IDs of each author who has one to the `scholarIDS`
|
140 | 164 | dictionary in `docs/bib2md.py`. This is the unique part of a Google Scholar
|
141 | 165 | profile page url:
|
@@ -183,21 +207,27 @@ def clean_title(title):
|
183 | 207 | return re.subn(r"\{(\w+?)\}", r"\1", clean_name(title))[0]
|
184 | 208 |
|
185 | 209 |
|
186 |
| -def linkedname(names): |
| 210 | +def linkedname(author): |
187 | 211 | """Get the string of the form "First, Last" with a link to their
|
188 | 212 | Google Scholar page if possible.
|
189 | 213 | """
|
| 214 | + # Separate names, keeping {} groups together. |
| 215 | + names = [ |
| 216 | + match[1:-1] if match.startswith("{") and match.endswith("}") else match |
| 217 | + for match in re.findall(r"\{[^}]*\}|\S+", author) |
| 218 | + ] |
| 219 | + |
190 | 220 | # Extract first and last names and initials.
|
191 | 221 | firstname = clean_name(names[0]).lower()
|
192 | 222 | if names[-1] == "Jr":
|
193 | 223 | lastname = clean_name(names[-2])
|
194 | 224 | initials = " ".join([name[0] + "." for name in names[:-2]])
|
195 |
| - key = f"{firstname}_{lastname.lower()}" |
| 225 | + key = f"{firstname}_{lastname.replace(" ", "").lower()}" |
196 | 226 | lastname = f"{lastname} Jr."
|
197 | 227 | else:
|
198 | 228 | lastname = clean_name(names[-1])
|
199 | 229 | initials = " ".join([name[0] + "." for name in names[:-1]])
|
200 |
| - key = f"{firstname}_{lastname.lower()}" |
| 230 | + key = f"{firstname}_{lastname.replace(" ", "").lower()}" |
201 | 231 |
|
202 | 232 | # Get the Google Scholar link if possible.
|
203 | 233 | if key in scholarIDS:
|
@@ -241,7 +271,7 @@ def main(bibfile, mdfile):
|
241 | 271 | raise ValueError(
|
242 | 272 | f"change {bibfile} to avoid ',' in author '{author}'"
|
243 | 273 | )
|
244 |
| - authors.append(linkedname(author.split(" "))) |
| 274 | + authors.append(linkedname(author)) |
245 | 275 |
|
246 | 276 | if len(authors) == 0:
|
247 | 277 | raise ValueError("empty author field")
|
|
0 commit comments