The principal mechanism for raw output is to put it between a @rawif(protocol) command, and a @translate() command. The rawif command disables a target weaver unless it supports the nominated protocol, in which case, it is put in raw mode, whereas the enable command enables the weaver and put it in translating mode.
If the weaver is the multiplexor, it dispatches these commands to all the weavers attached to it, thereby allowing raw output to be written to the subset of weavers supporting it.
Generally, you should provide raw typesetter data for every possible typesetter so that _something_ is typeset in every format of the document. (even if it is just 'paste the diagram here' :-)
Every weaver constructs a protocol list when it is created, but the method 'add_tag' can be called to add another protocol to a weaver. The standard protocol names are html, latex, and text for the html and web weavers, the latex weaver, and the plain text weaver, respectively.
This mechanism is design to be used in documents of parts of documents without requiring knowledge of which weavers are active. If a particular weaver is active and accessible, it can be controlled directly instead, but this is recommended only for specialised documents.