
NewDocumentCommand
글꼴 색상(파란색, 빨간색), 글꼴 크기(12pt, 18pt, 크게, 크게), 글꼴 스타일(굵게, 기울임꼴, 굵은+기울임꼴)과 같은 선택적 인수를 사용하는 을 만들고 싶습니다 .볼드체 및 이탤릭체와 같은 키워드 옵션을 설정하는 방법은 무엇입니까?
@egreg의 답변을 바탕으로 다음 코드를 구성했습니다.338364/xparse-processor-with-multiple-arguments. xcolor 패키지의 색상 키워드와 pt의 글꼴 크기를 사용하여 색상과 글꼴 크기를 작동시킬 수 있었지만 글꼴 스타일에 대한 선택적 키워드를 설정하는 최선의 방법을 잘 모르겠습니다(예: 굵은 글씨의 경우 bf, 이탤릭체로 표시됩니다). 아마도 로 조건을 정할 생각이지만 \IfValueT
실험하기 전에 조언을 환영합니다. 당연히 이 명령이 수학을 사용하고 색상을 지정할 수 있다면 좋을 것입니다. 그러나 그것이 너무 욕심스럽다면 텍스트와 함께 작동하는 명령으로 만족하겠습니다.
\documentclass{article}
\usepackage{xparse,xcolor}
\usepackage{verbatim}
\ExplSyntaxOn
\keys_define:nn { mystyle }
{
color .tl_set:N = \l__mystyle_color_tl,
size .tl_set:N = \l__mystyle_size_tl,
skip .tl_set:N = \l__mystyle_skip_tl,
color .initial:n = red,
size .initial:n = 12pt,
skip .initial:n = 14.5pt,
}
\NewDocumentCommand{\stress}{O{}m}
{
\group_begin:
\keys_set:nn { mystyle } { #1 }
\clist_map_inline:nn { #2 }
{
\mystyle:VVVn
\l__mystyle_color_tl
\l__mystyle_size_tl
\l__mystyle_skip_tl
{##1}
}
\group_end:
}
\cs_new_protected:Nn \mystyle:nnnn
{
\color{#1}\fontsize{#2}{#3}\selectfont#4
}
\cs_generate_variant:Nn \mystyle:nnnn { VVV }
\ExplSyntaxOff
\begin{document}
\stress{emphasize this sentence with default values}
\stress[color=green,size=18pt]{emphasize this sentence with custom values}
\stress[color=blue,size=10pt,skip=50pt]{\textit{emphasize this sentence with custom values}}
Could I modify the command to:
\verb|\stress[style=it]{blabla}| to select italic,
\verb|\stress[style=bf]{blabla}| to select bold,
\verb|\stress[style=bfit]{blabla}| to select bold+italic
or even \verb|\stress[style=bf+it]{blabla}| to combine styles...
\end{document}
(skip 인수는 작동하지 않는 것 같지만 자신이 무엇을 하고 있는지 아는 사람에게는 쉬운 수정일 것이라고 생각합니다! 어쩌면 일종의 휴가 모드가 누락되었을 수도 있습니다...)
답변1
키 를 정의하고 싶습니다 .choice:
.
\RequirePackage{fix-cm}
\documentclass{article}
\usepackage{xcolor}
\usepackage{verbatim}
\ExplSyntaxOn
\tl_new:N \l__mystyle_style_tl
\keys_define:nn { mystyle }
{
color .tl_set:N = \l__mystyle_color_tl,
size .tl_set:N = \l__mystyle_size_tl,
skip .tl_set:N = \l__mystyle_skip_tl,
style .choice:,
style/it .code:n = \tl_set:Nn \l__mystyle_style_tl { \itshape },
style/bf .code:n = \tl_set:Nn \l__mystyle_style_tl { \bfseries },
style/bfit .code:n = \tl_set:Nn \l__mystyle_style_tl { \bfseries\itshape },
style/unknown .code:n = \tl_set:Nn \l__mystyle_style_tl { #1 },
color .initial:n = red!75,
size .initial:n = 12pt,
skip .initial:n = 14.5pt,
}
\NewDocumentCommand{\stress}{O{}m}
{
\group_begin:
\keys_set:nn { mystyle } { #1 }
\mystyle:VVVVn
\l__mystyle_color_tl
\l__mystyle_size_tl
\l__mystyle_skip_tl
\l__mystyle_style_tl
{#2}
\group_end:
}
\cs_new_protected:Nn \mystyle:nnnnn
{
\leavevmode\color{#1}\fontsize{#2}{#3}#4\selectfont#5
}
\cs_generate_variant:Nn \mystyle:nnnnn { VVVV }
\ExplSyntaxOff
\begin{document}
\stress{emphasize this sentence with default values}
\stress[color=green!60!red,size=18pt]{emphasize this sentence with custom values}
\stress[color=blue!80,size=10pt,skip=50pt,style=it]{emphasize this sentence with custom values}
\stress[style=it]{blabla}
\stress[style=bf]{blabla}
\stress[style=bfit]{blabla}
\stress[style=\scshape]{blabla}
\end{document}
가능한 조합을 미리 정의해야 하지만 일반적인 글꼴 명령으로 표현되는 다른 스타일에 대해서도 작업을 수행하는 것이 가능합니다.
원치 않는 효과를 피하기 위해 \leavevmode
before 를 추가했습니다 .\color