带 xstring 的案例句子

带 xstring 的案例句子

我有一个 LaTeX 文档,它给出了以下错误:

! Argument of \@xs@IfStrEq@@ has an extra }.

该文件内容如下:

\documentclass{article}


%PAQUETES
%\usepackage[arial,utf8]{coolfont}
\usepackage[fasterrors,graphics]{ucs} % para archivos en formato utf8
\usepackage{inputenc} % letras tal cual: ñ, á, etc.
\usepackage[scaled]{uarial} % fuente arial
%\usepackage{lmodern} % fuentes tipo 1
\usepackage{ifthen,ifpdf,parskip,arrayjobx,xstring,xintexpr}
\usepackage{geometry}


%DEFINICIONES
\newcommand{\dec}{1}
\newcommand{\setDec}[1]{\renewcommand{\dec}{#1}}
\newcommand{\idiActivo}{es}
\newcommand{\setIdiActivo}[1]{\renewcommand{\idiActivo}{#1}}

% Procedimiento en castellano
\newarray\procedimientoEs
\procedimientoEs(1)={procedimento de provisión de puestos\xspace}%autonómico m
\procedimientoEs(2)={PROCEDIMENTO DE PROVISIÓN DE PUESTOS\xspace}%autonómico y
\procedimientoEs(3)={Procedimento de Provisión de Puestos\xspace}%autonómico t
\procedimientoEs(4)={Procedimento de provisión de puestos\xspace}%autonómico f
\procedimientoEs(5)={concurso de traslados\xspace}%nacional m
\procedimientoEs(6)={CONCURSO DE TRASLADOS\xspace}%nacional y
\procedimientoEs(7)={Concurso de Traslados\xspace}%nacional t
\procedimientoEs(8)={Concurso de traslados\xspace}%nacional f

% Procedimiento en valenciano.
\newarray\procedimientoVa
\procedimientoVa(1)={procediment de provisió de llocs de treball\xspace}%autonómico m
\procedimientoVa(2)={PROCEDIMENT DE PROVISIÓ DE LLOCS DE TREBALL\xspace}%autonómico y
\procedimientoVa(3)={Procediment de Provisió de Llocs de Treball\xspace}%autonómico t
\procedimientoVa(4)={Procediment de provisió de llocs de treball\xspace}%autonómico f
\procedimientoVa(5)={concurs de trasllats\xspace}%nacional m
\procedimientoVa(6)={CONCURS DE TRASLLATS\xspace}%nacional y
\procedimientoVa(7)={Concurs de Trasllats\xspace}%nacional t
\procedimientoVa(8)={Concurs de trasllats\xspace}%nacional f

% Concurso actual
\newcommand{\concursoAct}{A}% valores posibles: A, N
\newcommand{\setConcursoAct}[1]{\renewcommand{\concursoAct}{#1}}

% Concurso anterior
\newcommand{\concursoAnt}{%
  \IfStrEqCase{\concursoAct}{%
    {A}{N}%
    {N}{A}%
  }%
}

\newcommand{\procAnt}[1][m]{%#1: modo
  \IfStrEqCase{\idiActivo}{%
  {es}{\IfStrEqCase{\concursoAnt}{%
       {A}{\IfStrEqCase{#1}{%
           {m}{\procedimientoEs(1)}%
           {y}{\procedimientoEs(2)}%
           {t}{\procedimientoEs(3)}%
           {f}{\procedimientoEs(4)}%
           }%
          }%
       {N}{\IfStrEqCase{#1}{%
           {m}{\procedimientoEs(5)}%
           {y}{\procedimientoEs(6)}%
           {t}{\procedimientoEs(7)}%
           {f}{\procedimientoEs(8)}%
           }%
          }%
       }%
      }%
  {va}{\IfStrEqCase{\concursoAnt}{%
       {A}{\IfStrEqCase{#1}{%
           {m}{\procedimientoVa(1)}%
           {y}{\procedimientoVa(2)}%
           {t}{\procedimientoVa(3)}%
           {f}{\procedimientoVa(4)}%
           }%
          }%
       {N}{\IfStrEqCase{#1}{%
           {m}{\procedimientoVa(5)}%
           {y}{\procedimientoVa(6)}%
           {t}{\procedimientoVa(7)}%
           {f}{\procedimientoVa(8)}%
           }%
          }%
       }%
      }%
  }%
}


%CONFIGURACION
\renewcommand{\familydefault}{\sfdefault}
\inputencoding{utf8x}
\geometry{a4paper,bindingoffset=0pt,margin=1in,headsep=.5in}


%DOCUMENTO
\begin{document}
\concursoAnt

\procAnt
\end{document}

我不知道错误可能出在哪里。欢迎任何帮助

答案1

您正在尝试\concursoAntA或进行比较N,但它是

\newcommand{\concursoAnt}{%
  \IfStrEqCase{\concursoAct}{%
    {A}{N}%
    {N}{A}%
  }%
}

这意味着它是一组用于生产 或A的指令N

这是一个可能的解决方案:\concursoAnt宏定义一个新的宏,并将其作为第一步调用\procAnt

\documentclass{article}

%PAQUETES
\usepackage[utf8]{inputenc} % letras tal cual: ñ, á, etc.
\usepackage{ifthen,ifpdf,parskip,arrayjobx,xstring,xintexpr}

%DEFINICIONES
\newcommand{\dec}{1}
\newcommand{\setDec}[1]{\renewcommand{\dec}{#1}}
\newcommand{\idiActivo}{es}
\newcommand{\setIdiActivo}[1]{\renewcommand{\idiActivo}{#1}}

% Procedimiento en castellano
\newarray\procedimientoEs
\procedimientoEs(1)={procedimento de provisión de puestos}%autonómico m
\procedimientoEs(2)={PROCEDIMENTO DE PROVISIÓN DE PUESTOS}%autonómico y
\procedimientoEs(3)={Procedimento de Provisión de Puestos}%autonómico t
\procedimientoEs(4)={Procedimento de provisión de puestos}%autonómico f
\procedimientoEs(5)={concurso de traslados}%nacional m
\procedimientoEs(6)={CONCURSO DE TRASLADOS}%nacional y
\procedimientoEs(7)={Concurso de Traslados}%nacional t
\procedimientoEs(8)={Concurso de traslados}%nacional f

% Procedimiento en valenciano.
\newarray\procedimientoVa
\procedimientoVa(1)={procediment de provisió de llocs de treball}%autonómico m
\procedimientoVa(2)={PROCEDIMENT DE PROVISIÓ DE LLOCS DE TREBALL}%autonómico y
\procedimientoVa(3)={Procediment de Provisió de Llocs de Treball}%autonómico t
\procedimientoVa(4)={Procediment de provisió de llocs de treball}%autonómico f
\procedimientoVa(5)={concurs de trasllats}%nacional m
\procedimientoVa(6)={CONCURS DE TRASLLATS}%nacional y
\procedimientoVa(7)={Concurs de Trasllats}%nacional t
\procedimientoVa(8)={Concurs de trasllats}%nacional f

% Concurso actual
\newcommand{\concursoAct}{A}% valores posibles: A, N
\newcommand{\setConcursoAct}[1]{\renewcommand{\concursoAct}{#1}}

% Concurso anterior
\newcommand{\concursoAnt}{%
  \IfStrEqCase{\concursoAct}{%
    {A}{\def\concursoValue{N}}%
    {N}{\def\concursoValue{A}}%
  }%
}

\newcommand{\procAnt}[1][m]{%#1: modo
  \concursoAnt % set \concursoValue
  \IfStrEqCase{\idiActivo}{%
  {es}{\IfStrEqCase{\concursoValue}{%
       {A}{\IfStrEqCase{#1}{%
           {m}{\procedimientoEs(1)}%
           {y}{\procedimientoEs(2)}%
           {t}{\procedimientoEs(3)}%
           {f}{\procedimientoEs(4)}%
           }%
          }%
       {N}{\IfStrEqCase{#1}{%
           {m}{\procedimientoEs(5)}%
           {y}{\procedimientoEs(6)}%
           {t}{\procedimientoEs(7)}%
           {f}{\procedimientoEs(8)}%
           }%
          }%
       }%
      }%
  {va}{\IfStrEqCase{\concursoValue}{%
       {A}{\IfStrEqCase{#1}{%
           {m}{\procedimientoVa(1)}%
           {y}{\procedimientoVa(2)}%
           {t}{\procedimientoVa(3)}%
           {f}{\procedimientoVa(4)}%
           }%
          }%
       {N}{\IfStrEqCase{#1}{%
           {m}{\procedimientoVa(5)}%
           {y}{\procedimientoVa(6)}%
           {t}{\procedimientoVa(7)}%
           {f}{\procedimientoVa(8)}%
           }%
          }%
       }%
      }%
  }%
}

%DOCUMENTO
\begin{document}

\procAnt

\procAnt[y]

\procAnt[t]

\procAnt[f]

\setConcursoAct{N}

\procAnt

\procAnt[y]

\procAnt[t]

\procAnt[f]

\end{document}

在此处输入图片描述

请注意,我删除了ucs赞成的utf8。无论如何,你必须在定义字符串之前设置输入编码,否则从 UTF-8 到 LaTeX 命令的转换将不起作用。


这是一个不同的界面,使用expl3

\documentclass{article}

%PAQUETES
\usepackage[utf8]{inputenc} % letras tal cual: ñ, á, etc.
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\concurso}{O{}m}
 {
  \group_begin:
  \keys_set:nn { delgado/concurso } { #1 }
  \delgado_print_competition_title:n { #2 }
  \group_end:
 }

\keys_define:nn { delgado/concurso }
 {
  language .tl_set:N   = \l_delgado_competition_language_tl,
  local    .bool_set:N = \l_delgado_competition_national_bool,
  local    .default:n  = false,
  national .bool_set:N = \l_delgado_competition_national_bool,
  national .default:n  = true,
  language .initial:n  = es,
  national .initial:n  = true,
 }

\prop_new:N \g_delgado_competition_titles_prop

% Procedimiento en castellano
\prop_gput:Nnn \g_delgado_competition_titles_prop { es a m }
 {procedimento ~ de ~ provisión ~ de ~ puestos}%autonómico m
\prop_gput:Nnn \g_delgado_competition_titles_prop { es a y }
 {PROCEDIMENTO ~ DE ~ PROVISIÓN ~ DE ~ PUESTOS}%autonómico y
\prop_gput:Nnn \g_delgado_competition_titles_prop { es a t }
 {Procedimento ~ de ~ Provisión ~ de ~ Puestos}%autonómico t
\prop_gput:Nnn \g_delgado_competition_titles_prop { es a f }
 {Procedimento ~ de ~ provisión ~ de ~ puestos}%autonómico f
\prop_gput:Nnn \g_delgado_competition_titles_prop { es n m }
 {concurso ~ de ~ traslados}%nacional m
\prop_gput:Nnn \g_delgado_competition_titles_prop { es n y }
 {CONCURSO ~ DE ~ TRASLADOS}%nacional y
\prop_gput:Nnn \g_delgado_competition_titles_prop { es n t }
 {Concurso ~ de ~ Traslados}%nacional t
\prop_gput:Nnn \g_delgado_competition_titles_prop { es n f }
 {Concurso ~ de ~ traslados}%nacional f

% Procedimiento en valenciano
\prop_gput:Nnn \g_delgado_competition_titles_prop { va a m }
 {procediment ~ de ~ provisió ~ de ~ llocs ~ de ~ treball}%autonómico m
\prop_gput:Nnn \g_delgado_competition_titles_prop { va a y }
 {PROCEDIMENT ~ DE ~ PROVISIÓ ~ DE ~ LLOCS ~ DE ~ TREBALL}%autonómico y
\prop_gput:Nnn \g_delgado_competition_titles_prop { va a t }
 {Procediment ~ de ~ Provisió ~ de ~ Llocs ~ de ~ Treball}%autonómico t
\prop_gput:Nnn \g_delgado_competition_titles_prop { va a f }
 {Procediment ~ de ~ provisió ~ de ~ llocs ~ de ~ treball}%autonómico f
\prop_gput:Nnn \g_delgado_competition_titles_prop { va n m }
 {concurs ~ de ~ trasllats}%nacional m
\prop_gput:Nnn \g_delgado_competition_titles_prop { va n y }
 {CONCURS ~ DE ~ TRASLLATS}%nacional y
\prop_gput:Nnn \g_delgado_competition_titles_prop { va n t }
 {Concurs ~ de ~ Trasllats}%nacional t
\prop_gput:Nnn \g_delgado_competition_titles_prop { va n f }
 {Concurs ~ de ~ trasllats}%nacional f

\cs_new_protected:Nn \delgado_print_competition_title:n
 {
  \prop_get:Nx \g_delgado_competition_titles_prop
   {
    \l_delgado_competition_language_tl % language string
    \bool_if:NTF \l_delgado_competition_national_bool { n } { a } % local or national
    #1 % mytf
   }
 }
\cs_generate_variant:Nn \prop_get:Nn { Nx }
\ExplSyntaxOff

%DOCUMENTO
\begin{document}

\concurso{m}

\concurso{y}

\concurso{t}

\concurso{f}

\concurso[local]{m}

\concurso[local,language=va]{y}

\end{document}

在此处输入图片描述

相关内容