Peter’s code works. I think the underlying problem is that you’re bumping up against some of the complications of exactly how you can permissibly end a line in Inform 7.
Your original code had this:
The reading-material of the warrant is "[fixed letter spacing]This is a test.[variable letter spacing]"
Understand the command "read" as something new.
As you said, Inform didn’t like this because it lacked a period at the very end of the line. And if you omit the period from this:
Carry out reading:
say "[reading-material of the noun]."[/code]
Inform won't like this either.
But Peter's code:
[code]The reading-material of the warrant is "[fixed letter spacing]This is a test.[variable letter spacing]"
Carry out reading:
say "[reading-material of the noun][line break]"
does work, even without periods. What gives?
Basically, Inform knows that a code block ends when it sees a period at the end of the line. That’s why
Carry out reading:
say "[reading-material of the noun][line break]".
will work no matter how you space it.
But it also recognizes that a code block has ended when you have a normal sentence-ending punctuation inside the quotes, like this:
Carry out reading:
say "[reading-material of the noun]."
It doesn’t need another period after the quotes, because it knows that the period inside the quotes is ending the code.
But this:
The reading-material of the warrant is "[fixed letter spacing]This is a test.[variable letter spacing]"
doesn’t end with a period inside the quotes! So Inform doesn’t know it’s ending a code block.
However, if Inform sees an entire blank line (two carriage returns) it knows that the code block has ended. That’s why this works:
[code[The reading-material of the warrant is “[fixed letter spacing]This is a test.[variable letter spacing]”
Carry out reading:
say “[reading-material of the noun][line break]”[/code]
(again, assuming that there’s a blank line after the last line).
So, to summarize, this works:
Lab is a room. The description of Lab is "this is a punctuationless description".
A rock is in Lab.
because of the period. And this works:
[code]Lab is a room. The description of Lab is “this is a punctuationless description”
A rock is in Lab.[/code]
because of the blank line. But this fails:
Lab is a room. The description of Lab is "this is a punctuationless description"
A rock is in Lab.
For the exact same reason, these work:
Lab is a room. "[fixed letter spacing]This shows up in fixed letter spacing.[roman type]".
A rock is in Lab.
[code]Lab is a room. “[fixed letter spacing]This shows up in fixed letter spacing.[roman type]”
A rock is in Lab.[/code]
But this fails:
Lab is a room. "[fixed letter spacing]This shows up in fixed letter spacing.[roman type]"
A rock is in Lab.
To summarize the summary, if you’ve got a line with quotation marks, and it’s failing to compile with a confusing message that runs it together with the next line of code, put in a period after the quotation mark.