删除标点符号前的空格

删除标点符号前的空格

我需要删除标点符号周围(尤其是标点符号之前)的空格。这些空格是由法语多语种添加的。

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{french}

\newcommand{\nospace}[1]{\texttt{#1}}

\begin{document}
\nospace{a:b}
\end{document}

删除的空间

感谢帮助。

答案1

这是另一种解决方案,无需额外的包。

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{french}

\makeatletter
\newcommand{\nospace}[1]{\nofrench@punctuation\texttt{#1}\french@punctuation}
\makeatother

\begin{document}
\nospace{a:b}
\end{document}

谢谢大家。

答案2

也许 Polyglossia 应该提供在特定语境(例如等宽文本)中禁用法语自动空格功能的可能性。不过,您可以按照以下方法操作:

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{xpatch}

\setmainlanguage{french}

\xapptocmd\ttfamily{\XeTeXinterchartokenstate=0 }{}{}

\newcommand{\nospace}[1]{\texttt{#1}}

\begin{document}
\nospace{a:b}
\end{document}

在此处输入图片描述

一个可能更好的解决方法是使用\nofrench@punctuation您发现的方法:

\documentclass{article}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{xpatch}

\makeatletter
\xapptocmd\ttfamily{\nofrench@punctuation}{}{}
\makeatother

\setmainlanguage{french}

\newcommand{\nospace}[1]{\texttt{#1}}

\begin{document}
\nospace{a:b}
\end{document}

这确实考虑到了使用 LuaLaTeX 而不是 XeLaTeX 的可能。

答案3

我认为最简单的方法是使用 \string:

a\string:b

相关内容