The only solution for that is some form of proportional representation, STV, a mixed-member, a list system. You can't divide a single member seat up proportionally between parties; that's the fundamental issue. The only way of dealing with that is compensatory seats through a mixed-member system, or multi-member districts where you elect more than one person.
I will note there was this really oddball article that suggested proportional tenure, so that if where the Liberals, say, got 40% of the vote, they'd hold the seat for 40% of the term.