LaTeX自定义\newcommand整合语言切换与文本颜色问题求助
自定义LaTeX命令中的多余花括号及优化建议
你的\ru命令确实可以正常运行,但代码里存在几处多余的花括号,同时还有可以优化的地方,以下是具体分析和改进方案:
多余的花括号分析
自定义命令
\ru中的嵌套括号
原命令:\newcommand{\ru}[1]{\selectlanguage{russian}{\color{myblue}{#1}}}其中
{\color{myblue}{#1}}里,#1外层的花括号是多余的——\color命令的作用范围可以直接通过参数组限定,写成\color{myblue}{#1}就足够,不需要额外给\color{...}{#1}再套一层括号。文档中手动切换语言的代码块
你开头那段手动写的代码:\selectlanguage{russian}% {\color{myblue}{ ... % 俄语文本 }}这里
\color{myblue}外层的花括号也是多余的,直接把文本包含在同一组里即可。
更规范的命令优化
另外需要注意:\selectlanguage是全局语言切换命令,虽然放在花括号里能通过组的作用恢复语言,但更适合局部语言切换的命令是\foreignlanguage,它专门用于局部文本的语言切换,语义更清晰,也避免潜在的全局影响。
优化后的自定义命令可以写成:
\newcommand{\ru}[1]{\foreignlanguage{russian}{\color{myblue}#1}}
这里\color{myblue}#1的写法已经足够,因为#1作为命令的参数,本身会被当作一个整体,颜色只会作用在#1的内容上。
完整优化后的代码
\documentclass{scrartcl} \usepackage[ngerman,english,russian,main=french]{babel} \usepackage{xcolor} \definecolor{myblue}{rgb}{0.25,0.45,0.75} \usepackage{blindtext} % 优化后的自定义命令 \newcommand{\ru}[1]{\foreignlanguage{russian}{\color{myblue}#1}} \begin{document} % 手动写法的优化版本 {\foreignlanguage{russian}\color{myblue} В начале июля, в чрезвычайно жаркое время, под вечер, один молодой человек вышел из своей каморки, которую нанимал от жильцов в С -- м переулке, на улицу и медленно, как бы в нерешимости, отправился к К -- ну мосту. Он благополучно избегнул встречи с своею хозяйкой на лестнице. Каморка его приходилась под самою кровлей высокого пятиэтажного дома и походила более на шкаф, чем на квартиру. Квартирная же хозяйка его, у которой он нанимал эту каморку с обедом и прислугой, помещалась одною лестницей ниже, в отдельной квартире, и каждый раз, при выходе на улицу, ему непременно надо было проходить мимо хозяйкиной кухни, почти всегда настежь отворенной на лестницу. И каждый раз молодой человек, проходя мимо, чувствовал какое-то болезненное и трусливое ощущение, которого стыдился и от которого морщился. Он был должен кругом хозяйке и боялся с нею встретиться.} \blindtext{} \ru{ В начале июля, в чрезвычайно жаркое время, под вечер, один молодой человек вышел из своей каморки, которую нанимал от жильцов в С -- м переулке, на улицу и медленно, как бы в нерешимости, отправился к К -- ну мосту. Он благополучно избегнул встречи с своею хозяйкой на лестнице. Каморка его приходилась под самою кровлей высокого пятиэтажного дома и походила более на шкаф, чем на квартиру. Квартирная же хозяйка его, у которой он нанимал эту каморку с обедом и прислугой, помещалась одною лестницей ниже, в отдельной квартире, и каждый раз, при выходе на улицу, ему непременно надо было проходить мимо хозяйкиной кухни, почти всегда настежь отворенной на лестницу. И каждый раз молодой человек, проходя мимо, чувствовал какое-то болезненное и трусливое ощущение, которого стыдился и от которого морщился. Он был должен кругом хозяйке и боялся с нею встретиться.} \blindtext{} \end{document}
内容的提问来源于stack exchange,提问作者Marek Stepanek
相关产品推荐
相关产品推荐

