"Gilets jaunes" ("yellow vest") demonstrators clashed with riot police in Toulouse on Saturday as President Emmanuel Macron prepares a series of policy announcements aimed at quelling 22 consecutive weekends of protests.
Police in the south-western French city fired teargas and arrested several people after hundreds of demonstrators started throwing objects, burning rubbish bins and trying to enter areas where protests had been banned.
About 2,000 protesters had gathered on the Allee Jean Jaures, a wide avenue in the city centre and on nearby side streets.
Activist groups had said on social media that Toulouse would be the focus for the 22nd round of demonstrations, prompting city mayor Jean-Claude Moudenc to express concern ahead of Saturday's protests.
Marches in Paris and elsewhere were largely peaceful by early afternoon, but the protests continue to put pressure on Macron. He has vowed to announce a series of measures aimed at easing discontent in the country.
The protests, named after the high-visibility safety jackets worn by demonstrators, began in November to oppose fuel tax increases.
However, the movement quickly morphed into a broader backlash against Macron's government, despite a swift reversal of the tax hikes and other hurried measures worth more than €10 billion to boost purchasing power for lower-income voters.
In response to rioting that made parts of Paris resemble war zones, Macron launched two months of town hall-style debates.
Macron is due to introduce specific measures early next week.
Outlining the findings of the debate initiative, Prime Minister Edouard Philippe said this week that it had highlighted demands including quicker tax cuts, action to address climate change and closer ties between Paris and the provinces.