I’ve always found annoying that when you interlinearize a text with Toolbox, the parsing process will output the underlying forms of the morphemes. So for example if you have in your lexicon a root like ik and a suffix with two allomorphs, -rai after vowels and -ai after consonants, with the first form set up in the \lx field and the second one in a field \a (for “alternate”), will you get parses like this:
| \tx | ikai | |
| \mb | ik | –rai |
| \ge | go | –POT |
| \ft | I can go |
Of course, the problem will not be solved if you reverse your entries, with -ai in \lx and -rai in \a:
| \tx | miirai | |
| \mb | mii | –ai |
| \ge | see | –POT |
| \ft | I can see |
Such interlinear texts are problematic to use since in most linguistic publications it is not usual to give underlying forms in examples and texts (except to illustrate morphophonological alternations), and some of us also have theoretical reasons not to do so. It’s very easy to export and reformat sentences glossed with Toolbox in order to comply with the accepted standards, typically by removing all spaces between bound morphemes, except for these underlying forms. Generally you would like to have a final result like:
| ik-ai |
| go-POT |
| I can go |
I can see two ways of solving this problem: the hard way, and the subtle way. The hard way is to segment all forms in the \tx line by explicitly marking all morpheme boundaries, and then to dump the \mb line during the export. So you’ll get a Toolbox file like:
| \tx | ik-ai | |
| \mb | ik | –rai |
| \ge | go | –POT |
| \ft | I can go |
It works. But you may have reasons not to pre-segment the baseline of your text. Or you might actually want a line with surface morphemes segmented and properly aligned with their glosses (my case, so it’s easier to run a script that captures each morpheme with its gloss for further process). There is a way to get not underlying but surface forms in the \mb line, but I am not sure it is viable for languages with a lot of morphophonology, or for projects where you want Toolbox to automatically resolve morphophonological alternations.
If you want to try my trick, follow the following steps:
- Enter each allomorph in a \a field in your lexicon (ex: \a –ai)
- For each allomorph, set up a \u field with the same content, just after the \a field (ex: \a –ai, return, \u –ai)
- Go to the texts database, and open the Database>Properties menu, click on the Interlinear tab, select the “tx mb Parse” line and click on “Modify”, and then on“Lexicons” in the upper part of the new window
- In the left lower part of the window, select “a” in the list and click on “Insert->”, there now should be “lx” and “a” in “Markers to find”
- Last, change the “Marker to Output” from “lx Lexeme” to “u Underlying for parse”
- Hit OK several times to go back to Toolbox’s main window
Now, Toolbox will not anymore output underlying \lx forms in the \mb line but surface forms like this:
| \tx | ik-ai | |
| \mb | ik | –ai |
| \ge | go | –POT |
| \ft | I can go |
(Warning, you will have to fix jump paths in order to jump from morpheme to lexical entry, but it’s neither difficult nor very important anyway).
Of course, you might want to also have a line with underlying forms. Very easy, you just need to add an interlinear process:
- Go back to Database>Properties and this time select the “Markers” tab
- Add a new marker to the list, like for example “ur”, for “Underlying Representation”
- Go back to Database>Properties>Interlinear and this time click on “Add” and choose “Parse”, then OK
- Select “mb Morphemes” as the “From Marker” and your newly created “ur Underlying Representation” as the “To Marker”
- Click on “Lexicons”, select your dictionary and insert it in the list of “Databases to Search”
- “Markers to Find” should contain “a” and “lx”, and “Marker to Output” should be set to “lx Lexeme”
You should now get interlinear texts like:
| \tx | ik-ai | |
| \mb | ik | –ai |
| \ge | go | –POT |
| \ur | ik | –rai |
| \ft | I can go |
Let me know if you have a better way to do this or if there are fundamental conceptual mistakes with my method. For me, it works