triangle from square waveform filter
Here are some more tricks.
Use notch filters on the 3rd and 5th harmonic. This will produce less delay.
Make a PLL. Heavily filter the VCO output to get a pure sine wave. Feed the sine wave to both your wanted output and also a comparator to get a square wave again. Feed this comparator output back to the phase detector. If you use a frequency/phase detector, you will get zero degree difference between the sine wave and the original square wave.
Use whatever filter it takes to get the sine wave purity you need. Then put the square wave signal through a delay circuit of equal delay before sending it to the destination. This delay circuit can be a first monostable to make the delay and it triggers a second monostable which makes the positive half of the square wave.