Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MS Word search在LaTeX环境中封闭找到的文本&;代替_Search_Replace_Ms Word_Latex_Wildcard - Fatal编程技术网

如何使用MS Word search在LaTeX环境中封闭找到的文本&;代替

如何使用MS Word search在LaTeX环境中封闭找到的文本&;代替,search,replace,ms-word,latex,wildcard,Search,Replace,Ms Word,Latex,Wildcard,我正在做一个项目,我必须把Word文档转换成LaTeX。我现在遇到的一个问题是,我想用相应的LaTeX环境中包含的文本段落替换所有斜体文本段落。为了解决这个问题,我尝试使用通配符。举个例子: 搜索: () 替换: \textit{\1} 示例: test->\textit{test} 现在这个例子有几个问题。首先,只查找单词,但我想查找全文段落。我还不知道怎么做。在replace字段中,Word总是抱怨“\”字符的用法。我简直不能把它放在那里。我已经读到,您需要使用它来排除通配符,所以我尝试使用

我正在做一个项目,我必须把Word文档转换成LaTeX。我现在遇到的一个问题是,我想用相应的LaTeX环境中包含的文本段落替换所有斜体文本段落。为了解决这个问题,我尝试使用通配符。举个例子:

搜索: ()

替换: \textit{\1}

示例:

test->\textit{test}

现在这个例子有几个问题。首先,只查找单词,但我想查找全文段落。我还不知道怎么做。在replace字段中,Word总是抱怨“\”字符的用法。我简直不能把它放在那里。我已经读到,您需要使用它来排除通配符,所以我尝试使用两个后续的通配符,但仍然不起作用


这是我第一次使用通配符,所以我真的没有任何线索。我已经在谷歌上搜索了很多次(顺便说一句,这就是我发现这个网站的原因),但我就是不知道怎么做。

在对你的问题进行了多次排序后,我终于相信我理解了你的问题,答案是,单靠查找/替换是做不到的

使用Format/Font并选择斜体,可以找到所有格式为斜体的连续文本范围。这可以在没有通配符的情况下完成,它将选择具有此格式的所有连续文本(多个单词)

你的问题出现在你想把你发现的东西“放在周围”的时候。这仅在搜索特定术语时才可能。一旦你使用了一个占位符,比如*你就只能替换你找到的,它不能被重复使用。因此,此时需要宏代码

下面的示例搜索斜体,并在该点查找停止点。然后在找到的范围周围插入前后代码,重置要搜索的范围,并循环操作,直到再也找不到斜体

Sub FindReplaceLatex()
    Dim rngSearch As word.Range
    Dim rngFound As word.Range
    Dim sBefore As String, sAfter As String
    Dim bFound As Boolean

    sBefore = "\\textit{"
    sAfter = "}"
    Set rngSearch = ActiveDocument.content
    rngSearch.Find.ClearFormatting
    rngSearch.Find.Font.Italic = True
    Do
        bFound = rngSearch.Find.Execute(wrap:=word.wdFindStop, Format:=True)
        If bFound Then
            Set rngFound = rngSearch.Duplicate
            rngSearch.Collapse wdCollapseEnd
            rngSearch.End = ActiveDocument.content.End
            rngSearch.MoveStart wdCharacter, 1
            rngFound.InsertBefore sBefore
            rngFound.InsertAfter sAfter
        End If
    Loop While bFound
End Sub

您不需要使用通配符或宏。实际上,您甚至不需要指定“Find”文本。您只需要一个普通的Find/Replace,其中指定Font:Italic作为Find参数,对于替换文本,请使用:\texit{^&}

您是否首先阅读了对的所有回复:不清楚您是在Word中还是在其他程序中执行此操作?如果是Word,则不能使用正则表达式。Word有自己的“通配符搜索”模式,您必须使用这些模式。显示“高级”查找对话框,单击“更多”按钮,然后单击特殊按钮(如果激活通配符,列表将更改)。如果你需要更多关于如何使用这些的帮助,请搜索互联网-那里有很多资料。嗨,谢谢你的回复!我还没有读过那个对话,但谢谢你指出。不幸的是,这不是我真正想要的。是的,我正在Word 2013中尝试这样做,我知道通配符搜索是我已经在使用的。正如我所说,我已经在互联网上搜索了很多次,但是我在那里找到的命令(官方命令)不起作用,或者我找不到我想要的。因此,我希望在此领域有经验的人能帮助我解决这个问题,请编辑您的问题,不要使用术语“正则表达式”,因为它与单词通配符不同,并且会被任何了解如何使用Word的查找和通配符的人误解。请解释如何使用“Word总是抱怨\字符的用法“.这封信的确切措辞是什么?哇,太棒了!非常感谢你!听说默认情况下Word不可能做到这一点,我很难过。我真的认为这是件容易的事。老实说,这有点令人失望。特别是因为我现在知道了:在OpenOffice中,这实际上是默认的!在搜索栏中输入斜体格式和“*”(不带“*”)行,在替换栏中输入“\\textit{&}“。这确实有效。尽管如此,我还是会试试看是否能实现您的代码:)因为我昨天发布了一篇文章,我确实遇到了一些让这几乎成为可能的东西。我确实发现它是如何逐字运作的。如果现在或将来有帮助,请使用通配符:查找“替换”^92^92textit{\1}。Find中的括号定义了一个可以在Replace中重用的“表达式”^92指定ANSI字符(反斜杠)\1是Find中重复使用的表达式。哇,是的,这几乎可以做到!这真的很接近。不幸的是,我需要用textit命令替换/附上整个斜体段落,但再次感谢您为此付出的努力!哇,这真的管用!非常感谢。请允许我问一下,为什么在替换文本中可以使用通配符表达式,即使您没有选中该复选框来激活它?我在这里遗漏了什么?@mapf“^&”替换表达式与通配符无关;它是标准的单词Find/Replace表达式,用于在替换中包含找到的文本。有一大堆这样的表达方式,你可以通过展开查找/替换对话框并点击“特殊”按钮看到——查找和替换都有不同的表达方式。我明白了,谢谢。这真是太好了。我从未在任何地方读到过这方面的消息。我觉得这些选项没有很好的文档记录。