I'm dealing with strings in Mathematica and I would love to handle their stylling in the most cenvenient way.
Without loss of generality, let's assume I want to make some parts of string Bold
.
Example of desired output:
to be or not to be
I know I can achieve that by for example:
StringForm["to `` or `` to be", ##] & @@ (Style[#, Bold]& /@ {"be", "not"})
but I want single function bold
and some kind of markers (here #
):
bold @ "to #be# or #not# to be"
to be or not to be
It is my approach:
bold = Module[{x},
With[{patt = "#" ~~ x : Except["#"] .. ~~ "#"},
StringForm @@ ({
StringReplace[#, patt :> "``"],
Sequence @@ StringCases[#, patt :> Style[x, Bold]]
})]
] &
and I have couple of questions about it:
- do you feel that
#
is not the best choice too? :) - is this:
{patt = "#"~~...}
a proper way of storing patterns? - maybe some other ideas?
I like this way but I'm not sure if it is bulletproof. It is quite handy because StringCases
etc do not look for overlaps by default.
Notice that mixed-style-string-form tends to produce some kind of error If you want to edit that cell. This is also what I to want to ask about:
INTERNAL SELF-TEST ERROR: MathEditCells2|c|1384 Click here to find out if this problem is known, and to help improve Mathematica by reporting it to Wolfram Research
**bold**
in markdown? $\endgroup$Row
orStringForm
each time. If there are markers in MMA like "\ n " then it is a question about them. $\endgroup$