Acetate buffer can also be useful , but 0.1 difference is very difficult to maintain , for which the pH meter should atleast read pH 3.001 and should maintain the values like pH +/- 3.05 to 2.95 for ph 3.0 , and the pH value varies by temperature as well , so a difference of atleast 3.0, 3.5 , 4.0 can be ideal practical in my perspective
You want to find functional groups that have pKa values near the targets (i.e, +/- 0.5 pKa units). The closer the better. I have compiled a list of various functional groups and various nearest neighbor substitutions that can be used for substructure searches for this purpose (attached). It's important for capillary electrophoresis work. The best is to find both a proton donor and acceptor pair that both have pKa's near the target point.
On the sodium lactate / lactic acid pH buffer ― with effective buffer range pH = 3.86 ± 1.00 (pKa = 3.86) ― at this forum: https://www.researchgate.net/post/How_to_calculate_molarity_of_a_buffer
About predicting the pH of citric acid or of citric acid ― sodium citrate solutions and buffers for approx. pH < 4.0 ― cf. my post at: https://www.researchgate.net/post/How-to-prepare-a-citric-acid-solution-of-pH-25-and-3-from-100-citric-acid-powder
The pKa of acetic acid is 4.75, from what we can only expect fair pH buffering effect for the acetic acid / sodium acetate buffer sol. between approx. 3.75 to 5.75.