将 Unicode 不可拆分空格替换为普通空格

将 Unicode 不可拆分空格替换为普通空格

我使用的是 Neo 键盘布局,它使用各种修饰键来输入各种字符(例如希腊字母和数学符号)。它还将 shift+Mod3+space 映射到 Unicode 0A,无间断空格。有时我会错误地按下这些按钮(在使用相同修饰键输入其他符号之间的空格时)。

不幸的是,[Lua|Xe]TeX 将这些空格视为不可中断的空格,无论是在普通文本中还是在数学模式中(使用fontspecunicode-math)。但是我的编辑器(vim)将该符号显示为普通空格,因此无法看到我犯了什么错误。

有没有简单的方法可以告诉 [Lua|Xe]TeX 将不间断空格视为普通空格?

答案1

\usepackage{newunicodechar}
\newunicodechar{ }{ }

在第一个参数中,你输入一个不间断空格 (U+00A0),在第二个参数中输入一个普通空格。更好的定义是

\newunicodechar{ }{~}

(再次强调,这个空格是不可中断空格),因此这个不可中断空格将随行中其他空格一起拉伸或收缩。当然,如果您想要一个普通空格,请使用第一个,无所畏惧。 :)

答案2

另一个解决方案是更改 vim 设置,以便您可以看到不可破坏的空间。

set listchars=nbsp:¬
set list

您可以设置适当的语法高亮来NonText突出显示不可破坏的空格。

答案3

有时您可能想使用实际的不间断空格。因此将它们全部变成普通空格可能不是最好的主意。在这种情况下,Aditya 的解决方案是一个好的开始。但我不喜欢我的缩进显示为^I

以下颜色表示不间断空格格维姆

hi NoBreakSpace guibg=LightGoldenrod1 guifg=black
syn match NoBreakSpace / / containedin=ALL
syn match NoBreakSpace / / containedin=ALL

您还可以使用隐藏功能执行类似操作set list,并将正常模式下显示的字符替换为

hi Conceal guibg=LightGoldenrod1 guifg=black
syn match WhiteSpace / / containedin=ALL conceal cchar=⍽
syn match WhiteSpace / / containedin=ALL conceal cchar=¦
setl conceallevel=2 concealcursor=nv

.vim/after/ftplugin/tex/<某个名称>.vim

这也会显示$\alpha^{+1}$α⁺¹。如果你不喜欢这些其他隐藏功能,你可以使用以下方法禁用它们

let g:tex_conceal = ""

在你的.vimrc。 比较:help tex-conceal

答案4

您还可以执行以下操作:

进入命令模式在 vim 中点击ESC,这样您输入的内容就会出现在屏幕底部的特殊命令行中。

搜索:

直接输入/您要搜索的内容,然后按回车键向前搜索。

要向后搜索,请使用?而不是/

要向前重复搜索,只需按n,要向后重复搜索,按N

要突出显示搜索结果,请使用:set hls(突出显示搜索)或添加set hls到您的vimrc以永久打开它。

代替:

再次命令模式语法是::[where] s/Searchpattern/Substitution/[Flags]

:22,150 s/a/z/ ca这将用z从行22到行150以及末尾的替换(第一次出现的)c意味着 vim 每次在应用替换之前都会询问你。

:1,$ s/a/z/ a将从文档的第一行到最后一行进行相同的替换,并且a末尾的 表示无需询问即可进行替换。

:% s/a/z/ g %1,$是and的快捷方式,g表示 vim 将应用替换全球— 替换它在一行中找到的所有出现的位置,否则它可能只替换第一次出现的位置。

这些regular expressions非常强大。

要了解有关此内容的更多信息尝试一下:help substitute(您可以通过 留下帮助:q)。


:set hls

:%s/ / /gc

相关内容