The issue has to do when the following is checked.
1. General Options | Display Options | Apply capitalization effects is checked. This enforces all the casing effects (upper/lower/unchanged) that you have selected in Highlighting submenu.
2. Highlighting | Reserved words is set to uppercase.
3. Highlighting | PLSQL reserved is set to uppercase.
4. Highlighting | Keywords is set to uppercase.
5. There are also others that are set to uppercase like "SQL reserved" by default.
6. Highlighting | String is set to unchanged. (This is important!)
The example code is
DECLARE
x VARCHAR2(10);
BEGIN
SELECT 'true' INTO x FROM dual;
END;
Because all strings are set to be unchanged, whatever is type in between single-quotes is as is. So 'true' is all lower case, 'Hello' is mixed, 'WORLD' is cap, etc. In the code, there is set of single-quotes that matches which designate everything in between the single-quote to be a string; pretty obvious. As soon as a new single-quote is introduced, TOAD re-matches the single quotes and designates the new match as the new string. Everything out side of that is not consider a sting.
In the example code, 'true' is consider a string. Introducing and extra single-quote before it change the word "true" from a string to a PLSQL reserve word due to re-matching of the single-quotes. In other words, the word "true" is not enclosed anymore by a set of single-quotes. Also, since PLSQL reserved words are set to upper case, TOAD applies the effect.
Summary:
TOAD considers 'true' a string and keeps it unchanged.
TOAD considers ' ' TRUE ' not as a string because TOAD re-matches the 1st and 2nd single-quote and considers it a string. It also considers everything after the 3rd single-quote a string. Thus, leaving "true" in the cold.