## Bibtex bibliographies selected by keywords, with customised keyword separators

This is a very specialised problem, but since I just found the solution, I wanted to briefly document this for myself. I usually use natbib, but for the preparation of reading lists, sorted by topic, I wanted to try biblatex. Creating a list of references selected by a keyword is not a problem at all.

```\usepackage[style=authoryear, backend=biber]{biblatex}
```

Then, in the place where you want to print the bibliography, add:

```\nocite{*}
\printbibliography[keyword=KEYWORD]
```

However, I use bibdesk as my bibtex editor and it uses “;” as a separator instead of the biber default “,”. And because I’m not very smart and never really saw the significance, I have sometimes manually used “,” in addition to “;” as a separator. So, if you have multiple keywords in your well-groomed bibliography, and they are not all separated by “,”, you’re a bit in trouble. There is, however, a solution for this problem, as explained in this post. You can modify the document-specific biber configuration file to accept different separators. Make sure that you have compiled your document with biber as backend option ([backend=biber]). So there should be a configuration file FILENAME.bcf
In the terminal, I have run the following command to include both “,” and “;” as separators:

```biber --xsvsep=[\,\;] FILENAME.bcf
```

Then recompile your document. Et voilà.

## Compiling a list of glosses from your glossed examples in a LaTeX document (under UNIX)

If you have many interlinearized examples in your LaTeX documents, you have probably wondered about the best way to handle them. Here are some ideas. There are two potential problems with the glosses: 1) different publishers may have different requirements for how to print them, so transferring glossed examples from one manuscript to another may be difficult. 2) You’ll want to have a list of all the glosses in your document, and it should be complete and consistent. To solve all that, the main strategy is to label all your glosses explicitly as such by using a new command we may call “Gloss”:

`\newcommand{\Gloss}[1]{\textsc{#1}}`

This command prints all your glosses in small caps. If a publisher requires all-caps instead, you can change this command to:

`\newcommand{\Gloss}[1]{\MakeUppercase{#1}}`

Then you need to use this command, of course, when interlinearising examples. This might look as follows:

```\exg. \dots a mwe \textbf{yur}-yurmiline suku-on nyoo, suku-on ane gyes=an nyoo. \\
and \Gloss{real} \Gloss{redup}-forget stuff.of-\Gloss{3sg}.\Gloss{poss} \Gloss{3pl} stuff.of-\Gloss{3sg}.\Gloss{poss} \Gloss{tr} work=\Gloss{nmlz} \Gloss{3pl}\\
\enquote{and he repeatedly forgot his things, his tools for work.}
```

In order to use this command for your automatic compilation of glosses, it is important to not include any separators in a gloss. As you can see above, separators such as “.-=” are not included in within the wavy brackets of a Gloss argument, but stay outside.

Now open your terminal and type in the following command:

```grep 'Gloss' INFILE.tex | tr -s ' .;:\-=()\\' '\n' | grep 'Gloss' | sort -u
```

I usually use ack instead of grep, but here grep works just fine. Let’s break this down a little: the first “grep” command selects all lines that contain the sequence “Gloss” out of your INFILE.tex document (this command isn’t strictly necessary). The “tr” command translates all occurrences of the characters in the first pair of quotation marks into the newline character “\n”. The next command takes the result of that action and again filters out only those lines that contain the word “Gloss”. And “sort -u” sorts uniquely, that is, it gives you an alphabetical list of your search with duplicates thrown out. The result of this action is displayed at the end of this post.

You can take this list directly and put it into your LaTeX document. If you use the sublime editor you can use multiple cursors to add dashes and semicolons to all entries at the same time. Usually, there will be inconsistencies and typos in your glosses. If you get any open brackets as in “Gloss{xx”, that probably means you included a separator within the brackets and you’ll have to look for those cases. So first use the list to clean up your glosses, run the above command again after each round, and once your list looks perfect, include it in your LaTeX document.

```Gloss
Gloss{1du}
Gloss{1excl}
Gloss{1incl}
Gloss{1pl}
Gloss{1sg}
Gloss{1s}
Gloss{2sg}
Gloss{2s}
Gloss{2}
Gloss{3du}
Gloss{3pc}
Gloss{3pl}
Gloss{3sg
Gloss{3sg}
Gloss{3}
Gloss{agr}
Gloss{ana}
Gloss{art}
Gloss{asr}
Gloss{aux}
Gloss{bi}
Gloss{body
Gloss{caus}
Gloss{clf}
Gloss{comp}
Gloss{cond}
Gloss{conj}
Gloss{cons}
Gloss{cont}
Gloss{cop}
Gloss{def}
Gloss{dem}
Gloss{detr}
Gloss{det}
Gloss{disc}
Gloss{dist}
Gloss{dl}
Gloss{dst}
Gloss{es}
Gloss{excl}
Gloss{freq}
Gloss{fut}
Gloss{hab}
Gloss{hesit}
Gloss{impf}
Gloss{incl}
Gloss{incpt}
Gloss{irr
Gloss{irr}
Gloss{it}
Gloss{it}/
Gloss{loc}
Gloss{med}
Gloss{name}
Gloss{nec}
Gloss{neg2}
Gloss{neg}
Gloss{nmlz}
Gloss{np}s
Gloss{num}
Gloss{obj}
Gloss{part}
Gloss{pft}
Gloss{pl}
Gloss{poss1}
Gloss{poss2}
Gloss{poss}
Gloss{pos}
Gloss{pot}
Gloss{pp}
Gloss{prep}
Gloss{prf}
Gloss{prog}
Gloss{prox}
Gloss{prsup}
Gloss{real}
Gloss{recp}
Gloss{redup}
Gloss{res}
Gloss{sbj}
```