Hi, there is actually a way how to achieve this. You can use anonymous macro signature "@":
{% if ( Contact.Topics.Contains("marketing") ) { %}
$$Marketing_Content:500:250$$
{% } else { %}
$$Generic_Content:500:250$$
{% } @%}
By using "@" at the end of macro, you disable macro security checks and the macro acts like it would be signed by a public user. This basically means that its content can be changed without any restrictions. On the other hand, it has limited access to resources.
However, the important thing is that system checks the context of each anonymous macro.
So, if you insert such a macro into an email template inside of email marketing module, the system expects you to have enough permissions to be actually able to insert the macro there (e.g. valid password, permissions for editing email marketing module, etc.). Because of that it allows this macro access to current context - in this case, access to contacts or subscribers.