@Smarten plugin...
Just found another problem, to do with the apos_exceptions part. Although it did seem to be working, I found that now it doesn't - even though I can't see why it did originally work.
Could you change line ~66 of smarten.py
from this
Code:
text = re.sub(r"'(" + entry.strip("'") + "\b)", r"&# 8217;\1", text)
TO this
Code:
text = re.sub(r"'(%s\b)" % entry.strip("'"), r"&# 8217;\1", text)
ALSO removing the space in the '&# 8217;' (added so it displays here)