在 InDesign 中是否可以查找大写字母并将其更改为小写字母?

平面设计 土坯设计 文本 排版
2022-02-20 10:57:02

有没有办法在 InDesign 中查找和更改某种字符样式的大写字母并将它们更改为小写?

4个回答

是的!首先,确定字体有大写和小写。然后,突出显示要转换的文本。从顶部菜单中找到Type -> Change Case -> lowercase

这是你要问的吗?

或者

如果您需要查找特定内容,可以尝试查找/更改功能...从顶部菜单中找到Edit -> Find/Change(或使用键盘快捷键+ F

它会拉出一个看起来像这样的面板......并且稍微玩一下,您就可以熟悉它的令人敬畏的能力。

在此处输入图像描述

除了通过脚本,InDesign 没有办法在全局搜索/替换中强制小写,正如您毫无疑问地发现的那样。

解决此问题的一种略低于手动的方法是Find/Change与键盘结合使用。

自动化部分是使用 GREP 搜索该字符样式中的任何大写字符。手动部分是直接输入小写字母,覆盖找到的字符。幸运的是,Find/Change它是非模态的,因此您不必跳入跳出即可进行文本更改。

  • 在“搜索/替换”对话框中,选择 GREP 选项卡。单击旁边的图标Find Format并选择要定位的字符样式。

  • Find What?enter\u+中,它查找任何连续的大写字母序列。

  • 单击Find Next这将突出显示该字符样式中的第一个大写字符。键入等效的小写字母或使用Type > Change Case > lowercase. 重复直到到达文档的末尾。

为您选择的类型-->更改大小写-->选项分配快捷方式很有帮助。这样你就可以输入你的搜索字符串,然后当它突出显示它时,你只需点击键盘组合,然后点击下一个查找并继续。

我正在使用(是的,它已经过时了)CS5,Peter Kahrel 的以下脚本效果很好。

  1. 复制并粘贴脚本并将其保存到useful_filename.jsx位于 InDesign 的脚本目录中(我个人将其放在该Scripts Panel目录中)。

  2. 您必须在“搜索/查找”对话框中设置搜索参数。注意:这仅适用于搜索。不会有替换事件。我发现首先执行搜索+替换事件很有帮助,为结果分配一些虚拟样式,然后设置搜索以查找该虚拟样式。

  3. 该脚本没有标题大小写选项。它可以很容易地添加。但是CS5的Title Case转换是一堆烂苹果,所以我不认为它是一种损失。

设置搜索参数后,运行脚本,选择选项,然后使用它(不是搜索/查找对话框)来完成操作。鲍勃是你的叔叔。

// Change case interactively. Find/change options should be set in InDesign's Find/Change window.

// Peter Kahrel -- www.kahrel.plus.com

#targetengine "change_case";

create_palette().show();

function create_palette ()
{
var w = Window.find ("palette", "Change case");
if (w === null)
    return create_palette_sub ();
return w;
}


function create_palette_sub ()
{
var changetype;
var w = new Window ("palette", "Change case", undefined, {resizeable: true});
    w.alignChildren = "fill";
    var options = [ChangecaseMode.lowercase, ChangecaseMode.uppercase, ChangecaseMode.sentencecase];
    var rb = w.add ("panel");
        var upper_to_lower = rb.add ("radiobutton", undefined, "A > a");
        var lower_to_upper = rb.add ("radiobutton", undefined, "a > A");
        var upper_to_sentence = rb.add ("radiobutton", undefined, "AB > Ab");
    var smallcaps = w.add ("checkbox", undefined, " Apply SmallCaps");
    var b = w.add ("group {orientation: 'column', alignChildren: 'fill'}");

    var find = b.add ("button", undefined, "Find");
    var change = b.add ("button", undefined, "Change");
    var change_all = b.add ("button", undefined, "Change all");
    var change_find = b.add ("button", undefined, "Change/find");


    if (app.findGrepPreferences.findWhat.indexOf ("\\u") > -1)
        {
        upper_to_lower.value = true;
        changetype = ChangecaseMode.lowercase;
        }
    else
        {
        lower_to_upper.value = true;
        changetype = ChangecaseMode.uppercase;
        }

    upper_to_lower.onClick = function () {changetype = ChangecaseMode.lowercase};
    lower_to_upper.onClick = function () {changetype = ChangecaseMode.uppercase};
    upper_to_sentence.onClick = function () {changetype = ChangecaseMode.sentencecase};

    var found, found_counter;

    find.onClick = function () {
        if (this.text === 'Find') {
            found = app.documents[0].findGrep();
            if (found.length > 0){
                found_counter = 0;
                find.text = 'Find next';
                show_found (found[found_counter]);
            } else {
                alert ("No (more) matches found.");
            }
        } else {
            found_counter++;
            if (found_counter < found.length){
                show_found (found[found_counter]);
            } else {
                find.text = 'Find';
                alert ("No (more) matches found.");
            }
        }
    }


    change.onClick = function () {
        found[found_counter].changecase(changetype);
        if (smallcaps.value == true) {
            found[found_counter].capitalization = Capitalization.smallCaps;
        }
    }

    change_find.onClick = function (){
        if (found_counter < found.length){
            found[found_counter].changecase(changetype);
            if (smallcaps.value == true) {
                found[found_counter].capitalization = Capitalization.smallCaps;
            }
            found_counter++;
            if (found_counter < found.length){
                show_found (found[found_counter]);
            } else {
                alert ("No (more) matches found.");
            }
        }
    }

    change_all.onClick = function () {
        for (var i = found_counter; i < found.length; i++) {
            found[i].changecase(changetype);
            if (smallcaps.value == true) {
                found[i].capitalization = Capitalization.smallCaps;
            }
        }
    }

    w.onDeactivate = w.onActivate = function () {find.text = 'Find'}

return w;

} // create_palette_sub



function show_found (f)
{
if (f.parentTextFrames.length === 0)  // If in overset text
    {
    app.activeWindow.activePage = find_page(f.parentStory.textContainers[0].endTextFrame);
    }
else
    {
    f.select();
    app.activeWindow.activePage = find_page (f.parentTextFrames[0]);
    }
}


function find_page(o)
{
if (o.hasOwnProperty ("parentPage"))  // CS5 and later
    return o.parentPage;
else
    return find_page_classic(o)
}


function find_page_classic (o)
{
try
    {
    if (o.constructor.name == "Page")
        return o;
    switch (o.parent.constructor.name)
        {
        case "Character": return find_page_classic (o.parent);
        case "Cell": return find_page_classic (o.parent.texts[0].parentTextFrames[0]);
        case "Table" : return find_page_classic (o.parent);
        case "TextFrame" : return find_page_classic (o.parent);
        case "Group" : return find_page_classic (o.parent);
        case "Story": return find_page_classic (o.parentTextFrames[0]);
        case "Footnote": return find_page_classic (o.parent.storyOffset);
        case "Page" : return o.parent;
        }
    }
    catch (_) {return ""}
}