\foreach
나는 형식 목록을 단축하기 위해 tikz의 루프를 사용하려고 했습니다 . 각 수식 내에서는 인덱스만 변경되므로 환경 foreach
내에서 사용할 수 있다고 생각하여 align
각 수식을 한 줄에 작성했습니다. \\
뒤에 줄 바꿈을 제거하지 않으면 작동하지 않습니다 r^2
. 내에서 줄 바꿈을 사용하는 방법이 있습니까 foreach
?
\documentclass[10pt]{article}
\usepackage{tikz} % for foreach
\usepackage{amsmath} % for align
\begin{document}
\begin{align*}
\foreach \i in {1,2,3}{ (x_\i - x_c)^2 + (y_\i - y_c)^2 = r^2 \\ }
\end{align*}
\end{document}
답변1
복사-붙여넣기를 사용하는 간단한 작업을 위해 큰 망치를 사용하고 있습니다. 어쨌든, 이것은 적어도 두 가지 이유로 작동할 수 없습니다. 모든 주기의 코드가 \foreach
그룹에서 실행되고 와 align
동일한 테이블을 구축 tabular
하므로 각 셀도 그룹을 형성합니다.
\foreach
각 주기를 그룹으로 묶지 않더라도 셀에 걸쳐 있을 수는 없습니다 .
너~할 수 있었다하다
\documentclass[10pt]{article}
\usepackage{pgffor} % for foreach
\usepackage{amsmath} % for align
\usepackage{etoolbox}
\newcommand{\aligntemp}{}
\begin{document}
\gdef\aligntemp{}%
\foreach \i in {1,2,3}{%
\xappto\aligntemp{(x_\i - x_c)^2 + (y_\i - y_c)^2 &= r^2 \noexpand\\ }%
}%
\begin{align*}
\aligntemp
\end{align*}
\end{document}
고생할 가치가 있나요? 와 같은 "위험한" 명령에는 (물론 뿐만 아니라 ) \text
접두사가 붙어야 합니다 . 또한 결국에는 원하지 않는 라인이 생성됩니다.\noexpand
\text
\\
더 나은 버전은 다음과 같습니다.
\documentclass[10pt]{article}
\usepackage{xparse}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\mathrepeat}{O{align*}mm}
{
\seq_clear:N \l_flawr_mathrepeat_seq
\clist_map_inline:nn {#2}
{
\seq_put_right:Nn \l_flawr_mathrepeat_seq { #3 }
}
\begin{#1}\seq_use:Nn \l_flawr_mathrepeat_seq { \\ }\end{#1}
}
\seq_new:N \l_flawr_mathrepeat_seq
\ExplSyntaxOff
\begin{document}
\mathrepeat{1,2,3}{
(x_{#1} - x_c)^2 + (y_{#1} - y_c)^2 &= r^2
}
\end{document}
출력은 이전과 동일합니다.
선택적 인수는 \mathrepeat
사용할 환경의 이름입니다. 예를 들어 \mathrepeat[align]{1,2,3}{...}
줄 번호를 매길 것입니다.
\documentclass[10pt]{article}
\usepackage{xparse}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentCommand{\mathrepeat}{O{align*}mm}
{
\seq_clear:N \l_flawr_mathrepeat_seq
\clist_map_inline:nn {#2}
{
\seq_put_right:Nn \l_flawr_mathrepeat_seq { #3 }
}
\begin{#1}\seq_use:Nn \l_flawr_mathrepeat_seq { \\ }\end{#1}
}
\seq_new:N \l_flawr_mathrepeat_seq
\ExplSyntaxOff
\begin{document}
\mathrepeat[align]{1,2,3}{
(x_{#1} - x_c)^2 + (y_{#1} - y_c)^2 &= r^2 \label{myeqs#1}
}
We see in \eqref{myeqs1}--\eqref{myeqs3} that \dots
\end{document}
답변2
\documentclass[10pt]{article}
\usepackage{tikz} % for foreach
\usepackage{amsmath} % for align
\begin{document}
\foreach \i in {1,2,3}{\expandafter\xdef\csname eq\i\endcsname{%
(x_\i - x_c)^2 + (y_\i - y_c)^2 = r^2}}
\begin{align*}
\csname eq1\endcsname\\
\csname eq2\endcsname\\
\csname eq3\endcsname
\end{align*}
\end{document}