我需要删除标点符号周围(尤其是标点符号之前)的空格。这些空格是由法语多语种添加的。
\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