Of course, you would have a table implementing the n:m relationship. Like
publication_tag {
publication_id
tag_id
}
Then your query could look like:
SELECT p.publication_id, p.publication
FROM publication p
WHERE EXISTS (SELECT 1 FROM publication_tag
WHERE publication_id = p.publication_id
AND tag_id IN ('A', 'B')
)
AND EXISTS (SELECT 1 FROM publication_tag
WHERE publication_id = p.publication_id
AND tag_id IN ('C', 'D')
)
This should be among the fastest possible solutions. You already found the go-to question with a lot more sample queries for relational division.