\url 안의 \소문자

\url 안의 \소문자

이 스니펫이 있는 이유는 다음과 같습니다.

\newcommand{\Subject}{Skeleton}
\url{http://www.cheatsheet.jim.pm?subject=\lowercase{\Subject{}}}

이걸로 렌더링됐어?

http://www.cheatsheet.jim.pm?subject=\lowercase{Skeleton}

그리고~ 아니다의도한 것:

http://www.cheatsheet.jim.pm?subject=skeleton

답변1

\lowercase(및 {})은 확장할 수 없으므로 실행 순서를 변경해야 합니다.

\documentclass{article}
\usepackage{url}

\newcommand{\Subject}{Skeleton}

\newcommand\lcURL[1]{%
  \edef\tmp{\lowercase{\noexpand\url{http://www.cheatsheet.jim.pm?subject=#1}}}%
  \tmp}

\begin{document}


\lcURL{\Subject}

\end{document}

공간을 제거해야 하는 경우 사용해야 합니다.확장당신이 방해하지 않을 경우에만 \url. 다행히 LaTeX에는 확장을 통해 공백을 제거하는 내장 명령이 있습니다.

\newcommand{\Subject}{Skeleton bones}
\makeatletter
\newcommand\lcURL[1]{%
  \edef\tmp{\lowercase{\noexpand\url{http://www.cheatsheet.jim.pm?subject=\zap@space#1 \@empty}}}%
  \tmp}
\makeatother

생산하다

http://www.cheatsheet.jim.pm?subject=skeletonbones

답변2

\StrSubstitute이 맥락에서 어떻게 사용할 수 있는지 보려면 다음을 수행하십시오 .

\documentclass{article}
\usepackage{url,xstring}

\newcommand{\Subject}{Ske Le Ton}

\newcommand\lcURL[1]{%
  \begingroup
  \StrSubstitute{#1}{ }{}[\tmp]%
    \edef\tmp{%
      \lowercase{%
        \endgroup
        \noexpand\url{http://www.cheatsheet.jim.pm?subject=\tmp}%
      }%
    }%
  \tmp
}

\begin{document}

X\lcURL{\Subject}X

X\url{http://www.cheatsheet.jim.pm?subject=skeleton}X

\end{document}

를 사용하면 \begingroup사용 후 \endgroup정의가 사라지는 것을 확인합니다 \tmp.

여기에 이미지 설명을 입력하세요

관련 정보