Is it possible to have a small triangle say that would indicate the end of a remark/theorem statement. One similar to the QED symbol put at the end of a proof environment?
Possibility of having a default end of environment tag
Perhaps this has been already answered on the forum but I did not look for a thread on the topic. The way to do what you want is to modify the theorem
macro, exempli gratia
<assign|theorem|<\macro|body>
<surround|<compound|next-theorem>||<compound|render-theorem|<compound|theorem-numbered|<compound|theorem-text>|<compound|the-theorem>>|<arg|body>
<qed>>>
</macro>>
where I got the macro definition from the macro editor (I recommend you to read https://texmacs.github.io/notes/docs/macro-editor.html to see with examples how to use it) and added the <qed>
symbol at the end.
I guess you would want the square to appear below the proof’s body. For this, one needs to stack them vertically in a document tag. However that tag is normally implicitly defined/inserted through formatting, and it is easy to get it wrong. This should work
<assign|mytheorem|<\macro|body>
<surround|<compound|next-theorem>||<\render-theorem|<compound|theorem-numbered|<compound|theorem-text>|<compound|the-theorem>>>
<arg|body>
<qed>
</render-theorem>>
</macro>>
You can check the full tag structure by setting the preference “Tags with special rendering” to “raw”, in the Document>Source>Preferences…
The remark of @pjoyez is correct, however I would go to redefine the render-theorem macro, or create a new one which inserts the symbol. Conceptually is this macro which is responsible for the rendering, as the name suggests.
I don’t have access to the computer to test, so I ask. Does render-theorem
format all enunciation environments? In this case one needs to also assign a new name to the "new render-theorem
".
Ok, re-read your post, you also say it
How would you set it to the right of the last word of the proof, as I wanted it to be?
I can’t get the full structure after changing the preference. Nevertheless I get the same effect by inserting a new-line
tag before qed
. However, the qed
sign appears to the left. Then I replace qed
by tab-qed
as in render-proof
, but the sign appears in the middle. In plain text tab-qed
renders the sign to the right. It looks the render-proof
has something more in its definition, which I don’t understand now.
The following works: insert htab
then qed
. But putting these directly in the macro yield some undesired results.
I think I have understood something. If a macro accepts a multi-paragraph input which it combines with an implicit concat
, like
<assign|test-concat|<macro|body|<arg|body> <qed>>>
and the argument body
is multi-paragraph, then TeXmacs inserts an implicit surround
tag.
What I want—setting qed
to the right of the last word of the proof—IMO is achieved with some Scheme programming, id est detecting if the argument is a document
and if it is adding qed
to its last child.
I wrote a Scheme function which uses tree-child-ref
. It works if I use it within a Scheme session; it crashes TeXmacs if I use it within an extern
tag. Could it be a bug?
The function is
(define (test-tcr body) (stree->tree `(concat ,(tree->stree (tree-child-ref body 0)) ,(tree->stree (tree-child-ref body 0)))))
Maybe the tree manipulation functions are not meant to be used with macros. I am re-writing the macro with Scheme list manipulation functions. Probably I’ll have more questions, I’ll write in case.