Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.24 first-letter Media Specjalna Dyskusja Wikipedysta Dyskusja wikipedysty Wikibooks Dyskusja Wikibooks Plik Dyskusja pliku MediaWiki Dyskusja MediaWiki Szablon Dyskusja szablonu Pomoc Dyskusja pomocy Kategoria Dyskusja kategorii Wikijunior Dyskusja Wikijuniora TimedText TimedText talk Moduł Dyskusja modułu Wydarzenie Dyskusja wydarzenia Mechanika teoretyczna/Równania Lagrange'a drugiego rodzaju i zasada Hamiltona 0 20309 559478 559069 2026-10-16T22:22:25Z Persino 2851 /* Zasada zachowania momentu pędu */ 559478 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> Zajmować będziemy się tutaj równania Lagrange'a drugiego rodzaju, a także zasadą Hamiltona. == Drugiego rodzaju równanie Lagrange'a a współrzędne uogólnione == Wprowadźmy teraz układ, w którym istnieją więzy określone równaniami: {{CentrujWzór|<MATH>g_{\alpha}(\chi_a,t)=0\mbox{ }\alpha=1,2,\dots,r,\;a=1,2,\dots,3N\;</MATH>|6.1}} Zatem mając równania więzów {{LinkWzór|6.1}} możemy napisać przesunięcia wirtualne, a także pochodną czasową prędkości w układzie prostokątnym, wychodząc z definicji różniczki zupełnej rozpisanej poprzez pochodne cząstkowe względem jego argumentów: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\delta\chi_a=\sum_{k=1}^f{{\partial\chi_a}\over{\partial q_k}}\delta q_k\;</MATH>|6.2}} | 2 = {{CentrujWzór|<MATH>\dot{\chi}_a=\sum_{k=1}^f {{\partial\chi_a}\over{\partial q_k}}\dot{q}_k+{{\partial \chi_a}\over{\partial t}}\;</MATH>|6.3}} }} Wyznaczmy pochodną wielkości {{LinkWzór|6.3}} względem prędkości uogólnionej: {{CentrujWzór|<MATH>{{\partial \dot{\chi}_a}\over{\partial \dot{q}_k}}={{\partial\chi_a}\over{\partial q_k}}\;</MATH>|6.4}} Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|6.2}} zasadę d'Alemberta {{LinkWzór|4.8|Ruch_ciał_ograniczonych_więzami}} dla „f” stopni swobody zapisujemy: {{CentrujWzór|<MATH>\sum_{a=1}^{3N}(m_a\ddot{\chi}_a-F_a)\delta\chi_a=\sum_{a=1}^{3N}(m_a\ddot{\chi}_a-F_a)\sum_{k=1}^f{{\partial\chi_a}\over{\partial q_k}}\delta q_k=0\;</MATH>|6.5}} Energię kinetyczną w układzie współrzędnych kartezjańskich możemy wyznaczyć jako sumę energii kinetycznych dla każdej osi z osobna, opisujących daną cząstkę, i sumując względem wszystkich cząstek: {{CentrujWzór|<MATH>T(q_k,\dot{q}_k,t)=\sum_{a=1}^{3N}{{m_a}\over{2}}\dot{\chi}_a^2\;</MATH>|6.6}} Dalej należy policzyć pochodne cząstkowe całkowitej energii kinetycznej {{LinkWzór|6.6}} względem k-tego stopnia swobody współrzędnej uogólnionej oraz względem prędkości uogólnionej: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>{{\partial T}\over{\partial q_k}}=\sum_{a=1}^{3N}m_a\dot{\chi}_a{{\partial\dot{\chi}_a}\over{\partial q_k}}\;</MATH>|6.7}} | 2 = {{CentrujWzór|<MATH>{{\partial T}\over{\partial \dot{q}_k}}=\sum_{a=1}^{3N}m_a\dot{\chi}_a{{\partial\dot{\chi}_a}\over{\partial \dot{q}_k}}\;</MATH>|6.8}} }} Do dalszego przestawienia wzoru {{LinkWzór|6.8}} należy wykorzystać udowodnioną tożsamość z punktu {{LinkWzór|6.4}}: {{CentrujWzór|<MATH>{{\partial T}\over{\partial \dot{q}_k}}=\sum_{a=1}^{3N}m_a\dot{\chi}_a{{\partial\chi_a}\over{\partial q_k}}\;</MATH>|6.9}} Wyznaczmy teraz pierwszą pochodną zupełną wyrażenia {{LinkWzór|6.9}} względem czasu: {{CentrujWzór|<MATH>{{d}\over{dt}}{{\partial T}\over{\partial \dot{q}_k}}=\sum_{a=1}^{3N}m_a\ddot{\chi}_a{{\partial\chi_a}\over{\partial q_k}}+\sum_{a=1}^{3N}m_a\dot{\chi}_a{{\partial\dot{\chi}_a}\over{\partial q_k}}\;</MATH>|6.10}} Ostatni wyraz po prawej stronie {{LinkWzór|6.10}} jest członem występującym w {{LinkWzór|6.7}}, zatem: {{CentrujWzór|<MATH>{{d}\over{dt}}{{\partial T}\over{\partial \dot{q}_k}}=\sum_{a=1}^{3N}m_a\ddot{\chi}_a{{\partial\chi_a}\over{\partial q_k}}+{{\partial T}\over{\partial q_k}}\Rightarrow{{d}\over{dt}}{{\partial T}\over{\partial \dot{q}_k}}-{{\partial T}\over{\partial q_k}}=\sum_{a=1}^{3N}m_a\ddot{\chi}_a{{\partial\chi_a}\over{\partial q_k}}\;</MATH>|6.11}} Końcowy wzór {{LinkWzór|6.11}} podstawiamy do wzoru wynikłego z zasady d'Alemberta: {{CentrujWzór|<MATH>\sum_{k=1}^f\left({{d}\over{dt}}{{\partial T}\over{\partial \dot{q}_k}}-{{\partial T}\over{\partial q_k}}-\sum_{a=1}^{3N}F_a{{\partial \chi_a}\over{\partial q_k}}\right)\delta q_k=0\;</MATH>|6.12}} Wprowadźmy teraz wielkość, którą nazywamy siłą uogólnioną, zapisaną jako sumę względem wskaźnika „a” iloczynu siły Fₐ przez pochodną χₐ względem współrzędnej qₖ: {{CentrujWzór|<MATH>\sum_{a=1}^{3N}F_a{{\partial\chi_a}\over{\partial q_k}}=Q_k\;</MATH>|6.13}} W {{LinkWzór|6.13}} wielkość {{Formuła|<MATH>\sum_{a=1}^{3}{{\partial\chi_a}\over{\partial q_k}}\vec{k}_a={{\partial\vec{r}}\over{\partial q_k}}=\vec{e}_k\left|\left|{{\partial\vec{r}}\over{\partial q_k}}\right|\right|=\vec{e}_k g_k\;</MATH>}}, gdzie {{Formuła|<MATH>\vec{e}_k</MATH>}} jest wersorem w układzie ogólnie krzywoliniowym o bazie ortonormalnej, a {{Formuła|<MATH>g_k=\left|\left|{{\partial\vec{r}}\over{\partial q_k}}\right|\right|\;</MATH>}}, więc: {{CentrujWzór|<MATH>\sum_{a=1}^{3N}F_a{{\partial\chi_a}\over{\partial q_k}}=\sum_{i=1}^N\vec{F}_i\cdot\vec{e}_{ik}g_{ik}=\sum_{i=1}^Ng_{ik}\left(\vec{F}_i,\vec{e}_{ik}\right)=\sum_{i=1}^NQ_{ik}=Q_k</MATH>|F2}} Stąd wielkość {{Formuła|<MATH>Q_k</MATH>}} jest k-tym stopniem swobody wektora siły uogólnionej w układzie ogólnie krzywoliniowym. Widzimy, że siła uogólniona {{Formuła|<MATH>Q_k</MATH>}}, ponieważ zachodzi {{LinkWzór|F2}}, jest addytywna i jest sumą sił uogólnionych od poszczególnych ciał w układzie z więzami. Udowodnijmy addytywność sił uogólnionych, jeżeli na dane ciało działa pewna liczba sił zwykłych: {{CentrujWzór|<MATH>F_{k}=\sum_{i}F_{ik}\Rightarrow Q_{k}=\sum_{a=1}^{3N}\sum_{i}F_{ia}{{\partial\chi_a}\over{\partial q_k}}=\sum_{i}\sum_{a=1}^{3N}F_{ia}{{\partial\chi_a}\over{\partial q_k}}=\sum_i Q_{ik}\Rightarrow Q_k=\sum_iQ_{ik}\;</MATH>|F3}} A więc k-ty stopień swobody siły uogólnionej działającej na układ jest sumą wszystkich k-tych stopni swobody sił uogólnionych, nawet tych działających na jedno ciało w liczbie większej niż jeden, w układzie ogólnie krzywoliniowym. Równanie {{LinkWzór|6.12}} jest spełnione dla dowolnego przesunięcia wirtualnego współrzędnej uogólnionej qₖ przy definicji siły uogólnionej {{LinkWzór|6.13}}: {{CentrujWzór|<MATH>{{d }\over{dt}}{{\partial T}\over{\partial \dot{q}_k}}-{{\partial T}\over{\partial q_k}}=Q_k\;</MATH>|6.14}} Równanie {{LinkWzór|6.14}} nosi nazwę równania Lagrange'a drugiego rodzaju. Następnie, na podstawie obliczeń przedstawionych w punkcie {{LinkWzór|1.78|Kinematyka i dynamika klasyczna opisu punktu materialnego/Zasady zachowania}}, możemy napisać, że składowa siły w układzie kartezjańskim jest równa pochodnej energii potencjalnej względem współrzędnej kartezjańskiej, z minusem: {{CentrujWzór|<MATH>F_a=-{{\partial U}\over{\partial \chi_a}}+F_{za}\;</MATH>|6.15}} Na podstawie wzoru na siłę Fₐ {{LinkWzór|6.15}} wzór na siłę uogólnioną {{LinkWzór|6.13}} w zależności od siły potencjalnej i zewnętrznej: {{CentrujWzór|<MATH>Q_k=\sum_{a=1}^{3N}F_{pa}{{\partial\chi_a}\over{\partial q_k}}+\sum_{a=1}^{3N}F_{za}{{\partial\chi_a}\over{\partial q_k}}=-\sum_{a=1}^{3N}{{\partial U}\over{\partial\chi_a}}{{\partial\chi_a}\over{\partial q_k}}+Q_{zk}=-{{\partial U}\over{\partial q_k}}+Q_{zk}\;</MATH>|6.16}} Dla siły uogólnionej {{Formuła|<MATH>Q_{zk}</MATH>}} w {{LinkWzór|6.16}} też zachodzi związek {{LinkWzór|F3}}, jak dla siły uogólnionej {{Formuła|<MATH>Q_k</MATH>}} {{LinkWzór|6.13}}, bo na podstawie {{LinkWzór|F3}}: {{CentrujWzór|<MATH>Q_k=Q_{zk}+Q_{pk}\;</MATH>|F4}} Wzór {{LinkWzór|6.16}} spełnia zasadę rozpisu {{LinkWzór|F4}}. Wzór na siłę uogólnioną zewnętrzną na podstawie {{LinkWzór|6.16}} i definicji siły uogólnionej {{LinkWzór|F2}}: {{CentrujWzór|<MATH>Q_{zk}=\sum_{a=1}^{3N}F_{za}{{\partial\chi_a}\over{\partial q_k}}=\sum_{i=1}^Ng_{ik}(\vec{F}_i,\vec{e}_{ik})</MATH>|F6}} Ponieważ zachodzi addytywność siły uogólnionej {{Formuła|<MATH>Q_k</MATH>}} {{LinkWzór|F3}}, to na podstawie {{LinkWzór|F4}} zachodzi addytywność siły uogólnionej zewnętrznej {{Formuła|<MATH>Q_{zk}</MATH>}}. Można to sprawdzić bezpośrednio z definicji {{LinkWzór|F6}}: {{CentrujWzór|<MATH>Q_{zk}=\sum_{a=1}^{3N}\sum_iF_{zia}{{\partial\chi_a}\over{\partial q_k}}=\sum_i\sum_{a=1}^{3N}F_{zia}{{\partial\chi_a}\over{\partial q_k}}=\sum_iQ_{zik}\Rightarrow Q_{zk}=\sum_iQ_{zik}\;</MATH>|F5}} Wzór na siłę uogólnioną {{LinkWzór|6.16}} możemy wstawić do równania Lagrange'a drugiego rodzaju {{LinkWzór|6.14}}, pamiętając jednocześnie, że energia potencjalna nie zależy od czasu ani od prędkości uogólnionej: {{CentrujWzór|<MATH>{{d}\over{dt}}{{\partial(T-U)}\over{\partial \dot{q}_k}}-{{\partial (T-U)}\over{\partial q_k}}=Q_{zk}\;</MATH>|6.17}} Wprowadźmy teraz funkcję Lagrange'a, która jest różnicą energii kinetycznej i potencjalnej: {{CentrujWzór|<MATH> L=T-U\;</MATH>|6.18}} Równość {{LinkWzór|6.17}} na podstawie definicji funkcji Lagrange'a {{LinkWzór|6.18}}: {{CentrujWzór|<MATH>{{d}\over{dt}}{{\partial L}\over{\partial\dot{q}_k}}-{{\partial L}\over{\partial q_k}}=Q_{zk}\;</MATH>|6.19}} Układ równań {{LinkWzór|6.19}} jest układem f=3N−r równań różnicowych drugiego rzędu, z którego wyznaczamy współrzędne qₖ jako funkcje czasu. Równanie {{LinkWzór|6.19}} stosuje się tak samo dla układów z więzami, jak i bez więzów, o ile więzy są holonomiczne, a siły — konserwatywne. Równanie Eulera–Lagrange'a {{LinkWzór|6.19}} możemy zapisać w postaci wektorowej w przestrzeni kartezjańskiej, opisującej daną cząstkę o numerze „a”, w analogii do {{LinkWzór|6.19}}: {{CentrujWzór|<MATH>{{d}\over{dt}}{{\partial L}\over{\partial\vec{v}_a}}-{{\partial L}\over{\partial\vec{r}_a}}=\vec{Q}_z\;</MATH>|6.20}} == Funkcja Lagrange'a a zasady zachowania == === Zasada zachowania energii i translacja w czasie === Napiszmy teraz różniczkę zupełną funkcji Lagrange'a, zdefiniowanej w punkcie {{LinkWzór|6.18}}, względem czasu, do której będziemy stosować drugie równanie Lagrange'a {{LinkWzór|6.19}}: {{CentrujWzór|<MATH> \frac{dL}{dt} = \sum_k \frac{\partial L}{\partial q_k}\dot{q}_k + \sum_k \frac{\partial L}{\partial \dot{q}_k}\ddot{q}_k + \frac{\partial L}{\partial t} = \sum_k \dot{q}_k \frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_k}\right) - \sum_k Q_{zk}\dot{q}_k + \sum_k \ddot{q}_k \frac{\partial L}{\partial \dot{q}_k} + \frac{\partial L}{\partial t} = \frac{d}{dt}\left(\sum_k \dot{q}_k\frac{\partial L}{\partial \dot{q}_k}\right) + \frac{\partial L}{\partial t} - \sum_k Q_{zk}\dot{q}_k </MATH>|6.21}} Wyrazy w {{LinkWzór|6.21}}, które są pochodnymi zupełnymi i cząstkowymi funkcji względem czasu, umieszczamy po jednej stronie (prawej), a pozostałe wyrazy po stronie lewej: {{CentrujWzór|<MATH> \sum_kQ_{zk}\dot{q}_k ={{d\over{dt}}\left( \sum_k\dot{q}_k{{\partial L}\over{\partial\dot{q}_k}}-L\right)} +{{\partial L}\over{\partial t}} \Rightarrow P_z={{d\over{dt}}\left( \sum_k\dot{q}_k{{\partial L}\over{\partial\dot{q}_k}}-L\right)} +{{\partial L}\over{\partial t}} \;</MATH>|6.22}} Wykażemy, że prawa strona równości pod pochodną czasową jest równa całkowitej energii wziętej z minusem. Mamy: {{CentrujWzór|<MATH> T=\sum_{a=1}^{3N}{{m_a}\over{2}}\dot{\chi}_a^2 =\sum_{a=1}^{3N}{{m_a}\over{2}}\left(\sum_{k=1}^f{{\partial\chi_a}\over{\partial q_k}}\dot{q}_k\right)^2 \;</MATH>|6.23}} Dalej wyznaczmy wyrażenie, które będzie nam dalej potrzebne, pamiętając, że całkowita energia potencjalna układu nie zależy od pochodnych współrzędnych uogólnionych: {{CentrujWzór|<MATH> \sum_{k=1}^f{{\partial T}\over{\partial\dot{q}_k}}\dot{q}_k =\sum_{k=1}^f\sum_{a=1}^{3N}{{m_a}\over{2}}2\left(\sum_{s=1}^f{{\partial\chi_a}\over{\partial q_s}}\dot{q}_s\right){{\partial\chi_a}\over{\partial q_k}}\dot{q}_k =2\sum_{a=1}^{3N}{{m_a}\over{2}}\left(\sum_{s=1}^f{{\partial\chi_a}\over{\partial q_s}}\dot{q}_s\right)^2 =2T \;</MATH>|6.24}} Na samym końcu policzmy wyrażenie występujące z prawej strony wzoru {{LinkWzór|6.22}} pod pochodną względem czasu, wykorzystując obliczenia przeprowadzone w punkcie {{LinkWzór|6.24}}: {{CentrujWzór|<MATH> \sum_k{{\partial L}\over{\partial \dot{q}_k}}\dot{q}_k-L =2T-T+U =T+U =E \;</MATH>|6.25}} Na podstawie obliczeń przeprowadzonych w punktach {{LinkWzór|6.22}} i {{LinkWzór|6.25}} wykazaliśmy, że jeśli Lagrangian nie zależy od czasu oraz siły uogólnione zewnętrzne są równe zero, to całkowita energia układu w czasie się nie zmienia. === Translacje przestrzenne a funkcja Lagrange'a === Całkowity Lagrangian układu jest sumą wszystkich energii kinetycznych i potencjalnych dla cząstek wchodzących w skład układu mechanicznego: {{CentrujWzór|<MATH> L=\sum_{i=1}^N{{m_i\dot{\vec{r}}_i^{\,2}}\over{2}} -\sum_{i,j}V(|\vec{r}_i-\vec{r}_j|) \;</MATH>|6.26}} Dokonajmy teraz translacji przestrzennej o wektor {{Formuła|<MATH>\vec{a}=[a_1,a_2,a_3]\;</MATH>}} wedle schematu: {{CentrujWzór|<MATH>\vec{r}_i'=\vec{r}_i+\vec{a}\;</MATH>|6.27}} Zmiana Lagrangianu przy przesunięciu o wektor {{Formuła|<MATH>\vec{a}\;</MATH>}} wyraża się przez zależność od współrzędnych, które są wyrażone przez współrzędne wektora {{Formuła|<MATH>\vec{r}_i'\;</MATH>}} oraz przez współrzędne wektora {{Formuła|<MATH>\vec{r}_i\;</MATH>}} {{LinkWzór|6.27}}: {{CentrujWzór|<MATH> \delta L = L(\vec{r}_i',\dot{\vec{r}}_i,t)- L(\vec{r}_i,\dot{\vec{r}}_i,t) =a_1\sum_{k=1}^N{{\partial L}\over{\partial x_k}} +a_2\sum_{k=1}^N{{\partial L}\over{\partial y_k}} +a_3\sum_{k=1}^N{{\partial L}\over{\partial z_k}} \;</MATH>|6.28}} Jeśli nasz Lagrangian nie zmienia się podczas dowolnej translacji w przestrzeni, to dla dowolnego wektora {{Formuła|<MATH>\vec{a}\;</MATH>}} musi zachodzić {{Formuła|<MATH>\delta L=0\;</MATH>}}, co prowadzi do warunków: {{CentrujWzór|<MATH> \sum_{k=1}^N{{\partial L}\over{\partial x_k}} =\sum_{k=1}^N{{\partial L}\over{\partial y_k}} =\sum_{k=1}^N{{\partial L}\over{\partial z_k}} =0 \;</MATH>|6.29}} Jeśli wykorzystamy wzór {{LinkWzór|6.19}} na drugie równanie Lagrange'a i podstawimy go do trzech tożsamości {{LinkWzór|6.29}}, to otrzymamy: {{CentrujWzór|<MATH> {{d}\over{dt}}\left(\sum_{k=1}^N{{\partial L}\over{\partial \dot{x}_k}}\right) ={{d}\over{dt}}\left(\sum_{k=1}^N{{\partial L}\over{\partial \dot{y}_k}}\right) ={{d}\over{dt}}\left(\sum_{k=1}^N{{\partial L}\over{\partial \dot{z}_k}}\right) =0 \;</MATH>|6.30}} Na tej podstawie możemy napisać: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\sum_{k=1}^N{{\partial L}\over{\partial\dot{x}_k}}=\operatorname{const}\;</MATH>|6.31}} | 2 = {{CentrujWzór|<MATH>\sum_{k=1}^N{{\partial L}\over{\partial\dot{y}_k}}=\operatorname{const}\;</MATH>|6.32}} | 3 = {{CentrujWzór|<MATH>\sum_{k=1}^N{{\partial L}\over{\partial\dot{z}_k}}=\operatorname{const}\;</MATH>|6.33}} }} Można wykazać, że pochodna {{Formuła|<MATH>{{\partial L}\over{\partial\dot{x}_k}}\;</MATH>}} jest pędem iksowym cząstki poruszającej się w układzie, który ulega translacji; analogicznie {{Formuła|<MATH>{{\partial L}\over{\partial\dot{y}_k}}\;</MATH>}} i {{Formuła|<MATH>{{\partial L}\over{\partial\dot{z}_k}}\;</MATH>}} są odpowiednio pędami igrekowymi i zetowymi. Zatem prawa {{LinkWzór|6.31}}, {{LinkWzór|6.32}} i {{LinkWzór|6.33}} obrazują, że podczas translacji układu o pewien wektor całkowity pęd układu pozostaje zachowany, jeśli Lagrangian {{LinkWzór|6.26}} jest niezmienniczy względem takich translacji. W takim przypadku całkowity pęd układu cząstek jest wielkością zachowaną. === Zasada zachowania momentu pędu === Prędkość w ruchu obrotowym w układzie kulistym wyprowadziliśmy w punkcie {{LinkWzór|1.28|Kinematyka i dynamika klasyczna opisu punktu materialnego/Kinematyka}}, zatem całkowity Lagrangian, który jest funkcją energii kinetycznej i potencjalnej, ma postać: {{CentrujWzór|<MATH> L=T-U={{m}\over{2}}\left(\dot{r}^2+r^2\dot{\theta}^2\sin^2\phi+r^2\dot{\phi}^2\right)-U(r) \;</MATH>|6.34}} Z powyższego wnioskujemy, że Lagrangian nie zależy od współrzędnej {{Formuła|<MATH>\theta\;</MATH>}}, zatem pochodna cząstkowa Lagrangianu {{LinkWzór|6.34}} względem {{Formuła|<MATH>\theta\;</MATH>}} jest równa zero: {{CentrujWzór|<MATH> 0={{d}\over{dt}}{{\partial L}\over{\partial\dot{\theta}}} ={{d}\over{dt}}\left(mr^2\dot{\theta}\sin^2\phi\right) \;</MATH>|6.35}} Jeśli dodatkowo zauważymy, że zachodzi tożsamość na moment pędu zetowy: {{CentrujWzór|<MATH> L_z=m(\vec{r}\times\dot{\vec{r}})_z =m(x\dot{y}-y\dot{x}) \;</MATH>{{Br}}<MATH> =m\left( r\cos\theta\sin\phi\left(\dot{r}\sin\theta\sin\phi+r\dot{\theta}\sin\phi\cos\theta+r\dot{\phi}\sin\theta\cos\phi\right) -r\sin\theta\sin\phi\left(\dot{r}\cos\theta\sin\phi+r\dot{\theta}\sin\phi(-\sin\theta)+r\dot{\phi}\cos\theta\cos\phi\right) \right) </MATH>{{Br}}<MATH> =mr^2\dot{\theta}\sin^2\phi(\cos^2\theta+\sin^2\theta) =mr^2\dot{\theta}\sin^2\phi \;</MATH>|6.36}} Na podstawie {{LinkWzór|6.35}} oraz {{LinkWzór|6.36}} widzimy, że pod pochodną czasową występuje dokładnie zetowa składowa momentu pędu. Oznacza to, że moment pędu względem osi {{Formuła|<MATH>z</MATH>}} jest wielkością zachowaną — wynika to z faktu, że współrzędna {{Formuła|<MATH>\theta\;</MATH>}} jest '''cykliczna'''. Ogólnie rzecz biorąc, jeśli Lagrangian {{Formuła|<MATH>L</MATH>}} nie zależy od współrzędnej uogólnionej {{Formuła|<MATH>q_k\;</MATH>}}, to spełniona jest zasada zachowania: {{CentrujWzór|<MATH> {{d}\over{dt}}{{\partial L}\over{\partial \dot{q}_k}}=0 \;</MATH>|6.37}} Współrzędną {{Formuła|<MATH>q_k\;</MATH>}}, dla której zachodzi {{LinkWzór|6.37}}, nazywamy '''współrzędną cykliczną'''. Jej istnienie oznacza istnienie wielkości zachowanej — w tym przypadku jest to moment pędu. == Wyznaczanie przyspieszenia w dowolnym ortogonalnym układzie współrzędnych == Załóżmy, że mamy do czynienia z ortogonalnym układem współrzędnych, w którym obowiązują wersory o długości jeden oznaczone przez {{Formuła|<MATH>\vec{e}_k\;</MATH>}}, gdzie przyrost położenia: {{CentrujWzór|<MATH> d\vec{r}=\sum_k g_k(q_i)\,dq_k\,\vec{e}_k \;</MATH>|6.38}} Na podstawie {{LinkWzór|6.38}} opis zależy od wersorów oraz od różniczek współrzędnych uogólnionych, zatem prędkość danej cząstki w tym układzie: {{CentrujWzór|<MATH> \vec{v}={{d\vec{r}}\over{dt}} =\sum_k g_k(q_i)\dot{q}_k\,\vec{e}_k \;</MATH>|6.39}} Parametry {{Formuła|<MATH>g_k(q_i)\;</MATH>}} są np. w kulistym układzie współrzędnych tak dobrane, aby po porównaniu ze wzorem na prędkość w układzie kulistym {{LinkWzór|1.28|Kinematyka i dynamika klasyczna opisu punktu materialnego/Kinematyka}} można było napisać: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>g_1=1\;</MATH>|6.40}} | 2 = {{CentrujWzór|<MATH>g_2=r\sin\phi\;</MATH>|6.41}} | 3 = {{CentrujWzór|<MATH>g_3=r\;</MATH>|6.42}} }} Wektory {{Formuła|<MATH>\vec{e}_k\;</MATH>}} tworzą układ wersorów jednostkowych i ortogonalnych: {{CentrujWzór|<MATH> \vec{e}_k\cdot\vec{e}_i=\delta_{ki} \;</MATH>|6.43}} Biorąc pod uwagę definicję prędkości {{LinkWzór|6.39}} oraz własność ortogonalności wersorów {{LinkWzór|6.43}}, możemy wzór na całkowitą energię kinetyczną napisać w postaci: {{CentrujWzór|<MATH> T={{1}\over{2}}m\vec{v}^{\,2} ={{1}\over{2}}m\sum_k g_k^2\dot{q}_k^{\,2} \;</MATH>|6.44}} Rozpatrzmy teraz dla jednego ciała drugie równanie Lagrange'a {{LinkWzór|6.14}}, zapisane za pomocą energii kinetycznej i siły uogólnionej. Wzór na siłę uogólnioną według {{LinkWzór|F2}}, a także druga zasada dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}}, dają w układzie ogólnie krzywoliniowym: {{CentrujWzór|<MATH> {{d\over{dt}}{{\partial T}\over{\partial\dot{q}_k}}} -{{\partial T}\over{\partial q_k}} =m{{d\over{dt}}(g_k^2\dot{q}_k)} -m\sum_i g_i{{\partial g_i}\over{\partial q_k}}\dot{q}_i^{\,2} </MATH>{{Br}}<MATH> =mg_k^2\ddot{q}_k +2m g_k{{dg_k}\over{dt}}\dot{q}_k -m\sum_i g_i{{\partial g_i}\over{\partial q_k}}\dot{q}_i^{\,2} </MATH>{{Br}}<MATH> =mg_k^2\ddot{q}_k +2m g_k\sum_i{{\partial g_k}\over{\partial q_i}}\dot{q}_i\dot{q}_k -m\sum_i g_i{{\partial g_i}\over{\partial q_k}}\dot{q}_i^{\,2} =g_kF_k=g_kma_k \;</MATH>|6.45}} Z drugiej strony wzór na przyspieszenie dowolnej cząstki możemy otrzymać ze wzoru fizycznego, słusznego w dowolnym układzie ogólnie krzywoliniowym. Z {{LinkWzór|6.39}}, licząc pochodną zupełną względem czasu: {{CentrujWzór|<MATH> \vec{a} ={{d\vec{v}}\over{dt}} =\sum_k g_k\ddot{q}_k\,\vec{e}_k +\sum_k\dot{q}_k{{d\over{dt}}\left(g_k\vec{e}_k\right)} \;</MATH>|6.46}} Ostatni człon jest trudny do obliczenia bezpośrednio, ale możemy wyznaczyć jego współczynniki, porównując współczynniki stojące przy {{Formuła|<MATH>\ddot{q}_k\;</MATH>}} we wzorze {{LinkWzór|6.46}} i w równaniu {{LinkWzór|6.45}}. Stąd: {{CentrujWzór|<MATH> \vec a =\sum_k\vec e_k{{1}\over{mg_k}}\left({{d\over{dt}}{{\partial T}\over{\partial \dot{q}_k}}}-{{\partial T}\over{\partial q_k}}\right) \Rightarrow \sum_k a_k\vec e_k =\sum_k\vec e_k{{1}\over{mg_k}}\left({{d\over{dt}}{{\partial T}\over{\partial \dot{q}_k}}}-{{\partial T}\over{\partial q_k}}\right) \Rightarrow a_k={{1}\over{m g_k}}\left({{d\over{dt}}{{\partial T}\over{\partial \dot{q}_k}}}-{{\partial T}\over{\partial q_k}}\right) \;</MATH>|6.47}} Równość {{LinkWzór|6.47}} zachodzi, bo {{Formuła|<MATH>Q_k\;</MATH>}} jest k-tą współrzędną siły uogólnionej w układzie ogólnie krzywoliniowym, a z drugiej zasady dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} mamy: {{CentrujWzór|<MATH> \sum_k a_k\vec e_k=\vec a \;</MATH>|6.47a}} Podstawiając {{LinkWzór|6.47a}} do pierwszego równania {{LinkWzór|6.47}} oraz korzystając z ortonormalności wersorów {{LinkWzór|6.43}}, otrzymujemy końcowy wzór na k-tą współrzędną przyspieszenia w układzie ogólnie krzywoliniowym. Energia kinetyczna w układzie kulistym dla ciała jest określona na podstawie wzoru {{LinkWzór|1.28|Kinematyka i dynamika klasyczna opisu punktu materialnego/Kinematyka}}: {{CentrujWzór|<MATH> T={{m}\over{2}}\left(\dot{r}^2+r^2\dot{\phi}^2+r^2\sin^2\phi\,\dot{\theta}^2\right) \;</MATH>|6.48}} Jeśli podstawimy wzór {{LinkWzór|6.48}} do wzoru {{LinkWzór|6.47}} przy oznaczeniach {{LinkWzór|6.40}}, {{LinkWzór|6.41}} i {{LinkWzór|6.42}}, otrzymujemy wzór na przyspieszenie w układzie kulistym dla danego ciała, zgodny z wynikiem podanym we wzorze {{LinkWzór|1.30|Kinematyka i dynamika klasyczna opisu punktu materialnego/Kinematyka}}. == Zasada Hamiltona, a drugie równanie Lagrange'a == Weźmy sobie całkę działania, którą określamy za pomocą wzoru, w której funkcją podcałkową jest funkcja Lagrange'a zdefiniowana w punkcie {{LinkWzór|6.18}}: {{CentrujWzór|<MATH> S=\int_{t_1}^{t_2} L(q_k,\dot{q}_k,t)\,dt \;</MATH>|6.49}} Całkę działania {{LinkWzór|6.49}} będziemy tak formułować, by wariacja funkcjonału S była równa zero, czyli przyjmujemy '''zasadę Hamiltona''' ('''zasadę najmniejszego działania'''). Na podstawie obliczeń przeprowadzonych dla funkcji Lagrange'a w {{lg|Metody matematyczne fizyki|Metod matematycznych fizyki}} otrzymujemy, że wariacja funkcjonału S jest równa zero, zatem Lagrangian występujący w {{LinkWzór|6.49}} spełnia wniosek {{LinkWzór|17.13|Rachunek_wariacyjny|Metody_matematyczne_fizyki|MMF}}, w którym występuje funkcja F, którą tutaj zastąpimy przez L. W końcowych perypetiach otrzymujemy wzór skalarny {{LinkWzór|6.19}} lub wzór wektorowy {{LinkWzór|6.20}} dla przestrzeni kartezjańskiej, a więc to udowodnijmy: {{CentrujWzór|<MATH> 0=\delta S =\int_{t_1}^{t_2}\left({{\partial L}\over{\partial q_k}}-{{d\over{dt}}{{\partial L}\over{\partial\dot{q}_k}}}\right)\delta q_k\,dt \Rightarrow {{\partial L}\over{\partial q_k}}-{{d\over{dt}}{{\partial L}\over{\partial\dot{q}_k}}}=0 \;</MATH>|6.49a}} Przyjmijmy, że Lagrangian jest sumą lagrangianu „normalnego” {{Formuła|<MATH>L=T-U\;</MATH>}} i części odpowiedzialnej za siły zewnętrzne (w szczególnym przypadku także siły oddziaływań). Wtedy w {{LinkWzór|6.49a}} zastępujemy: {{CentrujWzór|<MATH> L\rightarrow L+L_{z} \;</MATH>|6.49ab}} Na podstawie zasady wariacyjnej {{LinkWzór|6.49a}} i zastąpienia {{LinkWzór|6.49ab}} oraz zakładając, że {{Formuła|<MATH>L_{z}\;</MATH>}} zależy od prędkości i położenia ciał, mamy: {{CentrujWzór|<MATH> {{d\over{dt}}{{\partial (L+L_{z})}\over{\partial\dot{q}_k}}} -{{\partial (L+L_{z})}\over{\partial q_k}}=0 \Rightarrow {{d\over{dt}}{{\partial L}\over{\partial\dot{q}_k}}} -{{\partial L}\over{\partial q_k}} =-\left({{d\over{dt}}{{\partial L_{z}}\over{\partial\dot{q}_k}}} -{{\partial L_{z}}\over{\partial q_k}}\right) \;</MATH>|6.49b}} Ponieważ zachodzi z teorii ruchu {{LinkWzór|6.19}} oraz z teorii lagrangianu {{LinkWzór|6.49b}}, otrzymujemy: {{CentrujWzór|<MATH> Q_{zk} =-\left({{d\over{dt}}{{\partial L_{z}}\over{\partial\dot{q}_k}}} -{{\partial L_{z}}\over{\partial q_k}}\right) ={{\partial L_{z}}\over{\partial q_k}} -{{d\over{dt}}{{\partial L_{z}}\over{\partial\dot{q}_k}}} \;</MATH>|6.49c}} Wzór {{LinkWzór|6.49c}} jest przepisem jak liczyć k-ty stopień swobody sił uogólnionych w układzie ogólnie krzywoliniowym, znając lagrangian sił oddziaływań oraz sił zewnętrznych {{Formuła|<MATH>L_{z}\;</MATH>}}, zależny od prędkości i położenia. Gdy {{Formuła|<MATH>L_{z}\;</MATH>}} nie zależy od prędkości, tylko od położenia, wzór {{LinkWzór|6.49c}} przyjmuje prostszą formę: {{CentrujWzór|<MATH> Q_{zk}={{\partial L_{z}}\over{\partial q_k}} \;</MATH>|6.49d}} Na podstawie wzoru na siłę uogólnioną {{Formuła|<MATH>Q_k\;</MATH>}} {{LinkWzór|6.49c}} równanie {{LinkWzór|6.49b}} przyjmuje formę o wyglądzie {{LinkWzór|6.19}}, którą dla jasności przepisujemy: {{CentrujWzór|<MATH> {{d\over{dt}}{{\partial L}\over{\partial\dot{q}_k}}} -{{\partial L}\over{\partial q_k}} =Q_{zk} \;</MATH>|6.19a}} Udowodnijmy addytywność siły uogólnionej {{Formuła|<MATH>Q_{zk}\;</MATH>}} z teorii lagrangianu, wiedząc, że zachodzi z teorii ruchu {{LinkWzór|F5}}. Gdy na dane ciało działa pewna liczba takich sił: {{CentrujWzór|<MATH> Q_{zk} =\left({{\partial}\over{\partial q_k}} -{{d\over{dt}}{{\partial}\over{\partial\dot{q}_k}}}\right)\sum_{i}L_{zi} =\sum_i\left({{\partial}\over{\partial q_k}} -{{d\over{dt}}{{\partial}\over{\partial\dot{q}_k}}}\right)L_{zi} =\sum_iQ_{zik} \Rightarrow Q_{zk}=\sum_iQ_{zik} \;</MATH>|G1}} Na podstawie {{LinkWzór|G1}} siła uogólniona zewnętrzna jest addytywna, co występuje we wzorze {{LinkWzór|6.19a}}. Wzory {{LinkWzór|6.19a}}, {{LinkWzór|6.49c}}, {{LinkWzór|6.49d}} oraz {{LinkWzór|G1}} są słuszne, gdy {{Formuła|<MATH>L=T-U\;</MATH>}}, ale także dla innych postaci {{Formuła|<MATH>L\;</MATH>}}. Na tej podstawie również wzór {{LinkWzór|6.49a}} przed zamianą według {{LinkWzór|6.49ab}} pozostaje prawdziwy. Zastąpmy w definicji siły uogólnionej w {{LinkWzór|6.49c}} w równaniu {{LinkWzór|6.19a}}: {{CentrujWzór|<MATH> L_{z}\rightarrow L_{oiz}+L_{z} \;</MATH>|6.49d1}} Wtedy na podstawie {{LinkWzór|6.49d1}} wzór końcowy w {{LinkWzór|6.49b}} przyjmuje formę: {{CentrujWzór|<MATH> {{d\over{dt}}{{\partial L}\over{\partial\dot{q}_k}}} -{{\partial L}\over{\partial q_k}} =-\left({{d\over{dt}}{{\partial}\over{\partial\dot{q}_k}}} -{{\partial\over{\partial q_k}}}\right)(L_{oiz}+L_z) \Rightarrow </MATH>{{Br}}<MATH> \Rightarrow {{d\over{dt}}{{\partial L}\over{\partial\dot{q}_k}}} -{{\partial L}\over{\partial q_k}} =-\left({{d\over{dt}}{{\partial L_{oiz}}\over{\partial\dot{q}_k}}} -{{\partial L_{oiz}}\over{\partial q_k}}\right) -\left({{d\over{dt}}{{\partial L_{z}}\over{\partial\dot{q}_k}}} -{{\partial L_{z}}\over{\partial q_k}}\right) \Rightarrow </MATH>{{Br}}<MATH> \Rightarrow {{d\over{dt}}{{\partial (L+L_{oiz})}\over{\partial\dot{q}_k}}} -{{\partial (L+L_{oiz})}\over{\partial q_k}} =-\left({{d\over{dt}}{{\partial L_{z}}\over{\partial\dot{q}_k}}} -{{\partial L_{z}}\over{\partial q_k}}\right) \;</MATH>|6.49d2}} W {{LinkWzór|6.49d2}} (końcowa tożsamość) zastąpmy według procedury {{Formuła|<MATH>L+L_{oiz}\rightarrow L\;</MATH>}}. Dla jasności wykładu napiszmy równanie, które jest słuszne dla dowolnej postaci lagrangianu; nazwiemy je drugą uogólnioną zasadą Lagrange'a wynikającą z zasady wariacyjnej. Jest ono w postaci {{LinkWzór|6.49d231}} (podobne do {{LinkWzór|6.19}} i {{LinkWzór|6.19a}}), a wzór na siłę uogólnioną zewnętrzną przepiszmy jako {{LinkWzór|6.49d232}} (podobny do {{LinkWzór|6.49c}}), zależny od lagrangianu siły zewnętrznej {{Formuła|<MATH>L_z\;</MATH>}}. Gdy lagrangian siły zewnętrznej nie zależy od prędkości, wtedy siłę uogólnioną przedstawiamy jako {{LinkWzór|6.49d233}} (podobny do {{LinkWzór|6.49d}}), a lagrangian całkowity {{Formuła|<MATH>L_c\;</MATH>}} {{LinkWzór|6.49d234}} jest sumą lagrangianu {{Formuła|<MATH>L\;</MATH>}} i lagrangianu siły zewnętrznej {{Formuła|<MATH>L_z\;</MATH>}}: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>{{d\over{dt}}{{\partial L}\over{\partial\dot{q}_k}}}-{{\partial L}\over{\partial q_k}}=Q_{zk}\;</MATH>|6.49d231}} | 2 = {{CentrujWzór|<MATH>Q_{zk}=-\left({{d\over{dt}}{{\partial L_{z}}\over{\partial\dot{q}_k}}}-{{\partial L_{z}}\over{\partial q_k}}\right)={{\partial L_{z}}\over{\partial q_k}}-{{d\over{dt}}{{\partial L_{z}}\over{\partial\dot{q}_k}}}\;</MATH>|6.49d232}} | 3 = {{CentrujWzór|<MATH>Q_{zk}={{\partial L_{z}}\over{\partial q_k}}\;</MATH>|6.49d233}} | 4 = {{CentrujWzór|<MATH>L_c=L+L_z\;</MATH>|6.49d234}} }} Określmy postać wzoru na siłę uogólnioną zewnętrzną dla {{LinkWzór|6.49d232}} i {{LinkWzór|6.49d233}}, analogiczną do {{LinkWzór|6.49c}} i {{LinkWzór|6.49d}}, oraz podobną do {{LinkWzór|F6}}: {{CentrujWzór|<MATH> \sum_{a=1}^{3N}F_{za}{{\partial\chi_a}\over{\partial q_k}} =\sum_{i=1}^{N}g_{ik}(\vec F_{zi}, \vec e_{ik}) =\sum_{i=1}^NQ_{ik} =Q_{zk} \;</MATH>|6.13a}} Czyli jak we wzorze {{LinkWzór|F6}} k-ty stopień swobody w układzie ogólnie krzywoliniowym siły uogólnionej zewnętrznej jest dany przez {{LinkWzór|6.13a}}. Na podstawie {{LinkWzór|6.49d1}} stara siła uogólniona zewnętrzna (stare {{Formuła|<MATH>Q_{zk}\;</MATH>}}) wynikająca ze starego {{Formuła|<MATH>L_z\;</MATH>}} jest sumą siły uogólnionej {{Formuła|<MATH>Q_{oizk}\;</MATH>}} z {{Formuła|<MATH>L_{oiz}\;</MATH>}} i nowej siły uogólnionej zewnętrznej (nowe {{Formuła|<MATH>Q_{zk}\;</MATH>}}) z nowego {{Formuła|<MATH>L_z\;</MATH>}}, co uwidaczniamy: {{CentrujWzór|<MATH> Q_{zk}\rightarrow\sum_{a=1}^{3N}(F_{oiza}+F_{za}){{\partial\chi_a}\over{\partial q_k}} =\sum_{a=1}^{3N}F_{oiza}{{\partial\chi_a}\over{\partial q_k}} +\sum_{a=1}^{3N}F_{za}{{\partial\chi_a}\over{\partial q_k}} =Q_{oizk}+Q_{zk} \Rightarrow Q_{zk}\rightarrow Q_{oizk}+Q_{zk} \;</MATH>|6.13b}} Stąd z {{LinkWzór|6.13b}} mamy {{LinkWzór|6.13a}} dla nowego {{Formuła|<MATH>Q_{zk}\;</MATH>}}, a na podstawie {{LinkWzór|F5}} k-ty stopień swobody tej nowej siły uogólnionej zewnętrznej {{Formuła|<MATH>Q_{zk}\;</MATH>}} jest addytywny. To można także udowodnić z teorii lagrangianu: {{CentrujWzór|<MATH> Q_{zk} =-\left({{d\over{dt}}{{\partial (L_{oiz}+L_z)}\over{\partial\dot{q}_k}}} -{{\partial (L_{oiz}+L_z)}\over{\partial q_k}}\right) =-\left({{d\over{dt}}{{\partial L_{oiz}}\over{\partial\dot{q}_k}}} -{{\partial L_{oiz}}\over{\partial q_k}}\right) -\left({{d\over{dt}}{{\partial L_z}\over{\partial\dot{q}_k}}} -{{\partial L_z}\over{\partial q_k}}\right) =Q_{oizk}+Q_{zk} \Rightarrow Q_{zk}\rightarrow Q_{oizk}+Q_{zk} \;</MATH>|6.13c}} W {{LinkWzór|6.13c}} z teorii lagrangianu wychodzi ten sam wniosek co z {{LinkWzór|6.13b}} z teorii ruchu. Stąd definitywnie siła uogólniona zewnętrzna w {{LinkWzór|6.49d232}} i {{LinkWzór|6.49d233}} spełnia zasadę addytywności, na podstawie wniosku addytywności starej siły uogólnionej zewnętrznej wynikającej z rachunku {{LinkWzór|G1}} (teoria lagrangianu) oraz {{LinkWzór|F5}} (teoria ruchu). == Zasada zachowania momentu pędu, inne podejście == {{Rysunek|Przesunięcie_wektora_o_pewien_odcinek_względem_pewnego_kąta.png|lk1|Obrót wektora o pewien odcinek względem kąta &delta;&phi;}} By wyprowadzić zasadę zachowania momentu pędu z zasad czysto wariacyjnych, należy z rysunku obok napisać pewne tożsamości. Wtedy możemy powiedzieć, że zachodzi tożsamość skalarna na nieskończenie małe przesunięcie, które jest iloczynem promienia r, sinusa kąta &theta; i wariacji kąta &phi;: {{CentrujWzór|<MATH> |\delta\vec{r}|=r\sin\theta\,\delta\phi \;</MATH>|6.50}} Wektor {{Formuła|<MATH>\delta\vec{r}\;</MATH>}} jest prostopadły do płaszczyzny określonej przez wektory {{Formuła|<MATH>\vec{r}\;</MATH>}} i {{Formuła|<MATH>\delta\vec{\phi}\;</MATH>}}, wtedy wzór {{LinkWzór|6.50}} możemy zapisać w formie iloczynu wektorowego wariacji kąta {{Formuła|<MATH>\delta\vec{\phi}\;</MATH>}} i wektora promienia {{Formuła|<MATH>\vec{r}\;</MATH>}}: {{CentrujWzór|<MATH> \delta\vec{r}=\delta\vec{\phi}\times\vec{r} \;</MATH>|6.51}} Równość {{LinkWzór|6.51}} możemy zróżniczkować obustronnie względem czasu i otrzymać wariację prędkości: {{CentrujWzór|<MATH> \delta\vec{v}=\delta\vec{\phi}\times\vec{v} \;</MATH>|6.52}} Będziemy teraz wyprowadzać zasadę zachowania momentu pędu z warunku, że wariacja lagrangianu jest równa zero: {{CentrujWzór|<MATH> \delta L=\sum_a\left( {{\partial L}\over{\partial\vec{r}_a}}\delta\vec{r}_a + {{\partial L}\over{\partial\vec{v}_a}}\delta\vec{v}_a \right) \;</MATH>|6.53}} Wykorzystując wzór {{LinkWzór|6.20}}, definicję pędu uogólnionego oraz wzory na wariację położenia {{LinkWzór|6.51}} i prędkości {{LinkWzór|6.52}}, otrzymujemy: {{CentrujWzór|<MATH> \sum_a\left( \dot{\vec{p}}_a\times(\delta\vec{\phi}\times\vec{r}_a) + \vec{p}_a(\delta\vec{\phi}\times\vec{v}_a) \right)=0 \;</MATH>|6.54}} Dokonując cyklicznej zmiany czynników w iloczynach mieszanych i korzystając z równoległości wektora prędkości i pędu: {{CentrujWzór|<MATH> \delta\vec{\phi}\cdot\sum_a(\vec{r}_a\times\dot{\vec{p}}_a+\vec{v}_a\times\vec{p}_a) =\delta\vec{\phi}\cdot{{d\over{dt}}\sum_a(\vec{r}_a\times\vec{p}_a)} =0 \;</MATH>|6.55}} Patrząc na równość {{LinkWzór|6.55}} dowiadujemy się, że dla układu odosobnionego pozostaje stała wielkość: {{CentrujWzór|<MATH> \vec{N}=\sum_a(\vec{r}_a\times\vec{p}_a) \;</MATH>|6.56}} ---- * Transformacje momentu pędu między układami odniesienia Moment pędu w nowym nieporuszającym się układzie odniesienia względem starego, gdy zmieniamy początek układu: {{CentrujWzór|<MATH> \vec{N}'=\sum_a(\vec{r}_a'\times\vec{p}_a') =\sum_a(\vec{r}_a-\vec{a})\times\vec{p}_a =\vec{N}-\vec{a}\times\vec{P} \;</MATH>|6.57}} Moment pędu w nowym poruszającym się układzie odniesienia względem starego, gdy początek jest ten sam, ale prędkości są różne: {{CentrujWzór|<MATH> \vec{N}'=\sum_am_a(\vec{r}_a\times\vec{v}_a') =\vec{N}-\left(\sum_am_a\vec{r}_a\right)\times\vec{V} \;</MATH>|6.58}} Korzystając z definicji środka masy {{LinkWzór|3.1|Dynamika_punktów_masowych}}: {{CentrujWzór|<MATH> \vec{N}'=\vec{N}-M\vec{R}\times\vec{V} \;</MATH>|6.59}} ---- * Moment pędu zetowy i lagrangian Moment pędu zetowy w układzie cylindrycznym: {{CentrujWzór|<MATH> N_z=\sum_am_a(x_a\dot{y}_a-y_a\dot{x}_a) =\sum_am_ar_a^2\dot{\theta}_a \;</MATH>|6.60}} Lagrangian w układzie cylindrycznym: {{CentrujWzór|<MATH> L={{1\over2}}\sum_am_a(\dot{r}_a^2+r_a^2\dot{\theta}_a^2+\dot{z}_a^2)-U \;</MATH>|6.61}} Z definicji pędu uogólnionego: {{CentrujWzór|<MATH> N_z=\sum_a{{\partial L}\over{\partial\dot{\theta}_a}} \;</MATH>|6.62}} ---- W ten sposób wykazaliśmy, że '''moment pędu jest wielkością zachowaną''', gdy lagrangian jest niezmienniczy względem obrotów — czyli gdy współrzędna kątowa jest współrzędną cykliczną. To podejście wariacyjne jest równoważne klasycznemu dowodowi z równań Lagrange’a i stanowi czystą manifestację symetrii obrotowej układu. == Masa zredukowana układu dwóch cząstek == Lagrangian układu dwóch mas znajdujących się we wzajemnym polu potencjalnym określamy jako różnicę energii kinetycznej obu mas i energii potencjalnej zależnej wyłącznie od ich wzajemnego położenia: {{CentrujWzór|<MATH> L=\frac12 m_1\dot{\vec r}_1^{\,2}+\frac12 m_2\dot{\vec r}_2^{\,2}-U(|\vec r_1-\vec r_2|) \;</MATH>|6.63}} Zakładamy, że '''środek masy znajduje się w początku układu współrzędnych''', zatem położenie względne masy pierwszej względem drugiej oraz warunek środka masy dają dwa równania: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\vec r=\vec r_1-\vec r_2\;</MATH>|6.64}} | 2 = {{CentrujWzór|<MATH>0=m_1\vec r_1+m_2\vec r_2\;</MATH>|6.65}} }} Z równań {{LinkWzór|6.64}} i {{LinkWzór|6.65}} możemy wyznaczyć położenia obu mas względem środka masy: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\vec r_1=\frac{m_2}{m_1+m_2}\,\vec r\;</MATH>|6.66}} | 2 = {{CentrujWzór|<MATH>\vec r_2=-\frac{m_1}{m_1+m_2}\,\vec r\;</MATH>|6.67}} }} Podstawiamy te wyrażenia do Lagrangianu {{LinkWzór|6.63}}: {{CentrujWzór|<MATH> L=\frac12 m_1\left(\frac{m_2}{m_1+m_2}\right)^2\dot{\vec r}^{\,2} +\frac12 m_2\left(\frac{m_1}{m_1+m_2}\right)^2\dot{\vec r}^{\,2} -U(r) \;</MATH>}} Po uproszczeniu otrzymujemy: {{CentrujWzór|<MATH> L=\frac12\frac{m_1m_2}{m_1+m_2}\,\dot{\vec r}^{\,2}-U(r) =\frac12 m\,\dot{\vec r}^{\,2}-U(r) \;</MATH>|6.68}} Wprowadziliśmy tutaj '''masę zredukowaną''': {{CentrujWzór|<MATH> m=\frac{m_1m_2}{m_1+m_2} \;</MATH>|6.69}} ---- * Interpretacja fizyczna Widzimy, że wprowadzając pojęcie masy zredukowanej możemy formalnie opisywać ruch '''pojedynczej cząstki o masie m''' w polu zewnętrznym {{Formuła|<MATH>U(r)\;</MATH>}}, mimo że w rzeczywistości mamy układ dwóch oddziałujących ze sobą mas. Ruch względny dwóch ciał sprowadza się więc do ruchu jednej „efektywnej” cząstki w potencjale zależnym od odległości między nimi. To podejście jest fundamentem analizy: * ruchu planet (problem dwóch ciał), * oscylatora dwóch mas połączonych sprężyną, * oddziaływań w fizyce atomowej (np. elektron–jądro), * zderzeń w mechanice klasycznej i kwantowej. Współrzędna środka masy opisuje ruch całego układu jako całości, natomiast masa zredukowana opisuje '''ruch względny'''. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> et7h8d64s6db648gospcxhr0z9xrhzh Mechanika teoretyczna/Teoria ciała sztywnego i giroskopu 0 20312 559479 559071 2026-10-16T22:31:38Z Persino 2851 /* Ruch bez udziału sił giroskopu symetrycznego */ 559479 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Kinematyka ciała doskonale sztywnego == Obrót pewnego ciała o kąt jest opisywany przez wielkości, których reprezentacją jest '''wektor kąta obrotu''' prostopadły do płaszczyzny tego obrotu. Jego '''prędkość kątowa''' również jest prostopadła do płaszczyzny obrotu i ma zwrot zgodny z regułą śruby prawoskrętnej: * jeśli bryła obraca się '''przeciwnie do ruchu wskazówek zegara''', to zwrot wektora prędkości kątowej jest „do góry”, * jeśli obrót jest zgodny ze wskazówkami zegara — zwrot jest przeciwny. Rozpatrzmy teraz dwie osie obrotu ciała sztywnego. Prędkości wektorowe danego punktu bryły względem osi pierwszej oraz względem osi drugiej są dane wzorami: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\vec v_i=\vec v_T+\vec\omega\times\vec r_i\;</MATH>|7.1}} | 2 = {{CentrujWzór|<MATH>\vec v'_i=\vec v'_T+\vec\omega'\times\vec r'_i\;</MATH>|7.2}} }} Wektor wodzący względem nowej osi jest opisany przez wektor wodzący względem starej osi oraz przesunięcie osi: {{CentrujWzór|<MATH> \vec r'_i=\vec r_i+\vec a \;</MATH>|7.3}} Ponieważ wektory prędkości {{LinkWzór|7.1}} i {{LinkWzór|7.2}} opisują tę samą prędkość fizyczną punktu, możemy napisać: {{CentrujWzór|<MATH> \vec v_T+\vec\omega\times\vec r_i = \vec v'_T+\vec\omega'\times(\vec r_i+\vec a) = \vec v'_T+\vec\omega'\times\vec r_i+\vec\omega'\times\vec a \;</MATH>|7.4}} Porównując współczynniki przy dowolnym wektorze {{Formuła|<MATH>\vec r_i\;</MATH>}}, otrzymujemy fundamentalny wniosek: {{CentrujWzór|<MATH> \vec\omega'=\vec\omega \;</MATH>|7.5}} Prędkość kątowa ciała sztywnego jest '''niezależna od wyboru osi odniesienia''' — jest własnością ruchu bryły, a nie układu współrzędnych. Podstawiając {{LinkWzór|7.5}} do {{LinkWzór|7.4}}, otrzymujemy zależność między prędkościami translacyjnymi dwóch osi: {{CentrujWzór|<MATH> \vec v_T=\vec v'_T+\vec\omega\times\vec a \;</MATH>|7.6}} Wzór ten mówi, że prędkość osi pierwszej różni się od prędkości osi drugiej o człon wynikający z obrotu bryły i przesunięcia osi. ---- * Złożenie dwóch obrotów bryły sztywnej Rozpatrzmy teraz złożenie dwóch obrotów: * pierwszy obrót z prędkością kątową {{Formuła|<MATH>\vec\omega_1\;</MATH>}}, * drugi obrót z prędkością kątową {{Formuła|<MATH>\vec\omega_2\;</MATH>}}. Przesunięcie punktu bryły w wyniku pierwszego obrotu: {{CentrujWzór|<MATH> d\vec r_1=(\vec\omega_1\times\vec r)\,dt \;</MATH>|7.7}} Przesunięcie w wyniku drugiego obrotu, działającego na już obrócony punkt: {{CentrujWzór|<MATH> d\vec r_2=\vec\omega_2\times(\vec r+d\vec r_1)\,dt \;</MATH>|7.8}} Pomijając wyrazy wyższego rzędu (czyli iloczyny typu {{Formuła|<MATH>\vec\omega_2\times d\vec r_1\;</MATH>}}, które są rzędu {{Formuła|<MATH>dt^2\;</MATH>}}), otrzymujemy: {{CentrujWzór|<MATH> d\vec r=d\vec r_1+d\vec r_2 =(\vec\omega_1+\vec\omega_2)\times\vec r\,dt \;</MATH>|7.9}} ---- ; Wniosek fundamentalny * Prędkości kątowe dodają się wektorowo. Złożenie dwóch obrotów o nieskończenie małych kątach jest równoważne jednemu obrotowi o prędkości kątowej: {{CentrujWzór|<MATH> \vec\omega=\vec\omega_1+\vec\omega_2 \;</MATH>}} To jest kluczowa własność kinematyki ciała sztywnego: * '''obroty nieskończenie małe są przemienne i addytywne''', w przeciwieństwie do obrotów skończonych, które w ogólności nie są przemienne. == Kąty Eulera == {{Rysunek|Kąty_Eulera.svg|lk1|Kąty Eulera}} Ruch obrotowy ciała sztywnego opisujemy za pomocą '''kątów Eulera''' {{Formuła|<MATH>(\varphi,\theta,\psi)\;</MATH>}}, które pozwalają przejść z układu {{Formuła|<MATH>(x,y,z)\;</MATH>}} do nowego układu {{Formuła|<MATH>(x',y',z')\;</MATH>}}. Każdy z trzech kolejnych obrotów generuje własną składową prędkości kątowej, a całkowita prędkość kątowa jest ich sumą. ---- * Obrót o kąt {{Formuła|<MATH>\theta\;</MATH>}} wokół osi {{Formuła|<MATH>w\;</MATH>}} Pierwszy obrót wykonujemy w płaszczyźnie {{Formuła|<MATH>z=0\;</MATH>}} i {{Formuła|<MATH>z'=0\;</MATH>}}. Prędkość kątowa tego obrotu jest prostopadła do płaszczyzny obrotu i skierowana wzdłuż osi {{Formuła|<MATH>w\;</MATH>}}: {{CentrujWzór|<MATH> \vec{\omega}(\theta)=\dot{\theta}\,\vec e_k =\dot{\theta}(\cos\psi\,\vec e_{x'}-\sin\psi\,\vec e_{y'}) \;</MATH>|7.10}} ---- * Obrót o kąt {{Formuła|<MATH>\varphi\;</MATH>}} wokół osi {{Formuła|<MATH>z\;</MATH>}} Drugi obrót wykonujemy wokół osi {{Formuła|<MATH>z\;</MATH>}}. Prędkość kątowa tego obrotu ma postać: {{CentrujWzór|<MATH> \vec{\omega}(\varphi)=\dot{\varphi}\left( \sin\theta\sin\psi\,\vec e_{x'} +\sin\theta\cos\psi\,\vec e_{y'} +\cos\theta\,\vec e_{z'} \right) \;</MATH>|7.11}} ---- * Obrót o kąt {{Formuła|<MATH>\psi\;</MATH>}} wokół osi {{Formuła|<MATH>z'\;</MATH>}} Trzeci obrót wykonujemy wokół osi {{Formuła|<MATH>z'\;</MATH>}}. Prędkość kątowa tego obrotu jest najprostsza: {{CentrujWzór|<MATH> \vec{\omega}(\psi)=\dot{\psi}\,\vec e_{z'} \;</MATH>|7.12}} ---- * Całkowita prędkość kątowa Sumując trzy składowe otrzymujemy całkowitą prędkość kątową bryły sztywnej: {{CentrujWzór|<MATH> \vec{\omega}=p\,\vec e_{x'}+q\,\vec e_{y'}+r\,\vec e_{z'} \;</MATH>|7.13}} Współrzędne {{Formuła|<MATH>(p,q,r)\;</MATH>}} wyznaczamy z równań {{LinkWzór|7.10}}, {{LinkWzór|7.11}} i {{LinkWzór|7.12}}: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>p=\dot{\varphi}\sin\theta\sin\psi+\dot{\theta}\cos\psi\;</MATH>|7.14|Obramuj}} | 2 = {{CentrujWzór|<MATH>q=\dot{\varphi}\sin\theta\cos\psi-\dot{\theta}\sin\psi\;</MATH>|7.15|Obramuj}} | 3 = {{CentrujWzór|<MATH>r=\dot{\varphi}\cos\theta+\dot{\psi}\;</MATH>|7.16|Obramuj}} }} Równania {{LinkWzór|7.14}}, {{LinkWzór|7.15}} i {{LinkWzór|7.16}} nazywamy '''kinematycznymi równaniami Eulera'''. == Tensor momentu bezwładności bryły sztywnej == Prędkość danego punktu bryły sztywnej określamy jako sumę ruchu postępowego i obrotowego, zgodnie ze wzorem {{LinkWzór|7.1}}: {{CentrujWzór|<MATH> \vec v_i=\vec v_T+\vec\omega\times\vec r_i \;</MATH>}} Wtedy podwojona energia kinetyczna ciała obracającego się, dla którego oś obrotu porusza się z prędkością {{Formuła|<MATH>\vec v_T\;</MATH>}}, ma postać: {{CentrujWzór|<MATH> 2T=\sum_i m_i v_i^2 =\sum_i m_i v_T^2 +\sum_i m_i(\vec\omega\times\vec r_i)^2 +2\sum_i m_i(\vec\omega\times\vec r_i)\cdot\vec v_T \;</MATH>|7.16a}} Ostatni wyraz w {{LinkWzór|7.16a}} jest równy zero, ponieważ zakładamy, że środek masy znajduje się w początku układu współrzędnych, co wynika z definicji środka masy {{LinkWzór|3.1|Dynamika_punktów_masowych}}. W takim razie energia kinetyczna ruchu ciała jest sumą energii środka masy i energii ruchu obrotowego: {{CentrujWzór|<MATH> T=\frac12 M v_T^2+\frac12\sum_i m_i(\vec\omega\times\vec r_i)^2 =T_{\text{trasl}}+T_{\text{rot}} \;</MATH>|7.17}} ---- * Energia rotacyjna i tożsamość wektorowa Korzystamy teraz z tożsamości wektorowej {{LinkWzór|1.19|Działania_na_wektorach|Metody_matematyczne_fizyki|MMF}}: {{CentrujWzór|<MATH> (\vec\omega\times\vec r_i)^2 =\vec\omega^{\,2}\,\vec r_i^{\,2} -(\vec\omega\cdot\vec r_i)^2 \;</MATH>}} Stąd: {{CentrujWzór|<MATH> 2T_{\text{rot}} =\sum_i m_i(\vec\omega\times\vec r_i)^2 =\sum_i m_i\vec\omega^{\,2}\vec r_i^{\,2} -\sum_i m_i(\vec\omega\cdot\vec r_i)^2 \;</MATH>}} Po pełnym rozwinięciu składników otrzymujemy: {{CentrujWzór|<MATH> 2T_{\text{rot}} =\vec\omega^{\,T}\hat I\,\vec\omega \;</MATH>|7.18}} ---- * Moment pędu bryły sztywnej Moment pędu definiujemy jako: {{CentrujWzór|<MATH> \vec K=\sum_i m_i\vec r_i\times\vec v_i =\sum_i m_i\vec r_i\times(\vec\omega\times\vec r_i) \;</MATH>}} Po rozwinięciu iloczynu potrójnego: {{CentrujWzór|<MATH> \vec K=\hat I\,\vec\omega \;</MATH>|7.19}} ---- * Energia rotacyjna w postaci macierzowej Energia kinetyczna ruchu obrotowego może być zapisana jako: {{CentrujWzór|<MATH> T_{\text{rot}} =\frac12\vec\omega^{\,T}\vec K =\frac12\vec K^{\,T}\vec\omega =\frac12\vec\omega^{\,T}\hat I\,\vec\omega \;</MATH>|7.20}} ---- * Tensor momentu bezwładności Macierz {{Formuła|<MATH>\hat I\;</MATH>}} jest zdefiniowana wzorem: {{CentrujWzór|<MATH> \hat I= \begin{bmatrix} \sum_i m_i(y_i^2+z_i^2) & -\sum_i m_i x_i y_i & -\sum_i m_i x_i z_i\\ -\sum_i m_i y_i x_i & \sum_i m_i(x_i^2+z_i^2) & -\sum_i m_i y_i z_i\\ -\sum_i m_i z_i x_i & -\sum_i m_i z_i y_i & \sum_i m_i(x_i^2+y_i^2) \end{bmatrix} \;</MATH>|7.21}} Tensor {{LinkWzór|7.21}} nazywamy '''tensorowym momentem bezwładności''' bryły sztywnej. == Druga zasada dynamiki dla ruchu obrotowego według funkcji Lagrange'a == Z zasady Lagrange'a drugiego rodzaju {{LinkWzór|6.19|Równania_Lagrange'a_drugiego_rodzaju_i_zasada_Hamiltona}} możemy wyprowadzić drugie prawo dynamiki dla ruchu obrotowego {{LinkWzór|1.68|Kinematyka i dynamika klasyczna opisu punktu materialnego/Zasady zachowania}}. Punktem wyjścia jest równanie Lagrange’a zapisane dla współrzędnych kątowych: {{CentrujWzór|<MATH> \frac{d}{dt}\frac{\partial L}{\partial\vec{\omega}} - \frac{\partial L}{\partial\vec{\theta}} =0 \;</MATH>|7.22}} ---- * Pochodna Lagrangianu względem prędkości kątowej Lagrangian ruchu obrotowego zapisujemy jako różnicę energii kinetycznej rotacyjnej {{LinkWzór|7.20}} i energii potencjalnej bryły sztywnej: {{CentrujWzór|<MATH> L = T_{\text{rot}} - U \;</MATH>}} Energia kinetyczna rotacyjna ma postać: {{CentrujWzór|<MATH> T_{\text{rot}}=\frac12\,\vec{\omega}^{\,T}\hat I\,\vec{\omega} \;</MATH>}} Zatem pochodna cząstkowa Lagrangianu względem składowej prędkości kątowej {{Formuła|<MATH>\omega_i\;</MATH>}}: {{CentrujWzór|<MATH> \frac{\partial L}{\partial\omega_i} = \frac12 I_{ik}\omega_k + \frac12 I_{ki}\omega_k = I_{ik}\omega_k \Rightarrow \frac{\partial L}{\partial\vec{\omega}} = \hat I\,\vec{\omega} = \vec K \;</MATH>|7.23}} Otrzymaliśmy więc klasyczną definicję momentu pędu bryły sztywnej: {{CentrujWzór|<MATH> \vec K=\hat I\,\vec{\omega} \;</MATH>}} ---- * Pochodna Lagrangianu względem kąta obrotu Energia potencjalna podczas nieskończenie małego obrotu {{Formuła|<MATH>\delta\vec{\theta}\;</MATH>}} zmienia się zgodnie z: {{CentrujWzór|<MATH> \delta U = -\sum\vec F\cdot\delta\vec r = -\sum\vec F\cdot(\delta\vec{\theta}\times\vec r) = -\delta\vec{\theta}\cdot\sum(\vec r\times\vec F) = -\vec N\cdot\delta\vec{\theta} \;</MATH>}} Stąd: {{CentrujWzór|<MATH> \vec N = -\frac{\partial U}{\partial\vec{\theta}} = \frac{\partial L}{\partial\vec{\theta}} \;</MATH>|7.24}} Otrzymaliśmy więc klasyczną definicję momentu siły jako pochodnej Lagrangianu względem kąta obrotu. ---- * Druga zasada dynamiki dla ruchu obrotowego Podstawiając wyniki {{LinkWzór|7.23}} i {{LinkWzór|7.24}} do równania Lagrange’a {{LinkWzór|7.22}}, otrzymujemy: {{CentrujWzór|<MATH> \frac{d\vec K}{dt}=\vec N \;</MATH>|7.25}} ---- * Wniosek Równanie {{LinkWzór|7.25}} jest '''drugą zasadą dynamiki Newtona dla ruchu obrotowego''', wyprowadzoną w pełni z formalizmu Lagrange’a: * '''moment siły''' jest równy * '''pochodnej czasowej momentu pędu'''. To jest obrotowy odpowiednik równania: {{CentrujWzór|<MATH> \frac{d\vec p}{dt}=\vec F \;</MATH>}} dla ruchu postępowego. W ten sposób formalizm Lagrange’a prowadzi do pełnej dynamiki bryły sztywnej w ruchu obrotowym. == Diagonalizacja tensora momentu bezwładności == Patrząc na wzór {{LinkWzór|7.20}}, który przedstawia energię kinetyczną bryły sztywnej w ruchu obrotowym, wprowadzamy wektor jednostkowy kierunku prędkości kątowej: {{CentrujWzór|<MATH> \vec n=\frac{\vec\omega}{|\vec\omega|} \;</MATH>}} Wtedy energia rotacyjna przyjmuje postać: {{CentrujWzór|<MATH> \frac{2T_{\text{rot}}}{\omega^2} =\sum_{k,m=1}^3 I_{km}\,n_k n_m \;</MATH>|7.26}} Momentem bezwładności ciała względem kierunku {{Formuła|<MATH>\vec n\;</MATH>}} nazywamy iloraz podwojonej energii rotacyjnej przez kwadrat prędkości kątowej. Wprowadzając oznaczenie: {{CentrujWzór|<MATH> x_k=\frac{n_k}{I} \;</MATH>}} otrzymujemy równanie elipsoidy bezwładności: {{CentrujWzór|<MATH> I=\sum_{k,m=1}^3 I_{km}\,n_k n_m \quad\Rightarrow\quad 1=\sum_{k,m=1}^3 I_{km}\,x_k x_m \;</MATH>|7.27}} Równość {{LinkWzór|7.27}} przedstawia '''elipsoidę bezwładności''' w trójwymiarowym układzie współrzędnych. Możemy teraz obrać pewne kąty ({{Formuła|<MATH>\theta\;</MATH>}}, {{Formuła|<MATH>\phi\;</MATH>}}, {{Formuła|<MATH>\psi\;</MATH>}}), które definiują obrót układu współrzędnych do takiego układu, w którym tensor bezwładności staje się diagonalny. W układzie własnym bryły sztywnej tensor bezwładności ma postać: {{CentrujWzór|<MATH> \hat I= \begin{bmatrix} A & 0 & 0\\ 0 & B & 0\\ 0 & 0 & C \end{bmatrix} \;</MATH>|7.28}} ---- * Energia rotacyjna w układzie własnym W układzie własnym bryły sztywnej energia rotacyjna przyjmuje postać: {{CentrujWzór|<MATH> 2T_{\text{rot}} = A\,\omega_{x'}^{\,2} + B\,\omega_{y'}^{\,2} + C\,\omega_{z'}^{\,2} \;</MATH>|7.29}} Wielkości {{Formuła|<MATH>A,B,C\;</MATH>}} nazywamy '''głównymi momentami bezwładności ciała'''. ---- * Moment pędu w układzie własnym bryły W układzie własnym bryły sztywnej moment pędu jest równy: {{CentrujWzór|<MATH> \vec K = (A\,\omega_{x'},\;B\,\omega_{y'},\;C\,\omega_{z'}) = (Ap,\;Bq,\;Cr) \;</MATH>|7.30}} * gdzie {{Formuła|<MATH>(p,q,r)\;</MATH>}} są współrzędnymi prędkości kątowej w układzie własnym, zgodnie z równaniami kinematycznymi Eulera {{LinkWzór|7.14}}, {{LinkWzór|7.15}}, {{LinkWzór|7.16}}. ---- * Wniosek Diagonalizacja tensora bezwładności prowadzi do trzech fundamentalnych wielkości — '''głównych momentów bezwładności''' — które opisują bryłę w sposób najprostszy. W tym układzie: * tensor bezwładności jest diagonalny, * energia rotacyjna ma najprostszą postać, * moment pędu jest równoległy do prędkości kątowej tylko wtedy, gdy obrót odbywa się wokół jednej z osi głównych. To jest pełna klasyczna teoria diagonalizacji tensora bezwładności. == Dynamiczne równania Eulera == Wykorzystując równanie opisujące drugą zasadę dynamiki dla ruchu obrotowego {{LinkWzór|1.68|Kinematyka i dynamika klasyczna opisu punktu materialnego/Zasady zachowania}}, a także fakt, że pochodna dowolnego wektora w obracającym się układzie współrzędnych jest opisana wzorem {{LinkWzór|1.187|Kinematyka i dynamika klasyczna opisu punktu materialnego/Układy nieinercjalne}}, otrzymujemy równanie dynamiki bryły sztywnej: {{CentrujWzór|<MATH> \dot{\vec K}+\vec\omega\times\vec K=\vec N \;</MATH>|7.31}} Wektor prędkości kątowej zapisujemy jako: {{CentrujWzór|<MATH> \vec\omega=(p,q,r) \;</MATH>}} W układzie własnym bryły sztywnej tensor bezwładności jest diagonalny {{LinkWzór|7.28}}. Moment pędu w tym układzie ma postać {{LinkWzór|7.30}}: {{CentrujWzór|<MATH> \vec K=(Ap,\;Bq,\;Cr) \;</MATH>}} Podstawiając to do równania {{LinkWzór|7.31}} i rozpisując składowe, otrzymujemy: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>A\dot p + (C-B)\,q r = N_{x'}\;</MATH>|7.32|Obramuj}} | 2 = {{CentrujWzór|<MATH>B\dot q + (A-C)\,r p = N_{y'}\;</MATH>|7.33|Obramuj}} | 3 = {{CentrujWzór|<MATH>C\dot r + (B-A)\,p q = N_{z'}\;</MATH>|7.34|Obramuj}} }} Równania {{LinkWzór|7.32}}, {{LinkWzór|7.33}} i {{LinkWzór|7.34}} nazywamy '''dynamicznymi równaniami Eulera'''. Są one fundamentalnymi równaniami opisującymi ruch obrotowy bryły sztywnej w jej układzie własnym, w którym tensor bezwładności jest diagonalny. W szczególności: * jeśli bryła obraca się wokół jednej z osi głównych, równania upraszczają się do postaci liniowej, * jeśli nie działa moment sił {{Formuła|<MATH>\vec N=0\;</MATH>}}, równania opisują swobodny ruch bryły sztywnej — prowadząc do zjawisk takich jak precesja i niestabilność obrotu wokół osi pośredniej. To jest pełna postać dynamicznych równań Eulera. == Ruch bryły sztywnej wokół swobodnej osi == Tutaj będziemy rozpatrywać ruch bryły sztywnej, na którą '''nie działają żadne momenty sił''', czyli: {{CentrujWzór|<MATH> \vec N=0 \;</MATH>}} Zakładamy dodatkowo, że prędkość kątowa jest stała, tzn. jej składowe p,q,r nie zmieniają się w czasie: {{CentrujWzór|<MATH> \dot p=\dot q=\dot r=0 \;</MATH>}} Wtedy dynamiczne równania Eulera {{LinkWzór|7.32}}, {{LinkWzór|7.33}}, {{LinkWzór|7.34}} przyjmują postać: {{CentrujWzór|<MATH> (C-B)qr=(A-C)rp=(B-A)pq=0 \;</MATH>|7.35}} Ponieważ zakładamy, że parametry A, B, C są różne, to z trzech iloczynów musi być '''co najmniej dwa równe zero''', co oznacza, że tylko '''jedna''' składowa prędkości kątowej może być niezerowa. To kończy rozważania dla przypadku idealnie stałej prędkości kątowej. ---- * Przypadek bardziej realistyczny: małe odchylenia od osi głównej Rozpatrzmy teraz inny przypadek, w którym: * prędkość kątowa wokół osi głównej jest prawie stała: {{CentrujWzór|<MATH>p=p_0=\text{const}\;</MATH>}} * składowe q i r są bardzo małe, * nadal nie działa moment sił: {{CentrujWzór|<MATH>\vec N=0\;</MATH>}} Dynamiczne równania Eulera redukują się do: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>A\dot p+(C-B)qr=0\;</MATH>|7.36}} | 2 = {{CentrujWzór|<MATH>B\dot q+(A-C)rp_0=0\;</MATH>|7.37}} | 3 = {{CentrujWzór|<MATH>C\dot r+(B-A)qp_0=0\;</MATH>|7.38}} }} Ponieważ p=p₀ jest stałe, równanie {{LinkWzór|7.36}} jest tożsamościowo równe zero. Pozostają dwa równania sprzężone dla q i r. ---- * Wyprowadzenie równań dla q i r Różniczkujemy równanie {{LinkWzór|7.37}} i podstawiamy do {{LinkWzór|7.38}}. Otrzymujemy dwa równania drugiego rzędu: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\ddot q=-H\,q\;</MATH>|7.39}} | 2 = {{CentrujWzór|<MATH>\ddot r=-H\,r\;</MATH>|7.40}} | 3 = {{CentrujWzór|<MATH>H=\frac{A-C}{B}\,\frac{A-B}{C}\,p_0^2\;</MATH>|7.41}} }} ---- * Rozwiązania równań {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>q=q_0 e^{bt}\;</MATH>|7.42}} | 2 = {{CentrujWzór|<MATH>r=r_0 e^{bt}\;</MATH>|7.43}} | 3 = {{CentrujWzór|<MATH>b^2=-H\;</MATH>|7.44}} }} ---- * Interpretacja fizyczna * '''Przypadek stabilny''' — gdy {{Formuła|<MATH>H>0\;</MATH>}} Warunek: {{CentrujWzór|<MATH> H>0 \;\Rightarrow\; (A>C \text{ i } A>B)\quad\text{lub}\quad(A<C \text{ i } A<B) \;</MATH>}} Wtedy: {{CentrujWzór|<MATH> b^2=-H<0 \Rightarrow b=\pm i\sqrt{H} \;</MATH>}} Rozwiązania są oscylacyjne: {{CentrujWzór|<MATH> q=q_0\cos(\sqrt{H}\,t),\qquad r=r_0\cos(\sqrt{H}\,t) \;</MATH>}} Bryła wykonuje '''stabilne oscylacje''' wokół osi głównej. ---- * '''Przypadek niestabilny''' — gdy {{Formuła|<MATH>H<0\;</MATH>}} Warunek: {{CentrujWzór|<MATH> H<0 \;\Rightarrow\; (A>C \text{ i } A<B)\quad\text{lub}\quad(A<C \text{ i } A>B) \;</MATH>}} Wtedy: {{CentrujWzór|<MATH> b^2=-H>0 \Rightarrow b=\pm\sqrt{-H} \;</MATH>}} Rozwiązania są wykładnicze: {{CentrujWzór|<MATH> q=q_0 e^{\sqrt{-H}\,t},\qquad r=r_0 e^{\sqrt{-H}\,t} \;</MATH>}} Bryła wykonuje '''niestabilny ruch''', w którym małe odchylenia rosną wykładniczo — jest to klasyczna '''niestabilność obrotu wokół osi pośredniej''' (tzw. ''efekt Dziewięciu Palców'', znany z akrobacji kosmicznych). ---- * Wniosek końcowy * Obrót wokół '''największego''' lub '''najmniejszego''' głównego momentu bezwładności jest '''stabilny'''. * Obrót wokół '''pośredniego''' momentu bezwładności jest '''niestabilny'''. To jest jedno z najważniejszych twierdzeń dynamiki bryły sztywnej — wyjaśnia, dlaczego np. książka rzucona w powietrze nie chce obracać się wokół osi pośredniej. == Ruch bez udziału sił giroskopu symetrycznego == Rozpatrzmy giroskop symetryczny, czyli bryłę sztywną, dla której tensor momentu bezwładności posiada dwie równe wartości główne. Oznacza to, że bryła posiada jedną wyróżnioną oś symetrii, którą oznaczamy jako oś {{Formuła|<MATH>x'</MATH>}}. W takim przypadku zachodzi zależność: {{CentrujWzór|<MATH> A = B </MATH>}} oraz trzeci moment bezwładności C jest momentem względem osi symetrii. Jest to klasyczny przypadek tzw. '''bąka symetrycznego''', który stanowi najprostszy, lecz jednocześnie niezwykle ważny przykład ruchu bryły sztywnej. W niniejszym rozdziale analizujemy ruch giroskopu w polu grawitacyjnym, lecz przy założeniu, że giroskop jest '''podparty dokładnie w swoim środku masy'''. Oznacza to, że siła ciężkości działa na środek masy, a więc nie wywołuje żadnego momentu względem tego punktu. Jest to sytuacja fizycznie bardzo istotna: giroskop nie „czuje” grawitacji, ponieważ jego środek masy jest punktem podparcia. Z definicji środka masy {{LinkWzór|3.1|Dynamika_punktów_masowych}} mamy: {{CentrujWzór|<MATH> \vec N = \sum_i \vec r_i \times (m_i \vec g) = \left(\sum_i m_i \vec r_i\right)\times \vec g = 0, </MATH>|7.45}} co oznacza, że '''moment siły ciężkości jest równy zero'''. W konsekwencji ruch giroskopu jest ruchem *swobodnym*, czyli takim, w którym nie działają żadne momenty zewnętrzne. === Równania ruchu giroskopu symetrycznego === Równania Eulera dla bryły sztywnej w przypadku A = B przyjmują postać: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>A\dot p=(C-A)\,q r=0</MATH>|7.46}} | 2 = {{CentrujWzór|<MATH>A\dot q+(A-C)\,r p=0</MATH>|7.47}} | 3 = {{CentrujWzór|<MATH>C\dot r=0</MATH>|7.48}} }} Z równania {{LinkWzór|7.48}} natychmiast wynika: {{CentrujWzór|<MATH> r = r_0 = \text{const}. </MATH>}} Oznacza to, że składowa prędkości kątowej wokół osi symetrii jest stała. Jest to fundamentalna własność giroskopu: obrót wokół osi symetrii nie zmienia się w czasie, ponieważ nie działa na niego żaden moment zewnętrzny. Pozostałe równania upraszczają się do: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\dot p - R q = 0</MATH>|7.49}} | 2 = {{CentrujWzór|<MATH>\dot q + R p = 0</MATH>|7.50}} | 3 = {{CentrujWzór|<MATH>R=\frac{A-C}{A}\,r_0</MATH>|7.51}} }} Wielkość R jest proporcjonalna do prędkości obrotowej wokół osi symetrii. Jest to tzw. ''częstość precesji swobodnej''. === Równania drugiego rzędu === Różniczkujemy równanie {{LinkWzór|7.49}}: {{CentrujWzór|<MATH> \ddot p - R\dot q = 0. </MATH>}} Podstawiamy z {{LinkWzór|7.50}}: {{CentrujWzór|<MATH> \ddot p + R^2 p = 0. </MATH>|7.52}} Analogicznie: {{CentrujWzór|<MATH> \ddot q + R^2 q = 0. </MATH>|7.53}} Są to równania oscylatora harmonicznego o częstości R. === Rozwiązania === {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>p=a\sin(Rt+\phi)</MATH>|7.54}} | 2 = {{CentrujWzór|<MATH>q=a\cos(Rt+\phi)</MATH>|7.55}} }} Oznacza to, że składowe prędkości kątowej p i q wykonują ruch kołowy na płaszczyźnie (x', y'). Prędkość kątowa giroskopu: {{CentrujWzór|<MATH> \omega^{2} = p^{2}+q^{2}+r^{2} = a^{2}+r_0^{2} = \text{const}. </MATH>|7.56}} Wektor prędkości kątowej zakreśla okrąg na płaszczyźnie (x', y'), a jego koniec porusza się po powierzchni stożka. Kąt rozwarcia stożka: {{CentrujWzór|<MATH> \gamma=\operatorname{arctg}\frac{a}{r_0}. </MATH>|7.57}} {{Rysunek|Giroskop symetryczny.png|lk2|Zakreskowany stożek jaki zakreśla giroskop symetryczny podczas swojego ruchu.}} === Powiązanie z kinematycznymi równaniami Eulera === Korzystamy z równań {{LinkWzór|7.14}}, {{LinkWzór|7.15}}, {{LinkWzór|7.16}}: {{CentrujWzór|<MATH> \begin{cases} p=a\sin(Rt+\phi)=\dot{\varphi}\sin\theta\sin\psi+\dot{\theta}\cos\psi\\ q=a\cos(Rt+\phi)=\dot{\varphi}\sin\theta\cos\psi-\dot{\theta}\sin\psi\\ r_0=\dot{\varphi}\cos\theta+\dot{\psi} \end{cases} </MATH>|7.58}} Są to równania kinematyczne, które łączą prędkości kątowe w układzie bryłowym z pochodnymi kątów Eulera. === Wektor momentu pędu równoległy do osi z' === Współrzędne momentu pędu: {{CentrujWzór|<MATH> \begin{cases} K_{x'}=K\sin\theta\sin\psi,\\ K_{y'}=K\sin\theta\cos\psi,\\ K_{z'}=K\cos\theta. \end{cases} </MATH>|7.59}} Z definicji momentu pędu {{LinkWzór|7.30}}: {{CentrujWzór|<MATH> \begin{cases} K_{x'}=Ap=K\sin\theta\sin\psi,\\ K_{y'}=Aq=K\sin\theta\cos\psi,\\ K_{z'}=Cr_0=K\cos\theta. \end{cases} </MATH>|7.60}} Z ostatniego równania wynika: {{Formuła|<MATH>\theta=\theta_0=\text{const}</MATH>}} oraz {{Formuła|<MATH>\dot\varphi=\text{const}</MATH>}}. Oznacza to, że oś giroskopu wykonuje ruch stożkowy o stałym kącie nachylenia. === Ostateczne równania ruchu === Z układu {{LinkWzór|7.58}} otrzymujemy: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\psi=Rt+\phi</MATH>|7.62}} | 2 = {{CentrujWzór|<MATH>\dot\varphi=\frac{a}{\sin\theta_0}</MATH>|7.63}} }} Integracja: {{CentrujWzór|<MATH> \varphi=\frac{a}{\sin\theta_0}\,t+\varphi_0. </MATH>|7.64}} Z równania na r₀: {{CentrujWzór|<MATH> (r_0-R)\tan\theta_0=a \Rightarrow \tan\theta_0=\frac{aA}{r_0 C}. </MATH>|7.65}} === Końcowy układ równań ruchu giroskopu symetrycznego === {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\psi=Rt+\phi</MATH>|7.66}} | 2 = {{CentrujWzór|<MATH>\varphi=\frac{a}{\sin\theta_0}\,t+\varphi_0</MATH>|7.67}} | 3 = {{CentrujWzór|<MATH>\theta_0=\operatorname{arctg}\frac{aA}{r_0 C}</MATH>|7.68}} }} === Interpretacja fizyczna === Powyższe równania opisują ciało, którego oś obrotu: * porusza się z prędkością kątową {{Formuła|<MATH>R</MATH>}} wokół osi z', * jednocześnie wykonuje ruch obiegowy z prędkością kątową {{Formuła|<MATH>\dot\varphi</MATH>}}, * a kąt nachylenia osi obrotu {{Formuła|<MATH>\theta_0</MATH>}} pozostaje stały. Jest to klasyczny opis '''precesji swobodnej giroskopu symetrycznego''', znanej również jako *precesja Eulera*. Wektor prędkości kątowej zakreśla stożek Poinsota, natomiast wektor momentu pędu pozostaje stały w przestrzeni. Oś giroskopu wykonuje ruch stożkowy, a cały ruch jest w pełni okresowy. == Giroskop symetryczny szybko poruszający się w polu grawitacyjnym == Rozpatrzmy giroskop, którego ruch odbywa się w polu grawitacyjnym, a jego tensor momentu bezwładności jest diagonalny. Oznacza to, że bryła posiada jedną oś symetrii, a jej trzy główne momenty bezwładności przyjmują wartości A, B oraz C. W przypadku giroskopu symetrycznego zachodzi równość A = B, natomiast C jest momentem bezwładności względem osi symetrii. Dzięki temu opis ruchu znacznie się upraszcza, ponieważ prędkości kątowe w układzie związanym z bryłą przyjmują postać zależną jedynie od kątów Eulera. Warto podkreślić, że giroskop symetryczny jest jednym z najważniejszych obiektów w klasycznej mechanice bryły sztywnej. Jego ruch jest podstawą działania żyroskopów, żyrokompasów, stabilizatorów, a także wielu urządzeń technicznych, w których wykorzystuje się własność zachowania momentu pędu. Giroskop symetryczny jest również jednym z najprostszych przykładów ruchu precesyjnego i nutacyjnego, które pojawiają się w wielu dziedzinach fizyki — od mechaniki klasycznej, przez mechanikę kwantową, aż po fizykę jądrową. Energia rotacyjna giroskopu jest wyrażona wzorem {{LinkWzór|7.20}}, natomiast lagrangian otrzymujemy po podstawieniu zależności kinematycznych {{LinkWzór|7.14}}, {{LinkWzór|7.15}} oraz {{LinkWzór|7.16}}: {{CentrujWzór|<MATH> L = T - U = \frac{A}{2}\omega_{x'}^{2} + \frac{B}{2}\omega_{y'}^{2} + \frac{C}{2}\omega_{z'}^{2} - U. </MATH>|7.69}} Po podstawieniu pełnych wyrażeń na składowe prędkości kątowej otrzymujemy rozwinięcie lagrangianu, w którym pojawiają się kombinacje trzech prędkości kątowych: {{Formuła|<MATH>\dot{\varphi}</MATH>}}, {{Formuła|<MATH>\dot{\theta}</MATH>}} oraz {{Formuła|<MATH>\dot{\psi}</MATH>}}. Warto zauważyć, że składowa związana z momentem C jest szczególna, ponieważ odpowiada obrotowi wokół osi symetrii giroskopu. Ponieważ lagrangian nie zależy jawnie od czasu, zgodnie z zasadą Hamiltona {{LinkWzór|6.22|Równania Lagrange'a drugiego rodzaju i zasada Hamiltona}}, energia całkowita układu pozostaje stała: {{CentrujWzór|<MATH> E = \frac{A}{2}(\dot{\varphi}^{2}\sin^{2}\theta + \dot{\theta}^{2}) + \frac{C}{2}(\dot{\varphi}\cos\theta + \dot{\psi})^{2} + Mgs\cos\theta. </MATH>|7.70}} Współrzędne {{Formuła|<MATH>\varphi</MATH>}} oraz {{Formuła|<MATH>\psi</MATH>}} są cykliczne, co oznacza, że odpowiadające im pędy są stałe w czasie. Jest to konsekwencja symetrii układu — brak jawnej zależności lagrangianu od tych współrzędnych: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\frac{\partial L}{\partial\dot{\varphi}}=A\dot{\varphi}\sin^{2}\theta+C(\dot{\psi}+\dot{\varphi}\cos\theta)\cos\theta=\alpha</MATH>|7.71}} | 2 = {{CentrujWzór|<MATH>\frac{\partial L}{\partial\dot{\psi}}=C(\dot{\psi}+\dot{\varphi}\cos\theta)=\beta</MATH>|7.72}} }} Warto zauważyć, że wielkości α i β mają jasną interpretację fizyczną: są to składowe momentu pędu związane odpowiednio z ruchem precesyjnym oraz ruchem wokół osi symetrii giroskopu. Podstawiając równanie {{LinkWzór|7.72}} do {{LinkWzór|7.71}}, otrzymujemy zależność na prędkość precesji: {{CentrujWzór|<MATH> \dot{\varphi} = \frac{\alpha - \beta\cos\theta}{A\sin^{2}\theta}. </MATH>|7.73}} Po podstawieniu tych zależności do równania energii otrzymujemy równanie ruchu dla kąta nutacji θ: {{CentrujWzór|<MATH> \frac{A}{2}\dot{\theta}^{2} + \frac{(\alpha - \beta\cos\theta)^{2}}{2A\sin^{2}\theta} + \frac{\beta^{2}}{2C} + Mgs\cos\theta = E. </MATH>|7.74}} Warunki początkowe przyjmujemy w postaci: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\theta(0)=\frac{\pi}{2}</MATH>|7.75}} | 2 = {{CentrujWzór|<MATH>\varphi(0)=0</MATH>|7.76}} | 3 = {{CentrujWzór|<MATH>\psi(0)=0</MATH>|7.77}} | 4 = {{CentrujWzór|<MATH>\dot{\theta}(0)=0</MATH>|7.78}} | 5 = {{CentrujWzór|<MATH>\dot{\varphi}(0)=0</MATH>|7.79}} | 6 = {{CentrujWzór|<MATH>\dot{\psi}(0)=\dot{\psi}_{0}</MATH>|7.80}} }} Warunki te prowadzą do wartości stałych ruchu: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\alpha=0</MATH>|7.81}} | 2 = {{CentrujWzór|<MATH>\beta=C\dot{\psi}_{0}</MATH>|7.82}} | 3 = {{CentrujWzór|<MATH>E=\frac{C}{2}\dot{\psi}_{0}^{2}</MATH>|7.83}} }} Wprowadzamy podstawienie: {{CentrujWzór|<MATH> \theta=\frac{\pi}{2}-\chi, </MATH>|7.84}} co pozwala uprościć równanie energii dla małych wartości χ (sinχ ≈ χ): {{CentrujWzór|<MATH> \frac{A}{2}\dot{\chi}^{2} + \frac{\beta^{2}}{2A}\chi^{2} + \frac{\beta^{2}}{2C} + Mgs\chi = E. </MATH>|7.85}} Różniczkując otrzymujemy równanie ruchu: {{CentrujWzór|<MATH> A\ddot{\chi}+\frac{\beta^{2}}{A}\chi+Mgs=0. </MATH>|7.86}} Jest to równanie oscylatora harmonicznego z przesunięciem równowagi. Jego rozwiązanie ma postać: {{CentrujWzór|<MATH> \chi(t) = c_{1}\cos\left(\frac{\beta}{A}t+c_{2}\right) - \frac{MgsA}{\beta^{2}}. </MATH>|7.87}} Warunki początkowe: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\chi(0)=0</MATH>|7.88}} | 2 = {{CentrujWzór|<MATH>\dot{\chi}(0)=0</MATH>|7.89}} }} pozwalają wyznaczyć stałe całkowania i otrzymać rozwiązanie: {{CentrujWzór|<MATH> \theta(t) = \frac{\pi}{2} + \frac{MgsA}{\beta^{2}} \left(1-\cos\frac{\beta}{A}t\right). </MATH>|7.90}} Widzimy, że bryła wykonuje nutacje wokół kąta {{Formuła|<MATH>\theta=\frac{\pi}{2}</MATH>}}, a amplituda tych drgań zależy od stosunku MgsA/β². Dla małych odchyleń: {{CentrujWzór|<MATH>\sin\theta\simeq 1</MATH>|7.91}} oraz: {{CentrujWzór|<MATH> \cos\theta \simeq \frac{MgsA}{\beta^{2}} \left(1-\cos\frac{\beta}{A}t\right). </MATH>|7.92}} Sprzężone pędy: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH> \alpha \simeq A\dot{\varphi}+\beta\cos\theta = 0 </MATH>|7.93}} | 2 = {{CentrujWzór|<MATH> \beta=C(\dot{\psi}+\dot{\varphi}\cos\theta) </MATH>|7.94}} }} Prędkość precesji: {{CentrujWzór|<MATH> \dot{\varphi} = -\frac{\beta}{A}\cos\theta \Rightarrow \varphi(t) = \frac{Mgs}{\beta} \left[ t - \frac{A}{\beta}\sin\left(\frac{\beta}{A}t\right) \right]. </MATH>|7.95}} Oś giroskopu zatacza koło z prędkością: {{Formuła|<MATH>\dot{\varphi}=\frac{Mgs}{\beta}</MATH>}}, co nazywamy precesją, natomiast niewielkie oscylacje — nutacjami. Na koniec: {{CentrujWzór|<MATH> \dot{\psi} = \frac{\beta}{C} = \dot{\psi}_{0}. </MATH>|7.96}} == Bąk całkowicie asymetryczny == Rozpatrzmy bąk (bryłę sztywną), który posiada trzy różne, wzajemnie niezależne i diagonalne elementy tensora momentu bezwładności. Oznacza to, że bryła nie posiada żadnej osi symetrii — jest to przypadek najbardziej ogólny, nazywany bąkiem całkowicie asymetrycznym. Przyjmujemy, że główne momenty bezwładności spełniają relację: {{Formuła|<MATH>A > B > C</MATH>}}, co odpowiada klasycznemu uporządkowaniu momentów bezwładności w mechanice bryły sztywnej. W takim przypadku ruch obrotowy jest najbardziej złożony, a równania opisujące dynamikę bąka prowadzą do funkcji eliptycznych Jacobiego. W przeciwieństwie do bąka symetrycznego (gdzie dwa momenty bezwładności są równe) lub bąka osiowego (gdzie dwa momenty są równe i większe od trzeciego), bąk asymetryczny nie posiada żadnej osi, wokół której ruch byłby prosty lub jednorodny. Oznacza to, że ruch jest w pełni trójwymiarowy, a wektor prędkości kątowej nie pozostaje równoległy do wektora momentu pędu. W konsekwencji ruch bąka asymetrycznego jest jednym z najbardziej klasycznych przykładów ruchu quasi-okresowego, w którym pojawiają się funkcje eliptyczne. === Energia i moment pędu bąka asymetrycznego === Całkowita energia kinetyczna ruchu obrotowego oraz kwadrat całkowitego momentu pędu bąka wyrażają się równaniami: {{CentrujWzór|<MATH> \begin{cases} A p^{2} + B q^{2} + C r^{2} = 2E, \\ A^{2} p^{2} + B^{2} q^{2} + C^{2} r^{2} = K^{2}. \end{cases} </MATH>|7.97}} Wielkości p, q, r są składowymi prędkości kątowej w układzie związanym z bryłą, natomiast E jest energią kinetyczną, a K — wartością całkowitego momentu pędu. Równania te można również zapisać w postaci zależnej od składowych momentu pędu: {{CentrujWzór|<MATH> \begin{cases} \frac{K_{x}^{2}}{A} + \frac{K_{y}^{2}}{B} + \frac{K_{z}^{2}}{C} = 2E, \\ K_{x}^{2} + K_{y}^{2} + K_{z}^{2} = K^{2}. \end{cases} </MATH>|7.98}} Pierwsze równanie opisuje elipsoidę energii, drugie — sferę momentu pędu. Ich przecięcie wyznacza możliwe trajektorie wektora momentu pędu w przestrzeni. Elipsoida energii ma półosie: {{Formuła|<MATH>\sqrt{2EA}</MATH>}}, {{Formuła|<MATH>\sqrt{2EB}</MATH>}}, {{Formuła|<MATH>\sqrt{2EC}</MATH>}}. Geometria tych powierzchni jest kluczowa: sfera momentu pędu jest powierzchnią o stałym promieniu K, natomiast elipsoida energii jest powierzchnią o trzech różnych półosiach. Wektor momentu pędu musi leżeć jednocześnie na obu powierzchniach, co oznacza, że jego ruch jest ograniczony do krzywej przecięcia tych dwóch powierzchni. Krzywa ta jest zamknięta, lecz nie jest okręgiem — jest krzywą eliptyczną, co prowadzi do funkcji Jacobiego. === Ograniczenia na wartość K² === Z równań {{LinkWzór|7.98}} otrzymujemy istotne ograniczenia na wartość K²: {{CentrujWzór|<MATH> \begin{cases} K_{x}^{2}\frac{C}{A} + K_{y}^{2}\frac{C}{B} + K_{z}^{2} = 2EC \Rightarrow K^{2} < 2EC, \\ K_{x}^{2} + K_{y}^{2}\frac{A}{B} + K_{z}^{2}\frac{A}{C} = 2EA \Rightarrow K^{2} > 2EA. \end{cases} </MATH>|7.99}} Oznacza to, że wartość całkowitego momentu pędu musi leżeć w przedziale: {{Formuła|<MATH>2EA < K^{2} < 2EC</MATH>}}. Interpretacja fizyczna jest następująca: bąk asymetryczny nie może obracać się z dowolnie dużym momentem pędu przy zadanej energii. Istnieją ograniczenia wynikające z geometrii elipsoidy bezwładności. Wartość K² jest „ściśnięta” pomiędzy dwoma granicami, które odpowiadają ruchowi wokół osi o największym i najmniejszym momencie bezwładności. === Eliminacja p² i r² === Aby wyznaczyć zależności między składowymi prędkości kątowej, eliminujemy kolejno p² oraz r² z układu {{LinkWzór|7.97}}. Mnożąc pierwsze równanie przez C i odejmując od drugiego, otrzymujemy: {{CentrujWzór|<MATH> (AC - A^{2})p^{2} + (BC - B^{2})q^{2} = 2EC - K^{2} \Rightarrow p^{2} = \frac{1}{A(C-A)}\left[(2EC - K^{2}) - B(C-B)q^{2}\right]. </MATH>|7.100}} Analogicznie, mnożąc pierwsze równanie przez A i odejmując od drugiego: {{CentrujWzór|<MATH> (BA - B^{2})q^{2} + (CA - C^{2})r^{2} = 2EA - K^{2} \Rightarrow r^{2} = \frac{1}{C(C-A)}\left[(K^{2}-2EA) - B(B-A)q^{2}\right]. </MATH>|7.101}} Równania te pokazują, że p² i r² są liniowymi funkcjami q². Oznacza to, że ruch bąka asymetrycznego można sprowadzić do jednego równania różniczkowego dla q(t). Jest to kluczowy krok w analizie ruchu bąka asymetrycznego — redukcja trzech równań do jednego równania eliptycznego. === Równanie różniczkowe dla q(t) === Korzystając z równania Eulera: {{CentrujWzór|<MATH> \dot{q} = \frac{C-A}{B}pr, </MATH>|7.102}} i podstawiając do niego zależności {{LinkWzór|7.100}} oraz {{LinkWzór|7.101}}, otrzymujemy: {{CentrujWzór|<MATH> \dot{q} = \frac{1}{B\sqrt{AC}} \sqrt{(2EC - K^{2} - B(C-B)q^{2})} \sqrt{(K^{2}-2EA - B(B-A)q^{2})}. </MATH>|7.102a}} Jest to równanie typu: {{Formuła|<MATH>\dot{q} = \sqrt{(a - bq^{2})(c - dq^{2})}</MATH>}}, które prowadzi do funkcji eliptycznych Jacobiego. Jest to klasyczny przykład równania różniczkowego, którego rozwiązanie nie jest trygonometryczne, lecz eliptyczne. === Wprowadzenie zmiennych eliptycznych === Wprowadzamy zmienne pomocnicze, które pozwalają sprowadzić równania ruchu bąka asymetrycznego do postaci równań eliptycznych. Zmienne te są tak dobrane, aby równanie różniczkowe opisujące ewolucję współrzędnej q(t) przyjęło postać kanoniczną równania funkcji Jacobiego. Pierwszą zmienną jest przeskalowany czas: {{CentrujWzór|<MATH> \tau = t \sqrt{ \frac{(C - B)(K^{2} - 2EA)}{ABC} } </MATH>|7.103}} Zmienna τ jest czasem „eliptycznym”, czyli czasem przeskalowanym tak, aby równanie ruchu miało postać standardową dla funkcji Jacobiego. Drugą zmienną jest przeskalowana współrzędna q: {{CentrujWzór|<MATH> s = q \sqrt{ \frac{B(C - B)}{2EC - K^{2}} } </MATH>|7.104}} Zmienna s jest bezwymiarową zmienną eliptyczną, która przyjmuje wartości w przedziale od −1 do 1. Dzięki temu równanie ruchu sprowadza się do równania funkcji sn(τ). Wprowadzamy również parametr eliptyczny k², który określa „kształt” funkcji Jacobiego: {{CentrujWzór|<MATH> k^{2} = \frac{ (B - A)(2EC - K^{2}) }{ (C - B)(K^{2} - 2EA) } </MATH>|7.105}} Parametr k² decyduje o okresie funkcji Jacobiego oraz o charakterze oscylacji. Dla k² bliskiego 0 funkcje Jacobiego zachowują się jak funkcje trygonometryczne, natomiast dla k² bliskiego 1 zachowują się jak funkcje hiperboliczne. Po obliczeniu pochodnej ds/dτ otrzymujemy równanie różniczkowe: {{CentrujWzór|<MATH> \frac{ds}{d\tau} = \sqrt{ (1 - s^{2}) (1 - k^{2}s^{2}) } </MATH>|7.106}} Jest to klasyczne równanie różniczkowe funkcji eliptycznych Jacobiego. Zawiera dwa czynniki: pierwszy odpowiada oscylacjom sinusoidalnym, drugi — oscylacjom eliptycznym zależnym od parametru k². Całkując równanie {{LinkWzór|7.106}}, otrzymujemy: {{CentrujWzór|<MATH> \tau = \int_{0}^{s} \frac{ds}{ \sqrt{ (1 - s^{2}) (1 - k^{2}s^{2}) } } </MATH>|7.107}} Całka ta jest standardową postacią całki eliptycznej pierwszego rodzaju. Jej rozwiązaniem jest funkcja Jacobiego sn(τ): {{CentrujWzór|<MATH> s = \operatorname{sn}\tau </MATH>|7.107a}} Pozostałe funkcje Jacobiego definiujemy analogicznie: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH> \operatorname{cn}\tau = \sqrt{ 1 - \operatorname{sn}^{2}\tau } </MATH>|7.108}} | 2 = {{CentrujWzór|<MATH> \operatorname{dn}\tau = \sqrt{ 1 - k^{2}\operatorname{sn}^{2}\tau } </MATH>|7.109}} }} Funkcje Jacobiego opisują ruch bąka asymetrycznego w sposób naturalny. Funkcja sn(τ) opisuje oscylacje q(t), funkcja cn(τ) opisuje oscylacje p(t), a funkcja dn(τ) opisuje oscylacje r(t). Są to funkcje okresowe, lecz ich okres zależy od parametru k², co oznacza, że ruch bąka asymetrycznego jest quasi‑okresowy. Funkcje Jacobiego stanowią więc naturalny język matematyczny do opisu ruchu bąka asymetrycznego, ponieważ uwzględniają zarówno oscylacje sinusoidalne, jak i eliptyczne, wynikające z asymetrii momentów bezwładności. === Prędkości kątowe === Prędkości kątowe wyrażają się następująco: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH> q = \sqrt{\frac{2EC-K^{2}}{B(C-B)}}\operatorname{sn}\tau, </MATH>|7.110}} | 2 = {{CentrujWzór|<MATH> p = \sqrt{\frac{2EC-K^{2}}{A(C-A)}}\operatorname{cn}\tau, </MATH>|7.113}} | 3 = {{CentrujWzór|<MATH> r = \sqrt{\frac{K^{2}-2EA}{C(C-A)}}\operatorname{dn}\tau. </MATH>|7.114}} }} W granicy k² → 0 funkcje eliptyczne przechodzą w trygonometryczne: snτ → sinτ, cnτ → cosτ, dnτ → 1. Oznacza to, że ruch bąka asymetrycznego przechodzi w ruch bąka symetrycznego, gdy A → B lub B → C. === Składowe momentu pędu === Składowe momentu pędu bąka asymetrycznego wyrażają się równaniami zależnymi od kątów Eulera oraz od składowych prędkości kątowych p, q, r. Zależności te wynikają z definicji momentu pędu w układzie związanym z bryłą oraz z transformacji między układem laboratoryjnym a układem własnym bryły: {{CentrujWzór|<MATH> \begin{cases} K\sin\theta\sin\psi = Ap, \\ K\sin\theta\cos\psi = Bq, \\ K\cos\theta = Cr. \end{cases} </MATH>|7.115}} Pierwsze dwa równania wiążą składowe momentu pędu w płaszczyźnie prostopadłej do osi trzeciej, natomiast trzecie równanie wiąże składową wzdłuż osi trzeciej z prędkością kątową r. Zależności te są podstawą do wyznaczenia kątów Eulera w funkcji czasu. Z trzeciego równania {{LinkWzór|7.115}} otrzymujemy zależność na cosinus kąta nutacji θ: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH> \cos\theta = \frac{Cr}{K} = \sqrt{ \frac{C(K^{2} - 2EA)}{K^{2}(C - A)} } \operatorname{dn}\tau </MATH>|7.116}} | 2 = {{CentrujWzór|<MATH> \tan\psi = \frac{Ap}{Bq} = \sqrt{ \frac{A(C - B)}{B(C - A)} } \frac{\operatorname{cn}\tau}{\operatorname{sn}\tau} </MATH>|7.117}} }} Pierwsza zależność {{LinkWzór|7.116}} pokazuje, że kąt nutacji θ(t) jest funkcją eliptyczną typu dn(τ). Oznacza to, że oś bryły wykonuje oscylacje o amplitudzie zależnej od parametrów A, B, C oraz od energii E i momentu pędu K. Druga zależność {{LinkWzór|7.117}} pokazuje, że kąt precesji własnej ψ(t) jest funkcją ilorazu cn(τ)/sn(τ), czyli funkcją eliptyczną typu cotangensowego. Oznacza to, że precesja własna jest modulowana przez oscylacje nutacji. Kąt φ wyznaczamy z zależności: {{CentrujWzór|<MATH> \dot{\varphi} = \frac{p\sin\psi + q\cos\psi}{\sin\theta} = K\frac{Ap^{2} + Bq^{2}}{K^{2} - C^{2}r^{2}} = K\frac{Ap^{2} + Bq^{2}}{A^{2}p^{2} + B^{2}q^{2}} </MATH>|7.118}} Wyrażenie to jest równaniem różniczkowym dla kąta φ(t). Po scałkowaniu względem czasu otrzymujemy funkcję φ(t), która jest funkcją eliptyczną zależną od τ(t), a więc od czasu. Całka ta jest złożona, ponieważ zawiera funkcje Jacobiego sn(τ), cn(τ), dn(τ), które modulują prędkość precesji. W rezultacie ruch bąka asymetrycznego jest quasi‑okresowy: kąt nutacji θ(t) oscyluje z okresem zależnym od parametru eliptycznego k², kąt ψ(t) wykonuje oscylacje modulowane przez funkcje Jacobiego, a kąt φ(t) rośnie w sposób eliptyczny, z prędkością zależną od energii i momentu pędu. Jest to pełny opis ruchu bąka asymetrycznego w języku funkcji eliptycznych Jacobiego. === Interpretacja fizyczna ruchu bąka asymetrycznego === Ruch bąka asymetrycznego jest jednym z najbardziej klasycznych przykładów ruchu quasi-okresowego. Wektor prędkości kątowej wykonuje złożony ruch na powierzchni elipsoidy bezwładności, natomiast wektor momentu pędu wykonuje ruch po krzywej przecięcia sfery momentu pędu z elipsoidą energii. Ruch ten jest zamknięty, lecz nie jest okręgiem — jest krzywą eliptyczną. Funkcje Jacobiego opisują ten ruch w sposób naturalny: sn opisuje oscylacje q(t), cn opisuje oscylacje p(t), a dn opisuje oscylacje r(t). Są to funkcje okresowe, lecz ich okres zależy od parametru k², co oznacza, że ruch bąka asymetrycznego jest quasi-okresowy. W granicy A → B lub B → C ruch przechodzi w ruch bąka symetrycznego, który jest znacznie prostszy i opisany funkcjami trygonometrycznymi. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> faw4eulnz4uchbe2i2q0gtepdf96jmn Szablon:Tabela/opis 10 56587 559469 559365 2026-10-16T14:27:23Z Persino 2851 559469 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|Module:Tabela}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon generuje wiki-tabelkę na podstawie jego parametrów. Szablon znacznie ułatwia tworzenie wiki-tabel za pomocą wysokopoziomowego interfejsu, czyli tego szablonu. On tworzy niskopoziomową wiki-tabelkę na podstawie parametrów tego szablonu. Zwraca uwagę, czy jakieś parametry nie zostały podane, czy są prawidłowe. == Opis parametrów == ; Opakowanie ramkowe tabeli * {{Code|pozycja}} - wartości: {{Tt|prawo}}, {{Tt|lewo}} i {{Tt|centruj}}, poniższe parametry mogą być jedynie używane z tym argumentem, * {{Code|id op}} - unikalny identyfikator {{Code|id}}, w całym {{Code|DOM}} w HTML, opakowania tabelki, * {{Code|klasa op}} - klasa całości opakowania tabelki, kaskadowych arkuszy stylów CSS, * {{Code|styl op}} - styl CSS, opakowania tabelki, właściwości wraz z ich wartościami. ; Tabela - liczba wierszy i kolumn * {{Code|liczba wierszy}} - liczba wierszy, * {{Code|liczba kolumn}} - liczba kolumn. ; Tabela - ustawienia (parametry) całej tabeli * {{Code|id}} - unikalny identyfikator {{Code|id}}, w całym {{Code|DOM}} w HTML, całej tabelki, * {{Code|klasa}} - klasa całości tabeli, kaskadowych arkuszy stylów CSS, * {{Code|styl}} - styl CSS, całej tabeli, właściwości wraz z ich wartościami, * {{Code|atrybuty}} - atrybuty tabelki. ; Tabela - tytuł * {{Code|id tytułu}} - id tytułu, * {{Code|klasa tytułu}} - klasa tytułu, * {{Code|styl tytułu}} - styl tytułu, * {{Code|opcje tytułu}} - opcje tytułu. ;; Zawartość tytułu * {{Code|tytuł}} - tytuł tabeli. ; Tabela - nagłówek (parametry) * {{Code|id nagłówka}} - id, głównego wiersza nagłówka tabeli, na jego górze, kaskadowych arkuszy stylów CSS, * {{Code|klasa nagłówka}} - klasa, głównego wiersza nagłówka tabeli, na jego górze, kaskadowych arkuszy stylów CSS, * {{Code|styl nagłówka}} - styl, głównego wiersza nagłówków tabeli, na jego górze, CSS, tzn. właściwości i ich wartości, * {{Code|opcje nagłówka}} - opcje, głównego wiersza nagłówków tabeli, na jego górze, CSS, tzn. właściwości i ich wartości. ; Tabela - komórki nagłówka tabeli (parametry) * {{Code|id 1}}, {{Code|...}}, {{Code|id N}} - id nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|klasa 1}}, {{Code|...}}, {{Code|klasa N}} - klasa nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|styl 1}}, {{Code|...}}, {{Code|styl N}} - styl nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|opcje 1}}, {{Code|...}}, {{Code|opcje N}} - opcje nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|kolumny 1}}, {{Code|...}}, {{Code|kolumny N}} - informacje, mówiące ile kolumn nagłówka, w tabeli, ma scalić. ;; Zawartość komórek nagłówka * {{Code|nagłówek 1}}, {{Code|...}}, {{Code|nagłówek N}} - zawartość nagłówków tabeli, głównego wiersza nagłówków na jego górze. ; Tabela - parametry wierszy * {{Code|id wiersza 1}}, {{Code|id wiersza 2}}, {{Code|...}}, {{Code|id wiersza i}}, {{Code|...}}, {{Code|id wiersza M}} - id poszczególnych wierszy komórek tabeli, * {{Code|klasa wiersza 1}}, {{Code|klasa wiersza 2}}, {{Code|...}}, {{Code|klasa wiersza i}}, {{Code|...}}, {{Code|klasa wiersza M}} - klasa poszczególnych wierszy komórek tabeli, * {{Code|styl wiersza 1}}, {{Code|styl wiersza 2}}, {{Code|...}}, {{Code|styl wiersza i}}, {{Code|...}}, {{Code|styl wiersza M}} - styl poszczególnych wierszy komórek tabeli, * {{Code|opcje wiersza 1}}, {{Code|opcje wiersza 2}}, {{Code|...}}, {{Code|opcje wiersza i}}, {{Code|...}}, {{Code|opcje wiersza M}} - opcje poszczególnych wierszy komórek tabeli. ; Tabela - scalanie wierszy i kolumn * {{Code|wiersze 1_1}}, {{Code|wiersze 1_2}}, {{Code|...}}, {{Code|wiesze i_j}}, {{Code|...}}, {{Code|wiersze M_N}} - informacja, ile wierszy ma scalić dla danej komórki, * {{Code|kolumny 1_1}}, {{Code|kolumny 1_2}}, {{Code|...}}, {{Code|kolumny i_j}}, {{Code|...}}, {{Code|kolumny M_N}} - informacja, ile kolumn ma scalić dla danej komórki, * {{Code|scal 1_1}}, {{Code|scal 1_2}}, {{Code|...}}, {{Code|scal i_j}}, {{Code|...}}, {{Code|scal M_N}} - informacja, ile wierszy i kolumn ma scalić dla danej komórki. ; Tabela - ustawienia wierszy i kolumn * {{Code|id 1_1}}, {{Code|id 1_2}}, {{Code|...}}, {{Code|id i_j}}, {{Code|...}}, {{Code|id M_N}} - id poszczególnych komórek tabeli, * {{Code|klasa 1_1}}, {{Code|klasa 1_2}}, {{Code|...}}, {{Code|klasa i_j}}, {{Code|...}}, {{Code|klasa M_N}} - klasa poszczególnych komórek tabeli, * {{Code|styl 1_1}}, {{Code|styl 1_2}}, {{Code|...}}, {{Code|styl i_j}}, {{Code|...}}, {{Code|styl M_N}} - styl poszczególnych komórek tabeli, * {{Code|opcje 1_1}}, {{Code|opcje 1_2}}, {{Code|...}}, {{Code|opcje i_j}}, {{Code|...}}, {{Code|opcje M_N}} - opcje poszczególnych komórek tabeli. ; Kreska pionowa * {{Code|bez pionu 1_1}}, {{Code|bez pionu 1_2}}, {{Code|...}}, {{Code|bez pionu i_j}}, {{Code|...}}, {{Code|bez pionu M_N}} - po parametrach scalania i ustawiania komórek po spacji nie stawia kreski pionowej. ;; Tabela - zawartość wierszy i kolumn * {{Code|komórka 1_1}}, {{Code|komórka 1_2}}, {{Code|...}}, {{Code|komórka i_j}}, {{Code|...}}, {{Code|komórka M_N}} - zawartość komórki tabeli, * {{Code|nagłówek 1_1}}, {{Code|nagłówek 1_2}}, {{Code|...}}, {{Code|nagłówek i_j}}, {{Code|...}}, {{Code|nagłówek M_N}} - gdy wartość niepusta, to traktuje komórkę jako nagłówek, w przeciwnym wypadku, ona oznaczana jest jako zwykła komórka. ---- * {{Code|M}} - numer wiersza, a {{Code|N}} - numer kolumny. Jeżeli na komórce włączyliśmy opcje {{Code|colspan}} lub {{Code|rowspan}} za pomocą parametrów opcji {{Code|opcje i_j}} lub parametrów typu {{Code|wiersze i_j}} lub {{Code|kolumny i_j}} albo za pomocą {{Code|scal i_j}} bądź w przypadku nagłówka za pomocą opcji {{Code|opcje i}} lub parametrów typu {{Code|kolumny i}}, to nazwa parametru pochodzi od tego, skąd zaczynaliśmy scalanie wierszy i kolumn, nawet komórek nagłówka. == Przykład == ; Przykład pierwszy {{Pre| {{s|Tabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} wikitable | atrybuty {{=}} cellspacing{{=}}0 cellpadding{{=}}3 | liczba wierszy {{=}} 6 | liczba kolumn {{=}} 4 | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_2 {{=}} Komórka - wiersz 1 - kolumna 2 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | komórka 2_4 {{=}} Komórka - wiersz 2 - kolumna 4 | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_2 {{=}} Komórka - wiersz 3 - kolumna 2 | komórka 3_3 {{=}} Komórka - wiersz 3 - kolumna 3 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_1 {{=}} Komórka - wiersz 4 - kolumna 1 | komórka 4_2 {{=}} Komórka - wiersz 4 - kolumna 2 | komórka 4_3 {{=}} Komórka - wiersz 4 - kolumna 3 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | komórka 5_1 {{=}} Komórka - wiersz 5 - kolumna 1 | komórka 5_2 {{=}} Komórka - wiersz 5 - kolumna 2 | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | komórka 5_4 {{=}} Komórka - wiersz 5 - kolumna 4 | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_2 {{=}} Komórka - wiersz 6 - kolumna 2 | komórka 6_3 {{=}} Komórka - wiersz 6 - kolumna 3 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 }} }} ; Wynik {{Tabela | styl = width:100%;text-align:center;margin-right:0; | klasa = wikitable | atrybuty = cellspacing=0 cellpadding=3 | liczba wierszy = 6 | liczba kolumn = 4 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład pierwszy|spis= {{PreNowiki| {{Tabela | styl = width:100%;text-align:center;margin-right:0; | klasa = wikitable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} }} }} ---- ; Przykład drugi {{Pre| {{s|Tabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} wikitable | atrybuty {{=}} cellspacing{{=}}0 cellpadding{{=}}3 | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | opcje 1 {{=}} width{{=}}25% | nagłówek 1 {{=}} Nagłówek 1 | opcje 2 {{=}} width{{=}}25% | nagłówek 2 {{=}} Nagłówek 2 | opcje 3 {{=}} width{{=}}25% | nagłówek 3 {{=}} Nagłówek 3 | opcje 4 {{=}} width{{=}}25% | nagłówek 4 {{=}} Nagłówek 4 | liczba wierszy {{=}} 6 | liczba kolumn {{=}} 4 | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_2 {{=}} Komórka - wiersz 1 - kolumna 2 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | komórka 2_4 {{=}} Komórka - wiersz 2 - kolumna 4 | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_2 {{=}} Komórka - wiersz 3 - kolumna 2 | komórka 3_3 {{=}} Komórka - wiersz 3 - kolumna 3 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_1 {{=}} Komórka - wiersz 4 - kolumna 1 | komórka 4_2 {{=}} Komórka - wiersz 4 - kolumna 2 | komórka 4_3 {{=}} Komórka - wiersz 4 - kolumna 3 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | komórka 5_1 {{=}} Komórka - wiersz 5 - kolumna 1 | komórka 5_2 {{=}} Komórka - wiersz 5 - kolumna 2 | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | komórka 5_4 {{=}} Komórka - wiersz 5 - kolumna 4 | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_2 {{=}} Komórka - wiersz 6 - kolumna 2 | komórka 6_3 {{=}} Komórka - wiersz 6 - kolumna 3 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 }} }} ; Wynik {{Tabela | styl = width:100%;text-align:center;margin-right:0; | klasa = wikitable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | opcje 1 = width=25% | nagłówek 1 = Nagłówek 1 | opcje 2 = width=25% | nagłówek 2 = Nagłówek 2 | opcje 3 = width=25% | nagłówek 3 = Nagłówek 3 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład drugi|spis= {{PreNowiki| {{Tabela | styl = width:100%;text-align:center;margin-right:0; | klasa = wikitable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | opcje 1 = width=25% | nagłówek 1 = Nagłówek 1 | opcje 2 = width=25% | nagłówek 2 = Nagłówek 2 | opcje 3 = width=25% | nagłówek 3 = Nagłówek 3 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} }} }} ---- ; Przykład trzeci {{Pre| {{s|Tabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} | atrybuty {{=}} cellspacing{{=}}3 cellpadding{{=}}3 border{{=}}"1" | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | styl nagłówka {{=}} background-color:pink; | opcje 1 {{=}} width{{=}}75% | kolumny 1 {{=}} 3 | nagłówek 1 {{=}} Nagłówek 1 | opcje 4 {{=}} width{{=}}25% | nagłówek 4 {{=}} Nagłówek 4 | styl 4 {{=}} background-color:red; | liczba wierszy {{=}} 7 | liczba kolumn {{=}} 4 | kolumny 1_1 {{=}} 2 | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 {{=}} 2 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 {{=}} 3 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | scal 3_1 {{=}} 3 2 | styl 3_1 {{=}} color:red;background-color:yellow;text-align:right; | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | opcje 5_3 {{=}} colspan{{=}}"2" rowspan{{=}}"1" | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 {{=}} 3 | wiersze 6_1 {{=}} 2 | nagłówek 6_1 {{=}} tak | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 {{=}} color:blue; | styl 7_4 {{=}} background-color:grey; | komórka 7_4 {{=}} Komórka - wiersz 7 - kolumna 4 }} }} ; Wynik {{Tabela | styl = width:100%;text-align:center;margin-right:0; | klasa = | atrybuty = cellspacing=3 cellpadding=3 border="1" | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | styl nagłówka = background-color:pink; | opcje 1 = width=75% | kolumny 1 = 3 | nagłówek 1 = Nagłówek 1 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | styl 4 = background-color:red; | liczba wierszy = 7 | liczba kolumn = 4 | kolumny 1_1 = 2 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 = 2 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 = 3 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | scal 3_1 = 3 2 | styl 3_1 = color:red;background-color:yellow;text-align:right; | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | opcje 5_3 = colspan="2" rowspan="1" | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 = 3 | wiersze 6_1 = 2 | nagłówek 6_1 = tak | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 = color:blue; | styl 7_4 = background-color:grey; | komórka 7_4 = Komórka - wiersz 7 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład trzeci|spis= {{PreNowiki| {{Tabela | styl = width:100%;text-align:center;margin-right:0; | klasa = | atrybuty = cellspacing=3 cellpadding=3 border="1" | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | styl nagłówka = background-color:pink; | opcje 1 = width=75% | kolumny 1 = 3 | nagłówek 1 = Nagłówek 1 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | styl 4 = background-color:red; | liczba wierszy = 7 | liczba kolumn = 4 | kolumny 1_1 = 2 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 = 2 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 = 3 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | scal 3_1 = 3 2 | styl 3_1 = color:red;background-color:yellow;text-align:right; | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | opcje 5_3 = colspan="2" rowspan="1" | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 = 3 | wiersze 6_1 = 2 | nagłówek 6_1 = tak | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 = color:blue; | styl 7_4 = background-color:grey; | komórka 7_4 = Komórka - wiersz 7 - kolumna 4 }} }} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": {}, "description": "Szablon generuje tabelę w formacie wiki-kodu w wiki-tekście. Tabelkę edytuje się bezpośrednio w wiki-kodzie, a nie za pomocą wizualnego edytora, ze względu na ogromną liczbę komórek do uwzględnienia." }</templatedata> == Zobacz też == {{Tabela/opis/Zobacz też}} {{Szablony ramek formułujące kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony pudełek opartych o tabelki | Szablony pudełek tworzące tabele | Szablony ramek generujące wikikod | Szablony formułujące tabele | Szablony specjalne }} </includeonly> rg8g4w4xwzxlzd74qtzb3ks4qvmlkg0 Pomoc:Spis treści/Szablony/Tom I 12 59256 559484 547465 2026-10-17T04:41:43Z Persino 2851 /* Szablony tworzące tabele przy pomocy mechanizmu MediaWiki */ 559484 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc Wikibooks - Szablony}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> == Szablony nazw stron == * {{s|NAZWAKSIĄŻKI}} - zwraca nazwę adresu podręcznika bez nazwy przestrzeni nazw, do której należy. * {{s|PEŁNANAZWAKSIĄŻKI}} - zwraca nazwę adresu podręcznika z nazwą przestrzeni nazw, do której należy. * {{s|SUBNAZWAKSIĄŻKI}} - zwraca nazwę książki, bez jego adresu i przestrzeni nazw, do której należy. * {{s|NAZWAARTYKUŁUKSIĄŻKI}} - zwraca nazwę artykułu podręcznika. * {{s|NAZWAARTYKUŁUKSIĄŻKI2}} - zwraca nazwę artykułu książki lub tytuł książki, jeśli podano pełną nazwę strony. * {{s|PEŁNANAZWAARTYKUŁUKSIĄŻKI}} - zwraca przetworzoną nazwę strony lub nazwę przestrzeni nazw, na podstawie podanej pełnej nazwy strony. * {{s|NAZWAPRZESTRZENIKSIĄŻKI}} - zwraca nazwę przestrzeni nazw, do której należy książka, bez nazwy przestrzeni strony. * {{s|PEŁNANAZWAPRZESTRZENIKSIĄŻKI}} - zwraca nazwę przestrzeni nazw, do której należy książka, z nazwą przestrzeni strony. * {{s|NAZWAKORZENIASTRONY}} - zwraca nazwę korzenia strony bez nazwy przestrzeni nazw, do której należy. * {{s|PEŁNANAZWAKORZENIASTRONY}} - zwraca nazwę korzenia strony z nazwą przestrzeni nazw, do której należy. * {{s|NAZWAPRZESTRZENI}} - zwraca nazwę przestrzeni nazw, strony. * {{s|PRZEDMIOTOWAPRZESTRZEŃ}} - zwraca nazwę przedmiotowej przestrzeni nazw, strony. * {{s|PRZESTRZEŃDYSKUSJI}} - zwraca nazwę przestrzeni nazw dyskusji, strony. * {{s|NAZWASTRONY}} - zwraca nazwę strony bez nazwy przestrzeni nazw. * {{s|BAZOWANAZWASTRONY}} - zwraca nazwę bazową strony, bez nazwy przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron. * {{s|PEŁNANAZWASTRONY}} - zwraca nazwę strony z nazwą przestrzeni nazw. * {{s|PEŁNABAZOWANAZWASTRONY}} - zwraca nazwę bazową strony z nazwą przestrzenią nazw, czyli bezpośredniego rodzica w drzewie adresów stron. * {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}} - zwraca pełną nazwę bazową strony z przedmiotową nazwą przestrzenią nazw, czyli bezpośredniego rodzica w drzewie adresów stron przedmiotowych do podanej strony. * {{s|BAZOWANAZWASTRONYDYSKUSJI}} - zwraca pełną nazwę bazową strony z nazwą przestrzenią nazw dyskusji, czyli bezpośredniego rodzica w drzewie adresów stron dyskusji do podanej strony. * {{s|NAZWASTRONYDYSKUSJI}} - zwraca nazwę strony dyskusji, z jej nazwą przestrzenią nazw, do podanej strony. * {{s|PRZEDMIOTOWANAZWASTRONY}} - zwraca pełną nazwę strony z przedmiotową nazwą przestrzeni nazw. * {{s|NAZWASUBSTRONY}} - zwraca przetworzoną nazwę strony lub nazwę przestrzeni nazw, na podstawie podanej pełnej nazwy strony. == Inne szablony nazw == * {{s|Np}} - szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję polską i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę polską lub angielską. * {{s|NpDane}} - szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. * {{s|NAZWASERWISU}} - szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na Wikipedii, w jakieś podanej wersji językowej. == Szablony liczb nazw stron podręcznikowych == * {{s|LICZBAPODRĘCZNIKÓW}} - szablon wyświetla liczbę podręczników na polskim projekcie {{NAZWASERWISU|link=tak}}. Szablon liczy ich liczbę na podstawie pozycji w kategoriach: {{lk|Wszystkie książki}}, {{lk|Wszystkie książki użytkowników}} i {{lk|Wszystkie książki w brudnopisie projektu}}. == Szablony dopracowania jednostek, lub dla jednostek wymagający naprawy lub usunięcia == * {{s|Dopracować}} oraz {{s|DoPracowania}} i {{s|Cleanup}} (dwa ostatnie to przekierowania do tego pierwszego) i {{s|Dopracować2}} - szablony informujący na stronie artykułu, szablonu, ogólnie jednostek, że popełniono jakiś błąd, coś nie dopracowano, coś wymaga naprawy. * {{s|Ekspresowe kasowanie}}, {{s|Ek}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|EK}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|Delete}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|Screenshot}} (przekierowanie do {{s|Ekspresowe kasowanie}}) - szablony wstawiane na strony (zwykłe strony, kategorie i pliki), cztery pierwsze - jeżeli chcemy usunąć daną stronę lub piąty - jeżeli wykryto naruszenie praw autorskich, co do pliku (grafika, obrazek), i {{s|Ekspresowe kasowanie 2}}, {{s|Ek2}} (przekierowanie do {{s|Ekspresowe kasowanie 2}}) - szablon analogiczny do {{s|Ekspresowe kasowanie}}, dla jego przekierowań: {{s|Ek2}} jest analogiczny do {{s|Ek}}. ** {{s|Admin usuń}} - szablon pomocniczy w celu szybkiego usuwania rzeczy z wiki zostawiając przy tym stosowny opis, dlaczego strona została usunięta. ** {{s|Błąd}} - metaszablon zwraca ''stan błędu'' (rozpoznawany w ten sposób przez {{lpp|funkcje parsera}}) oraz opcjonalnie ''tekst wiadomości błędu'' w kolorze czerwonym (widoczny dla użytkownika element o klasie CSS „error”). Szablon jest używany przez inne szablony do sygnalizowania błędu, na przykład błędnych danych wejściowych, które następnie mogą być wyświetlane zarówno edytorowi lub przechwycone i obsługiwane przez inne szablony. === Szablony typu strony do usunięcia i poczekalni === * {{s|DNU}} - szablon wstawiany do jednostek, informujący co będzie zrobione przypuszczalnie z nim, gdy głosowanie się skończy, {{s|SdU}} ({{s|DoSkasowania}} - przekierowanie) - to samo co {{s|DNU}}, tylko przed głosowaniem, i {{s|SdUwynik}} - tom samo, co {{s|DNU}}, tylko po głosowaniu. * {{s|Kasowanie po przeniesieniu}} i {{s|Kpp}} (przekierowanie do ostatniego) - używany jest do stron (artykuły i podręczniki) w przestrzeni nazw {{Np|(main)|link=tak}} i {{Np|Wikijunior|link=tak}} oraz w przestrzeni nazw {{Np|File|link=tak}} do plików. Informuje autora o okresie, w czasie którego może skopiować zawartość przed jej skasowaniem. * {{s|DNUinfo}} i {{s|DNU/info}} - informują, że strona stworzona przez tego użytkownika została zgłoszona do poczekalni i toczy się nad nim dyskusja. * {{s|LnDNU}} - szablon wstawiający kategorie na strony dyskusji (nie przestrzeń nazw dyskusji) stron zgłoszonych do poczekalni. * {{s|KSdU}} - informuje, że strona została zakwalifikowana do natychmiastowego usunięcia autorstwa użytkownika. * {{s|SDU}} - szablon szkielet, z którego korzysta szablon {{s|SDU/Archiwum}}, który pokazuje wszystkie z archiwizowane strony dyskusji toczących się wcześniej dyskusji, one są przydzielone do odpowiednich kategorii, które informują, co zrobiono po dyskusji. Na każdej strony zarchiwizowanej ze stron dyskusji on umieszcza, z definicji tego szablonu poprzez niego, szablon {{s|Archiwum}}. == Szablony integracji i podziału oraz łączenia historii edycji stron, a także tłumaczeń stron z języka obcego == === Szablony integracji === * {{s|Integruj}} i {{s|Integracja}} (przekierowanie do {{s|Integruj}}) - szablony do integracji podanych jednostek. * {{s|Integruj z}} - integracji tego artykułu z innym artykułem. * {{s|Integruj do}} - integracji artykuł↓ z tą jednostką. * {{s|Integrowanie}} - szablonu używamy, gdy chcemy powiadomić innych wikipedystów, że właśnie trwa integracja danej strony. * {{s|Zintegrowany}} - ten szablon służy zaznaczeniu, że dana strona została {{lpp|Integracja|zintegrowana}} z inną stroną, który nadal istnieje, ale został przekształcony np. na {{lpp|przekierowanie}} lub {{lpr|Strona ujednoznaczniająca|stronę ujednoznaczniającą}}. === Szablony podziału === * {{s|Podziel}} - szablon informujący podział jednostki na inne jednostki. * {{s|Wydziel}} - szablon informuje, że z danej jednostki wydzielono inną jednostkę. * {{s|Podziel sekcję}} - mówi, żeby dana sekcja została przeniesiona do innej jednostki. * {{s|Wydzielony}} - ten szablon służy zaznaczeniu, że dana strona zawiera treści skopiowane z innej istniejącej w Wikibooks strony. === Połączenie historii edycji kilku stron === * {{s|Połącz}} - szablon informujący, by administrator połączył historię edycji podanych stron. === Szablony tłumaczeń z języka obcego stron z projektów siostrzanych, z innej wersji językowej niż polski === * {{s|Przetłumaczony}} - szablon mówi z jakich artykułów w języku obcym korzystano przy tłumaczeniu na język polski, tworząc dany artykuł (stronę). * {{s|Przetłumaczona metastrona}} - szablon mówi, że ta metastrona została przetłumaczona na język polski z języka obcego z projektów siostrzanych. == Szablony problemów umieszczane w tekście == === Weryfikowalność === * {{s|Brak strony}} - szablon informujący, o braku strony, w przypisie artykułu (strony). * {{s|Fakt}} - szablon ten należy umieścić w artykule w miejscu, gdzie ze względu na niepodpartą źródłami treść powinien znajdować się {{lpp|Przypisy|przypis bibliograficzny}}. * {{s|Niewiarygodne źródło}} - szablon ten należy umieścić w artykule obok odnośnika bibliograficznego do nierzetelnego źródła. * {{s|Nie w źródle}} - wstawiamy w treści artykułu, bezpośrednio po odnośniku do źródła (pozycji bibliograficznej, przypisu), które nie zawiera informacji, którą rzekomo ma potwierdzać. * {{s|Martwy link}} - ten szablon używany jest do oznaczania źródeł internetowych zawierających {{lpg|martwy link|martwe linki}}. * {{s|Wątpliwe}} - szablon należy umieścić w artykule przy fragmencie tekstu, który wydaje się wątpliwy i wymaga weryfikacji. === Podręcznikowość === * {{s|Czy to ważne}} - służy on do oznaczania zdań lub wyrażeń, które wydają się nie mieć związku z głównym tematem strony, czyli czynią z niego {{lpr|NIEŁAD|bezładny zbiór informacji}}. === Wyrażenia zwodnicze, typu {{lpr|Unikaj wyrażeń zwodniczych|użyto wyrażeń zwodniczych}} === * {{s|Doprecyzuj}} - szablon kombajn, o którego są zbudowane inne szablony od wskazania wyrażeń zwodniczych. * {{s|Czyim}} - służy on do oznaczania miejsc, takich jak, "zdaniem historyków", "zdaniem poważnych badaczy" i tak dalej. Sformułowania takie są nie dość precyzyjne i wymagają podania źródła, wyjaśnienia konkretnie czyim zdaniem jest tak bądź inaczej. * {{s|Kto}} - służy on do oznaczania miejsc, takich jak "niektórzy twierdzą", "poważni badacze uważają", "naukowcy sądzą", "zdaniem historyków", i tak dalej. * {{s|Przez kogo}} - wstawiamy tam, gdzie widnieje ''uznawane jako'', ''przyjęte'', ''docenione'', ''znienawidzone'' itp. * {{s|Według kogo}} - wstawiamy tam, gdzie widnieje uznawane jako, przyjęte, docenione, znienawidzone. * {{s|Jaka}} - służy dom oznaczania miejsc, w którym nie określono, jakie to jest. * {{s|Jakich}} - służy dom oznaczania miejsc, w którym nie określono, jakich to dotyczy. * {{s|Gdzie}} - służy do oznaczania miejsc, w których takich jak "wyemitowano X odcinków", "tam spędził 10 lat", "produkcja zajmuje 1 miejsce pod względem oglądalności" i tak dalej. * {{s|Kiedy}} - służy do oznaczania miejsc w artykułach, kiedy on lub ona to robiła, jeśli nie nie zrobiono. * {{s|Od kiedy}} - służy do oznaczania miejsc w artykułach, od kiedy on lub ona to robiła, jeśli nie nie zrobiono. === Twórczość własna === * {{s|Or}} - gdy autor artykułu publikuje twórczość własną (stworzoną przez siebie). === Aktualność === * {{s|Aktualizuj po}} - dane w prowadzone do artykułu, mogą się zdezaktualizować, ale są aktualne na stan dzisiejszy, lub mogły zdezaktualizować się. === Szablony komunikatów === ==== Typowe szablony komunikatów ==== * {{s|Ambox}} (szablon wstawianych do przestrzeni podręcznikowych), {{s|AmboxProsty}} (prosty szablon, wstawianych, co poprzedni, informujący o różnych rzeczach), {{s|Tmbox}} (szablon wstawiany do przestrzeni dyskusji), {{s|Fmbox}} (szablon wstawiany do kategorii systemowych), {{s|Ombox}} (szablon wstawiany do stron informujące o kwestiach technicznych), {{s|Cmbox}} (szablon wstawiany do stron kategorii), {{s|Imbox}} (szablon wstawiany do stron w przestrzeni nazw plików), {{s|Dmbox}} (prosty szablon informujący) i {{s|Mbox}} (szablon szablonów - kombajn) - szablony komunikujące, wstawiane do różnych przestrzeni nazw i {{s|Mbox-strona}} - szablony do komunikatów w ramce pływającej po prawej części strony. ===== Szablony spisu alfabetycznego ===== * {{s|SpisKrótki}} i {{s|Spis treści kompakt}} - spis krótki - indeks, alfabetycznie, {{s|SpisAlfabetyczny}} - prosty spis alfabetyczny, {{s|Spis treści grafiki}} - spis treści do stron zawierających dużo grafiki, {{s|Spis treści kategorii}} i {{s|Spis treści kategoria}} - spis alfabetyczny linków do stron kategorii, i {{s|Spis treści kategoria/rozwinięty}} - spis alfabetyczny dokładny oparty o moduł {{m|TOC}}. ==== {{Śródtytuł|spisy-treści}}Szablony spisów artykułów ==== * {{s|Spis treści}} i {{s|TOCright}} (przekierowanie do tego ostatniego), {{s|TOC limit}}, {{s|TOCRamka}} i {{s|Spis treści zwinięty}} (generuje spis w postaci zwiniętej) - standardowy spis treści podobny, tak jak dawniej, do spisu treści wbudowanego do MediaWiki. * {{s|TOC}} - szablon wyświetla spis treści danego modułu, gdzie na samym górze spisu treści jest duży napis "Spis treści". * {{s|SpisTreści}} - szablon generujący spis treści, danego podartykułu podręcznika, na stronie głównej, ale tej samej książki. Ale też może być wyświetlany w dowolnym module. Szablon analizuje każdy rozpatrywany moduł od nowa. ---- Powyższe szablony przyjmują parametr {{Parametr|limit|liczba}} - podane do szablonów powyższych spisu treści w zakresie, gdzie liczba=2,...,6, to poziom, od którego elementu spisu treści tych szablonów mają być niewyświetlane (ukryte). ==== Nagłówki analizowane przez skrypty JavaScript i TOC'e oparte o {{m|StronicowyParser}} ==== * {{s|HNumer}} - szablon nagłówków, generujące nagłówki o dowolnym poziomie nagłówków większej od zera, w tym większe od sześciu. ==== Specjalistyczne szablony komunikatów ==== Tutaj są podane szablony, specjalizujące się w konkretnych sprawach wyświetlający ściśle określone informacje, zbudowane w oparciu o tabelki lub o szablon {{s|Ambox}}, albo o warstwy {{Tag|div}}: ===== Szablony bez nagłówka ===== * {{s|Info}} - szablon informujący zbudowany w oparciu o tabelki, ale nie o szablony komunikatów. * {{s|Infobox}} - szablon pudełko informujący, zbudowany o szablon {{s|Ambox}}. * {{s|Zapamiętaj}} - szablon wyrażający coś do zapamiętania, zbudowany o szablon {{s|Ambox}}. * {{s|Definicja3}} - szablony do wyrażania definicji w tekście, zbudowany o ramki {{Tag|div}}. * {{s|InfoRamka}} - szablon do podawania informacji na pewien temat, zbudowany o ramki {{Tag|div}}. * {{s|InfoReguła}} - szablon do podawania reguł jako informację, które pomogą w zrobieniu czegoś, zbudowany o ramki {{Tag|div}}. ====== Szablony szczególne bez nagłówka ====== * {{s|BibliografiaOpracowania}} - szablon bibliografii (o treści o przedrostku {{Code|Opracowania}}), dotyczące opracowań, z których korzysta dana książka, zbudowany w oparciu o ramki {{Tag|div}}. * {{s|BibliografiaŹródła}} - szablon bibliografii (o treści o przedrostku {{Code|Źródła:}}), dotyczące źródeł tekstów, z których korzysta dana książka, zbudowany w oparciu o ramki {{Tag|div}}. ===== Inne szablony bez nagłówka ===== * {{s|BlueBox}} - szablon tworzący ramkę, jako w niebieskim pudełku jest wyświetlana informacja, zbudowany w oparciu o warstwy {{Tag|div}}. * {{s|RightBox}} - szablon tworzący ramkę z tekstem w białym tle w niebieskim obramowaniu, zbudowany o ramki {{Tag|div}}. ===== Szablony z nagłówkiem ===== * {{s|Definicja}} i {{s|Definicja2}} - szablony do wyrażania definicji w tekście, zbudowany o szablon {{s|Ambox}} (ten pierwszy), a ten drugi o ramki {{Tag|div}}, z nagłówkiem '''Definicja'''. * {{s|Porada}} - szablon wyrażający poradę, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Porada'''. * {{s|Uwaga}} - szablon wyrażający uwagę, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Uwaga'''. * {{s|Ćwiczenie}} - szablon wyrażający coś do przećwiczenia, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Ćwiczenie'''. ===== Szablony z podanym nagłówkiem do przedstawiania pewnych informacji ===== * {{s|Ważne informacje}} - zawiera ważne informacje do zapamiętania, zbudowany o tabelki, z podanym nagłówkiem jako parametr szablonu. ===== Ramki wyświetlające kilka elementów w zawartości w ramce ===== * {{s|Ramka}} - szablon zbierający kilka elementów (obiektów) Wiki w jednej ramce. ===== Szablony informacji zbudowane o inne tego typu budulcowe szablony ===== * {{s|System}} - szablon zbudowany o szablon {{s|Uwaga}} pisany do różnych podręczników, odnoszący się do konkretnego systemu operacyjnego i w jakich jego wersjach zawarte informacje w artykule mogą tam nie działać. * {{s|Wymaga znajomości}} - szablon zbudowany o szablon komunikatów {{s|Mbox-strona}} pisanych do różnych podręczników, informujących, że treść tej książki wymaga znajomości poznania informacji z innych podręczników. ==== Szablony użytkowników ==== * {{s|Babel}} i {{s|Multiuserbox}} - szablony wstawiane na stronę użytkownika przedstawiające jego preferencje, ten pierwszy wyświetlający pudełko w jednej kolumnie po prawej stronie ekranu, a ten drugi w postaci przełamywanego bloku. ** {{s|Staż}} - szablon staży mówiący od kiedy jest się na projekcie. * {{s|Userbox}} i {{s|Userbox small}} - szablon preferencji służy do tworzenia userboksów, dołączanych w wikitabeli, w prawdziwej ramce lub na ekranie strony wikipedysty. Ten drugi w formie miniaturki. * {{s|User spec}} - meta-szablon pozwala na tworzenie {{lr|Userboksy|userboksów|klucz projektu=w}} dla {{lr|Wieża Specjalności|specjalności|klucz projektu=w}}. * {{s|Userlang}} i {{s|User language}} - ten pierwszy szablon jest używany przez ten drugi. Są to szablony preferencji językowych. * {{s|Ping}} - szablon pingowania do jednego lub do wielu użytkowników informująca, że jest nadesłana wiadomość. == Przypisy i bibliografia == === Szablony przypisów bibliograficznych i rzeczowych === * {{s|Przypisy}} - szablon przypisów bibliograficznych, i {{s|Uwagi}} - przypisów rzeczowych. * {{s|r}} - szablony: punktu z nazwą odnoszą się do przypisów użytych w {{s|Przypisy}}, a {{s|u}} - odnosi się do uwag zadeklarowanych przez szablon {{s|Uwagi}}. * {{s|RNota}} (jego skrót: {{s|RN}}) - szablony: zawartości referencji wyświetlane w: {{s|Przypisy}}, a {{s|UNota}} (jego skrót: {{s|UN}}) - zawartości uwag wyświetlane w: {{s|Uwagi}}. * {{s|Ref}} - szablon gotowych do użycia, w szablonie {{s|Przypisy}} i {{s|Uwagi}}, do stworzenia tam własnych przypisów, do którego odnoszą się po nazwach w tekście szablonu {{s|r}} i {{s|u}}, lub do użycia w tekście, zamiast znacznika {{Tag|ref}}. * {{s|Refn}} - szablon służy do {{lpp|Przypisy|tworzenia przypisów w Wikibooks}} i jest alternatywą (i uzupełnieniem) dla standardowego tagu {{Code|<nowiki><ref></nowiki>}}. * {{s|Przypisy-lista}} - szablon stworzony do tworzenia przypisów list, podobnie jak szablony: {{s|Przypisy}} i {{s|Uwagi}}, tylko z tą różnicą, że on dotyczy przypisów bibliograficznych, ale za to wyświetlającą swoją generowaną zawartość, w podanej liczbie kolumn dzielącej jego treść, w kolumnach. * {{s|Odn}} - szablon pozwala na generowanie skróconych {{lpg|przypisy harwardzkie|przypisów harwardzkich (oksfordzkich)}} do pozycji pojawiających się w bibliografii artykułu. Poniższe podszablony przyjmują te same parametry, co on: ** {{s|Odn/id}} - generuje identyfikator tworzonego przezeń przypisu. ** {{s|Odn/tekst}} - generuje tekst tworzonego przezeń przypisu. * {{s|Przypiswiki}} - szablon umieszczany wewnątrz szablonu {{s|Ref}} lub znaczników {{Tag|ref}}, czyli w ten sposób tworzymy referencję do przypisu. === Bibliografia === * {{s|Source}} - szablon do generowania bibliografii. == Szablony opływania elementów pływających, tzn. znajdujące się po lewej lub prawej części strony lub pudełka == * {{s|BrClear}} lub {{s|-}} albo też {{s|Koniec grafiki}} (te dwa ostatnie przekierowania do pierwszego) - szablon nowej linii opływania elementów. * {{s|SpanClear}} - szablon opływania wstawiany do wnętrza tekstu. * {{s|HrClear}} - szablon poziomej kreski opływania elementów z pewnym marginesem górnym. * {{s|DivClear}} - szablon służy do rozpychania rodzica przez dziecko. == Szablony powitania == * {{s|Witaj}} i {{s|Witam}} (przekierowanie do tego ostatniego) - dla użytkowników nieanonimowych - (po polsku) a {{s|Welcome}} (po angielsku). * {{s|Anonim}} - dla użytkowników anonimowych, czyli ogólnie mówiąc IP'ów. == Szablony kodów języka == * {{s|Lang}} i {{s|Język}} (przekierowanie do tego pierwszego) - szablony kodów do języka, zamieniający kod w coś innego, dotyczące języka. * {{s|Lang2}} - szablon służy do oznaczania języka, w jakim są napisane strony, na które wskazuje link zewnętrzny. * {{s|Lang3}} - szablon ustawia język i jednocześnie jego klasą CSS, tekstu, kierunek i inny tekst po jego prawej stronie. == Szablony wykorzystujące strony specjalne w przestrzeni nazw {{Np|Special|link=tak}} == * {{s|Zmiany w linkujących}} - szablon umieszcza zmiany w linkujących w ramce html-owej strony z ewentualnie podaną przestrzenią nazw, która domyślnie przyjmuje wartość {{Np|Category|link=tak}}. == Szablony ramkowe wykorzystujące mechanizmy MediaWiki i HTML == === Szablony blokowe === Szablony bloków, otwierający i zamykający: * {{s|Blok tabelowy}} i {{s|Blok tabelowy/Zamknij}} - zbudowanego za pomocą ramki wikikodu zbudowanej za pomocą tebelek mechanizmu MediaWiki. * {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}} - zbudowanego za pomocą tabeli wikikodu oparty o warstwy (znaczniki) {{Tag|div}}. === Inne szablony pudełkowe === * Pudełka ** {{s|Pudełko ramkowe}}, {{s|Pudełko ramkowe 1}}, {{s|Pudełko ramkowe 2}}, {{s|Pudełko ramkowe 3}}, {{s|Pudełko ramkowe 4}} i {{s|Pudełko ramkowe 5}} - szablon tworzy div-ramki htmlowe. ** {{s|Pudełko komórkowe}}, {{s|Pudełko komórkowe 1}}, {{s|Pudełko komórkowe 2}}, {{s|Pudełko komórkowe 3}}, {{s|Pudełko komórkowe 4}} i {{s|Pudełko komórkowe 5}} - szablon tworzy table-ramki htmlowe. * Sekcje ** {{s|Sekcja ramkowa}} - szablony do budowy sekcji na podstawie ramek {{Tag|div}}. ** {{s|Sekcja komórkowa}} - szablon do budowy sekcji w tabeli. == Szablony kierunku == * {{s|Ltr}} - szablon kierunku tekstu od lewej do prawej, a {{s|Rtl}} - od prawej do lewej. == Szablony znaczników HTML == * {{s|Znacznik start}}, {{s|Znacznik koniec}} i {{s|Znacznik}} - ogólne znaczniki kombajny, otwierający, zamykający i zupełny. * {{s|Div start}}, {{s|Div koniec}} i {{S|Div}} - znacznik otwierający, zamykający i zupełny znacznika {{Tag|div}}. * Znaczniki ogólne znacznika {{Tag|pre}} elementu preformatowanego znacznika HTML: {{s|Pre}}, {{s|PreBody}}, {{s|PreBody2}}, {{s|PreLine}}, {{s|PreLineBody}}, {{s|Pre start}} i {{s|Pre koniec}} - szablony z '''Body''' tekst wyświetlane jest bez ramki, a z '''Line''' tekst z wielokrotnymi spacjami tam spacje są skracane do jednej, z '''start''' i '''koniec''', to jest szablon otwierający i zamykający tego znacznika. * {{s|Code}}, {{s|Kbd}}, {{s|Tt}}, {{s|Sub}}, {{s|Sup}}, {{s|Su}}, {{s|P}}, {{s|Span}}, {{s|Bdo}}, {{s|Small}}, {{s|Big}}, {{s|Strong}}, {{s|Br}} i {{s|Hr}} - proste szablony znaczników sformułowane o znacznik ogólny kombajn. ** {{s|Font}} - bardziej skomplikowany szablon znaczników zastępujący znacznik {{Tag|font}}. ** {{s|Center}} - szablon center, którego funkcjonalnym odpowiednikiem jest znacznik {{Tag|center}}, z wieloma zaawansowanymi funkcjami. * {{s|Indeksuj}}, {{s|Kotwica}} i {{s|Id}} - szablony do indeksowania poszczególnych elementów strony. * {{s|OverflowWiersz}} - szablon potrzebny do tworzenia elementów z paskiem przewijania wierszowym, jeżeli zawartość, tego szablonu, w poziomie jest większa niż sam on. == Szablony tekstu specjalne == * {{s|Nobold}} - wyświetla tekst, lub ciąg znaków za pomocą normalnej czcionki w miejscu, gdzie czcionka jest automatycznie pogrubiana, np. nagłówki kolumn w tabelach itp. * {{s|Nowiki}} - szablony do wyświetlania szczególnie znaków zapisanych w postaci kodów HTML, aby one były wyświetlane w postaci tekstu, a nie jako znak. == Szablony do wyświetlania zawartości szablonu == === Szablony wyświetlające zawartość inkludowaną szablonu === * {{s|Wikikod}} - szablon służy do wyświetlania wikikodu podanych szablonów lub innych stron, przy czym wywołania szablonowe są zastępowane wywołaniem szablonu {{s|S}}, a wywołania modułowe szablonem {{s|M}}, a wywołania parsera są wyświetlane, jak normalny tekst. === Inne szablony specjalne oparte o znacznik {{Tag|pre}} === * {{s|PreWikikod}} - szablon służy do wyświetlania wikikodu podanych szablonów lub innych stron, przy czym wywołania szablonowe są zastępowane wywołaniem szablonu {{s|S}}, a wywołania modułowe szablonem {{s|M}}. Wikikod jest umieszczany w ramce znacznika {{Tag|pre}}. Ale wiele spacji nie są skracane do jednej, chyba, że użyjemy: {{Parametr|styl|white-space:pre-line}}. * {{s|PreLineWikikod}} - co poprzedni, ale w nim wiele spacji są skracane do jednej, bo w tym szablonie jest ukryty, który nie jawnie użyliśmy: {{Parametr|styl|white-space:pre-line}}, w funkcji {{s|PreLine}}. === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === * {{s|ŹródłoWikikod}} - szablon do wyświetlania wikikodu szablonów i innych stron z podświetlaniem jego składni. === Szablony wyświetlające szablony w postaci surowej (przetworzonej) === * {{s|LuaSurowySzablonRozwiń}} - szablon wyświetlający opcjonalnie z opakowaniem znacznika {{Tag|div}} przy pomocy {{s|Div}}, ewentualnie z atrybutami, z możliwością wyświetlania kategorii na stronę lub w postaci opakowanej, ma możliwość wyświetlania czystego wikikodu, lub jego zamienienia na zwykły tekst, który może być opakowany znacznikiem {{Tag|pre}} za pomocą szablonu {{s|Pre}}, to wszystko można zapewnić używając szablonu tego z pewnymi parametrami. == Szablony do wyświetlania tekstu z kodami HTML == * {{s|PreNowiki}} - szablon przyjmuje jeden parametr będący wikikodem do rozwinięcia opatrując go pomiędzy znacznikami {{Mniejszy}}nowiki{{Większy}}...{{Mniejszy}}/nowiki{{Większy}}. W danym polu parametru przy pierwszym znaku {{=}} stawiamy zamiast tego znaku wywołanie szablonowe {{s|{{=}}}}, by część poprzedzająca nie była traktowana jako parametr, a część następująca po nim jako wartość. Szablon wyświetla kody specjalne nie zamieniając je na odpowiednie znaki. Szablon wyświetla rozwinięty wikikod w postaci czystego tekstu otoczone ramką znacznika: {{Tag|pre}}. Ale wiele spacji nie są skracane do jednej, chyba, że użyjemy: {{Parametr|styl|white-space:pre-line}}. * {{s|PreLineNowiki}} - co poprzedni, ale w nim wiele spacji są skracane do jednej, bo w tym szablonie jest ukryty, który nie jawnie użyliśmy: {{Parametr|styl|white-space:pre-line}}, w funkcji {{s|PreLine}}. === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === * {{s|ŹródłoNowiki}} - szablon służy do podświetlania składni rozwijanych przez niego szablonów, czy stron, względem jego parametrów. == Szablony zamieniające pewne znaki na kod HTML == * {{s|KodHTMLZnaku}} - szablon zamieniający dowolny znak w jego kod HTML, lub w taki sposób, by się dało się wyświetlić ten kod na ekranie monitora. * {{s|KodyHTMLZnakówWikiCiągu}} - co poprzednio, tylko dla niektórych znaków, ale ten szablon nie dotyczy jednego podanego znaku, ale tekstu (wielu znaków po sobie następujących). == Szablony użyte w tekście do spowodowania jego łamliwości lub nie == * {{s|Wrap}} i {{s|W}} (przekierowanie) - szablony do łamania tekstu, gdzie po niełamliwej spacji następuje możliwe przełamanie, by zacząc dalszy niełamliwy tekst. * {{s|·wrap}} i {{s|·w}} (przekierowanie), {{s|•wrap}} i {{s|•w}} (przekierowanie), {{s|–wrap}} i {{s|–w}} (przekierowanie), {{s|!wrap}} i {{s|!w}} (przekierowanie) oraz {{s|\wrap}} i {{s|\w}} (przekierowanie) - proste szablony do łamania tekstu, gdzie znak przed '''wrap''' lub '''w''', w nazwie szablonu, wskazuje, jaki jest znak, po którym następuje opcjonalne przełamywanie tekstu, przed tym znakiem jest niełamliwa spacja. * {{s|·}}, {{s|Dot}} (przekierowanie) i {{s|Middot}} (przekierowanie), czy {{s|•}}, {{s|Bull}} (przekierowanie) i {{s|Bullet}} (przekierowanie), czy {{s|–}}, {{s|Ndash}} (przekierowanie}} i {{s|En dash}} (przekierowanie), czy {{s|—}}, {{s|Mdash}} (przekierowanie) i {{s|Em dash}} (przekierowanie) - szablony łamania tekstu, w którym znak wskazanym przez nazwę szablonu nieprzekierowania, działanie jest takie samo w ich przekierowaniach, w którym przed nim jest spacja niełamliwa, gdzie po tym znaku następuje opcjonalne przełamania tekstu. * {{s|Nowrap}}, {{s|Nowrap start}} i {{s|Nowrap koniec}} - szablony niełamliwości tekstu, pierwszy ten tekst wsadzamy ten tekst do wnętrza szablony, a drugi i trzeci, między tymi szablonami. * {{s|Nowraplinki}}, {{s|Nowraplinki start}} i {{s|Nowraplinki koniec}} - szablony niełamliwości linków w danym tekście, pierwszym tekst jest wsadzamy do wnętrza tego szablonu, a drugi i trzeci, między szablonami. == Szablon zastępujące pewne znaki == === Potrzebne typu do szablonów, linków, wikitabel i zmiennych === * {{s|!!}} i {{s|!}} (lub w postaci kodu HTML: {{s|Pipe}}) - szablony znaków kresek pionowych. * {{s|!(}} (otwierający) i {{s|)!}} (zamykający), {{s|!((}} (otwierający) i {{s|))!}} (zamykający) - szablony typu nawiasów kwadratowych, otwierający i zamykający. * {{s|(}} (otwierający) i {{s|)}} (zamykający), {{s|((}} (otwierający) i {{s|))}} (zamykający), {{s|(((}} (otwierający) i {{s|)))}} (zamykający) - szablony typu nawiasów klamrowych, otwierający i zamykający. * {{s|{{=}}}} - szablon zastępujący znak równości, przede wszystkim potrzebny do szablonu {{s|S}} (symbolizując kod szablonowy) i {{s|M}} (symbolizujący wywołanie ramki modułu). ** {{s|Dokumentacja szablonów zastępujących znaki}} - szablon dokumentacji szablonów zastępowania pewnych elementów szablonowych mających znaczenie w '''mechanizmie MediaWiki'''. ==== Szablony zastępujące znaki w postaci kodu HTML, potrzebne, by szablon nie uwzględniał je jako początek listy, lub do list, albo tabel ==== Przedstawimy tutaj szablony zastępujące znaki w postaci kodów HTML do wiki-tabel i wiki-list. ===== Szablony elementów wiki-tabel ===== * {{s|Pipe}} - szablon kreski pionowej, tzn.: {{Code|{{Pipe}}}}, wstawiany zamiast niego, by nie spowodować zainicjowanie nowego parametru, lub następnym elementem w nowym wierszu nie była normalna kreska pionowa tabeli, w postaci kodu HTML, zamiast zwykłego znaku: {{Code|{{Pipe}}}}, w postaci: {{Code|{{Nowiki|{{Pipe}}}}}}. ===== Szablony elementów wiki-list ===== * {{s|Śr}} - szablon średnika, tzn.: {{Code|{{Śr}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Śr}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Śr}}}}, w postaci kodu: {{Code|{{Nowiki|{{Śr}}}}}}. * {{s|Sp}} - szablon hash'a (splash'a), tzn.: {{Code|{{Sp}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Sp}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego: {{Code|{{Sp}}}}, w postaci kodu: {{Code|{{Nowiki|{{Sp}}}}}}. * {{s|Gw}} - szablon gwiazdki, tzn.: {{Code|{{Gw}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Gw}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Gw}}}}, w postaci kodu: {{Code|{{Nowiki|{{Gw}}}}}}. * {{s|Dk}} - szablon dwukropka, tzn.: {{Code|{{Dk}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Dk}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Dk}}}}, w postaci kodu: {{Code|{{Nowiki|{{Dk}}}}}}. === Wykorzystywane do innych znaków === * {{s|Mniejszy}} (otwierający) i {{s|Większy}} (zamykający) - potrzebne do znaczników (wykorzystywane w znaczniku: {{Tag|pre}}), przede wszystkich, aby wyłączyć dla nich obsługę mechanizmu MediaWiki, i aby były traktowane jako tylko elementy HTML, dla innych znaczników, które są tylko obsługiwane przez mechanizm MediaWiki, i nie mają żadnego znaczenia w HTML, to wyłączamy jego działanie, które można znów włączyć za pomocą funkcji w pewnym module (wskazanym przez pokazanie symboliczne): {{m|Ramka|Rozwiń}}), a także: {{s|Kropka}} i {{s|Kula}} - potrzebne do szablonów łamania tekstu oraz {{s|Pauza}} i {{s|Półpauza}} - szablony zastępujące inne znaki niekwadratowe i nieklamrowe, te ostatnie cztery szablony tak wyświetlają swoją rozwiniętą zawartość, jak wskazuje na to nazwa tych szablonów. === Szablon usuwające nadmiarowe odstępy === * {{s|PrzytnijTekst}} i jego przekierowanie {{s|Trim}} - szablony usuwające białe znaki z lewej i prawej części podanego parametru. * {{s|Odstępy}} - szablon usuwające białe znaki i dolne myślniki z lewej i prawej części podanego parametru oraz wewnątrz tekstu zamieniające je na spację lub dolny myślnik. == Szablony tworzące tabele przy pomocy mechanizmu MediaWiki == * {{s|Tabelka}}, {{s|Tytuł}}, {{s|Wiersz}} i {{s|Komórka}} - szablony tworzące kolejno: wiki-tabelę, jego tytuł, a także dzielące element pierwszy na wiersze, a je na kolumny. Umożliwiający pisanie je w jednej linijce za pomocą komentarzy, mimo że kod wynikowy tych nie musi być taki. ** {{s|Dunno}} - szablon potrzebny do budowy tabelki, wyświetlający białe tło z zapytajnikiem, ** {{s|No}} - szablon ten wykorzystuje się w tabeli, aby otrzymać komórkę z napisem "Nie" na czerwonym tle. * {{s|Tabela}} i {{s|GridTaabela}} - szablony tworzące kolejno: wiki-tabelę i grid-tabelę, w postaci wysokopoziomowej otoczki, tworzący niskopoziomową tabelę, ale w różny sposób, w pierwszym za pomocą zwykłych tabel, a w drugim dzięki znacznikom {{Rag|div}}, mechanizmu MediaWiki, dzięki temu obsługą takich ich jest prosta. Zwracają uwagę, czy jakieś parametry nie zostały podane, czy są prawidłowe. == Szablony nagłówka == Szablony nagłówka używane w artykułach, nawet jego pierwszego. === Typowe szablony na górze strony podręcznika === * {{s|Nagłówek}} - szablon nagłówka i z ewentualnie ustawioną za pomocą JavaScriptu'u stopką. * {{s|Podręcznik}} - szablon menu na samym górze podręcznika w definicji zawierający szablon {{s|Nagłówek}}. Szablon posiada ustawienia zawierającą ustawienia tego ostatniego tego szablonu, która jest na stronie zapisaną ogólnie: '''{{Ns:Template}}:Podręcznik/Ustawienia/{{s|PEŁNANAZWAKSIĄŻKI}}/config'''. * {{s|Rozdział}} - szablon określający wyglądem dużym, że ta strona, ale ten typowy rozdział, to rozdział, a nie podrozdział. * {{s|Podrozdział}} - szablon określający wyglądem małym, że ta strona, ale ten typowy rozdział, to podrozdział, a nie rozdział. === Inne szablony tego typu === Inne szablony używane rzadziej niż poprzednie. ==== Szablony pierwszego nagłówka strony ==== * {{s|Małą literą}} - szablon zamienia dużą literę, nazwy strony, na małą w pierwszym nagłówku. * {{s|Szablon nie opis}} - szablon wyświetlający nazwę szablonu, nie opisu, lub nazwę szablonu, którego dotyczy opis. ==== Szablony niepierwszego nagłówka strony ==== * {{s|MDL:RozszerzonyLink}} - szablon oznaczony grafiką określającą artykuły (rozdziały) do wyróżnionych, np. zawierający poziom wyższy niż standardowy w szkole lub na uczelni. * {{s|Pełny rozdział}} - szablon wyświetlający strony zbiorcze danego rozdziału podręcznika. ==== Szablony nagłówka linków ==== * {{s|DG}} - szablon linku do górnej części, w stronę pierwszego nagłówka. ==== Szablony nagłówka, kolekcji i do druku, danej książki ==== * {{s|Zapisane książki}} - szablon w nagłówku strony na stronie zbiorczej linków do artykułów danej kolekcji artykułów danego podręcznika, by potem można było przygotować jego wersję PDF. * {{s|Drukowanie porada}} - szablon w nagłówku strony na stronie zbiorczej wszystkich artykułów, informujący, że aktualna strona jest do druku. ==== Szablony stron archiwalnych ==== * {{s|Archiwum}} - szablon określający, że dana strona jest archiwalna, by jej nie edytować. * {{s|SDU}} - szablon ogólny, archiwum {{lr|Poczekalnia|poczekalni}}, na podstawie której jest definiowany szablon {{s|SDU/Archiwum}}, umieszczony, w nagłówku, w tym archiwach. ==== Szablony identyfikatora pierwszego nagłówka ==== * {{s|Skrót}} - określa skrót strony, nie szablony, zwykle stron projektu i pomocy. * {{s|Skrót szablonu}} - określa skrót szablonu, w przestrzeni nazw {{Np|Template|link=tak}}. == Szablony tematyczne == Szablony tutaj są przedstawione z jakiś dziedzin nauki (nie infoboksy). === Szablony chemiczne tekstu === * {{s|Chem}} - szablon służy uproszczeniu zapisywania wzorów chemicznych. * {{s|Chem2}} - szablon służy do zapisywania wzorów i prostych reakcji chemicznych. * {{s|Wzory sumaryczne}} i jego szablon pomocniczy {{s|Wzory sumaryczne/sort}} - szablon umieszczany w przekierowaniach i stronach, których tytuły są wzorami sumarycznymi. === Szablony chemiczne pudełkowe === * {{s|Chem:ciek}} - szablon z podanymi w parametrach szablonu z ciekawostkami chemicznymi. * {{s|Chem:dośw}} - szablon z podanymi w parametrach szablonu z opisami doświadczeń. === Szablony matematyczne pudełkowe === * {{s|Mat:Ciek}} - szablony ciekawostek matematycznych, z nagłówkiem: '''Czy wiesz, że...'''. * {{s|Mat:Tw}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Twierdzenie'''. * {{s|Mat:Def}} - szablony definicji matematycznych, z nagłówkiem: '''Definicja'''. * {{s|Mat:Prz}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Przykład'''. * {{s|Mat:Uwg}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Uwaga'''. === Szablony fizyczne-matematyczne pudełkowe === * {{s|DefinicjaHasło}} - szablon podająca definicję danego hasła. * {{s|PrawoHasło}} - szablon podający prawo danego hasła. * {{s|PrzykładTemat}} - szablon przedstawiający przykład dla danego tematu. * {{s|MateriałTemat}} - szablon przedstawiające jaki materiał uczeń powinien znać, by opanować materiał w danym artykule. * {{s|ZadanieTemat}} - szablon podający pojedyncze zadanie wraz z pytaniem z rozwiązaniem, także z odpowiedzią. === Szablony ekonomiczne === * {{s|Konto otwórz}}, {{s|Konto zapis}} i {{s|Konto zamknij}} - szablony tworzone za pomocą wiki-tabelek, obrazują, ile ma się na koncie, a ile jest się winny. Szablony tworzą jedno pudełko z przepisaną klasą {{Code|konto}}, które można grupować w większą tabelę z przepisaną klasą {{Code|konta}}. === Szablony informacyjne === * {{s|Naukowiec}} - szablon przedstawiający informacje o jakimś naukowcach. {{BrClear}} <noinclude>{{UnikatowaStronaKoniec}}{{Kategoria|Tekstowe opisy techniczne szablonów}}</noinclude> myx6eoyapf41brdqq40fbs1xx3sbwij 559485 559484 2026-10-17T04:42:06Z Persino 2851 /* Szablony tworzące tabele przy pomocy mechanizmu MediaWiki */ 559485 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc Wikibooks - Szablony}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> == Szablony nazw stron == * {{s|NAZWAKSIĄŻKI}} - zwraca nazwę adresu podręcznika bez nazwy przestrzeni nazw, do której należy. * {{s|PEŁNANAZWAKSIĄŻKI}} - zwraca nazwę adresu podręcznika z nazwą przestrzeni nazw, do której należy. * {{s|SUBNAZWAKSIĄŻKI}} - zwraca nazwę książki, bez jego adresu i przestrzeni nazw, do której należy. * {{s|NAZWAARTYKUŁUKSIĄŻKI}} - zwraca nazwę artykułu podręcznika. * {{s|NAZWAARTYKUŁUKSIĄŻKI2}} - zwraca nazwę artykułu książki lub tytuł książki, jeśli podano pełną nazwę strony. * {{s|PEŁNANAZWAARTYKUŁUKSIĄŻKI}} - zwraca przetworzoną nazwę strony lub nazwę przestrzeni nazw, na podstawie podanej pełnej nazwy strony. * {{s|NAZWAPRZESTRZENIKSIĄŻKI}} - zwraca nazwę przestrzeni nazw, do której należy książka, bez nazwy przestrzeni strony. * {{s|PEŁNANAZWAPRZESTRZENIKSIĄŻKI}} - zwraca nazwę przestrzeni nazw, do której należy książka, z nazwą przestrzeni strony. * {{s|NAZWAKORZENIASTRONY}} - zwraca nazwę korzenia strony bez nazwy przestrzeni nazw, do której należy. * {{s|PEŁNANAZWAKORZENIASTRONY}} - zwraca nazwę korzenia strony z nazwą przestrzeni nazw, do której należy. * {{s|NAZWAPRZESTRZENI}} - zwraca nazwę przestrzeni nazw, strony. * {{s|PRZEDMIOTOWAPRZESTRZEŃ}} - zwraca nazwę przedmiotowej przestrzeni nazw, strony. * {{s|PRZESTRZEŃDYSKUSJI}} - zwraca nazwę przestrzeni nazw dyskusji, strony. * {{s|NAZWASTRONY}} - zwraca nazwę strony bez nazwy przestrzeni nazw. * {{s|BAZOWANAZWASTRONY}} - zwraca nazwę bazową strony, bez nazwy przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron. * {{s|PEŁNANAZWASTRONY}} - zwraca nazwę strony z nazwą przestrzeni nazw. * {{s|PEŁNABAZOWANAZWASTRONY}} - zwraca nazwę bazową strony z nazwą przestrzenią nazw, czyli bezpośredniego rodzica w drzewie adresów stron. * {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}} - zwraca pełną nazwę bazową strony z przedmiotową nazwą przestrzenią nazw, czyli bezpośredniego rodzica w drzewie adresów stron przedmiotowych do podanej strony. * {{s|BAZOWANAZWASTRONYDYSKUSJI}} - zwraca pełną nazwę bazową strony z nazwą przestrzenią nazw dyskusji, czyli bezpośredniego rodzica w drzewie adresów stron dyskusji do podanej strony. * {{s|NAZWASTRONYDYSKUSJI}} - zwraca nazwę strony dyskusji, z jej nazwą przestrzenią nazw, do podanej strony. * {{s|PRZEDMIOTOWANAZWASTRONY}} - zwraca pełną nazwę strony z przedmiotową nazwą przestrzeni nazw. * {{s|NAZWASUBSTRONY}} - zwraca przetworzoną nazwę strony lub nazwę przestrzeni nazw, na podstawie podanej pełnej nazwy strony. == Inne szablony nazw == * {{s|Np}} - szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję polską i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę polską lub angielską. * {{s|NpDane}} - szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. * {{s|NAZWASERWISU}} - szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na Wikipedii, w jakieś podanej wersji językowej. == Szablony liczb nazw stron podręcznikowych == * {{s|LICZBAPODRĘCZNIKÓW}} - szablon wyświetla liczbę podręczników na polskim projekcie {{NAZWASERWISU|link=tak}}. Szablon liczy ich liczbę na podstawie pozycji w kategoriach: {{lk|Wszystkie książki}}, {{lk|Wszystkie książki użytkowników}} i {{lk|Wszystkie książki w brudnopisie projektu}}. == Szablony dopracowania jednostek, lub dla jednostek wymagający naprawy lub usunięcia == * {{s|Dopracować}} oraz {{s|DoPracowania}} i {{s|Cleanup}} (dwa ostatnie to przekierowania do tego pierwszego) i {{s|Dopracować2}} - szablony informujący na stronie artykułu, szablonu, ogólnie jednostek, że popełniono jakiś błąd, coś nie dopracowano, coś wymaga naprawy. * {{s|Ekspresowe kasowanie}}, {{s|Ek}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|EK}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|Delete}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|Screenshot}} (przekierowanie do {{s|Ekspresowe kasowanie}}) - szablony wstawiane na strony (zwykłe strony, kategorie i pliki), cztery pierwsze - jeżeli chcemy usunąć daną stronę lub piąty - jeżeli wykryto naruszenie praw autorskich, co do pliku (grafika, obrazek), i {{s|Ekspresowe kasowanie 2}}, {{s|Ek2}} (przekierowanie do {{s|Ekspresowe kasowanie 2}}) - szablon analogiczny do {{s|Ekspresowe kasowanie}}, dla jego przekierowań: {{s|Ek2}} jest analogiczny do {{s|Ek}}. ** {{s|Admin usuń}} - szablon pomocniczy w celu szybkiego usuwania rzeczy z wiki zostawiając przy tym stosowny opis, dlaczego strona została usunięta. ** {{s|Błąd}} - metaszablon zwraca ''stan błędu'' (rozpoznawany w ten sposób przez {{lpp|funkcje parsera}}) oraz opcjonalnie ''tekst wiadomości błędu'' w kolorze czerwonym (widoczny dla użytkownika element o klasie CSS „error”). Szablon jest używany przez inne szablony do sygnalizowania błędu, na przykład błędnych danych wejściowych, które następnie mogą być wyświetlane zarówno edytorowi lub przechwycone i obsługiwane przez inne szablony. === Szablony typu strony do usunięcia i poczekalni === * {{s|DNU}} - szablon wstawiany do jednostek, informujący co będzie zrobione przypuszczalnie z nim, gdy głosowanie się skończy, {{s|SdU}} ({{s|DoSkasowania}} - przekierowanie) - to samo co {{s|DNU}}, tylko przed głosowaniem, i {{s|SdUwynik}} - tom samo, co {{s|DNU}}, tylko po głosowaniu. * {{s|Kasowanie po przeniesieniu}} i {{s|Kpp}} (przekierowanie do ostatniego) - używany jest do stron (artykuły i podręczniki) w przestrzeni nazw {{Np|(main)|link=tak}} i {{Np|Wikijunior|link=tak}} oraz w przestrzeni nazw {{Np|File|link=tak}} do plików. Informuje autora o okresie, w czasie którego może skopiować zawartość przed jej skasowaniem. * {{s|DNUinfo}} i {{s|DNU/info}} - informują, że strona stworzona przez tego użytkownika została zgłoszona do poczekalni i toczy się nad nim dyskusja. * {{s|LnDNU}} - szablon wstawiający kategorie na strony dyskusji (nie przestrzeń nazw dyskusji) stron zgłoszonych do poczekalni. * {{s|KSdU}} - informuje, że strona została zakwalifikowana do natychmiastowego usunięcia autorstwa użytkownika. * {{s|SDU}} - szablon szkielet, z którego korzysta szablon {{s|SDU/Archiwum}}, który pokazuje wszystkie z archiwizowane strony dyskusji toczących się wcześniej dyskusji, one są przydzielone do odpowiednich kategorii, które informują, co zrobiono po dyskusji. Na każdej strony zarchiwizowanej ze stron dyskusji on umieszcza, z definicji tego szablonu poprzez niego, szablon {{s|Archiwum}}. == Szablony integracji i podziału oraz łączenia historii edycji stron, a także tłumaczeń stron z języka obcego == === Szablony integracji === * {{s|Integruj}} i {{s|Integracja}} (przekierowanie do {{s|Integruj}}) - szablony do integracji podanych jednostek. * {{s|Integruj z}} - integracji tego artykułu z innym artykułem. * {{s|Integruj do}} - integracji artykuł↓ z tą jednostką. * {{s|Integrowanie}} - szablonu używamy, gdy chcemy powiadomić innych wikipedystów, że właśnie trwa integracja danej strony. * {{s|Zintegrowany}} - ten szablon służy zaznaczeniu, że dana strona została {{lpp|Integracja|zintegrowana}} z inną stroną, który nadal istnieje, ale został przekształcony np. na {{lpp|przekierowanie}} lub {{lpr|Strona ujednoznaczniająca|stronę ujednoznaczniającą}}. === Szablony podziału === * {{s|Podziel}} - szablon informujący podział jednostki na inne jednostki. * {{s|Wydziel}} - szablon informuje, że z danej jednostki wydzielono inną jednostkę. * {{s|Podziel sekcję}} - mówi, żeby dana sekcja została przeniesiona do innej jednostki. * {{s|Wydzielony}} - ten szablon służy zaznaczeniu, że dana strona zawiera treści skopiowane z innej istniejącej w Wikibooks strony. === Połączenie historii edycji kilku stron === * {{s|Połącz}} - szablon informujący, by administrator połączył historię edycji podanych stron. === Szablony tłumaczeń z języka obcego stron z projektów siostrzanych, z innej wersji językowej niż polski === * {{s|Przetłumaczony}} - szablon mówi z jakich artykułów w języku obcym korzystano przy tłumaczeniu na język polski, tworząc dany artykuł (stronę). * {{s|Przetłumaczona metastrona}} - szablon mówi, że ta metastrona została przetłumaczona na język polski z języka obcego z projektów siostrzanych. == Szablony problemów umieszczane w tekście == === Weryfikowalność === * {{s|Brak strony}} - szablon informujący, o braku strony, w przypisie artykułu (strony). * {{s|Fakt}} - szablon ten należy umieścić w artykule w miejscu, gdzie ze względu na niepodpartą źródłami treść powinien znajdować się {{lpp|Przypisy|przypis bibliograficzny}}. * {{s|Niewiarygodne źródło}} - szablon ten należy umieścić w artykule obok odnośnika bibliograficznego do nierzetelnego źródła. * {{s|Nie w źródle}} - wstawiamy w treści artykułu, bezpośrednio po odnośniku do źródła (pozycji bibliograficznej, przypisu), które nie zawiera informacji, którą rzekomo ma potwierdzać. * {{s|Martwy link}} - ten szablon używany jest do oznaczania źródeł internetowych zawierających {{lpg|martwy link|martwe linki}}. * {{s|Wątpliwe}} - szablon należy umieścić w artykule przy fragmencie tekstu, który wydaje się wątpliwy i wymaga weryfikacji. === Podręcznikowość === * {{s|Czy to ważne}} - służy on do oznaczania zdań lub wyrażeń, które wydają się nie mieć związku z głównym tematem strony, czyli czynią z niego {{lpr|NIEŁAD|bezładny zbiór informacji}}. === Wyrażenia zwodnicze, typu {{lpr|Unikaj wyrażeń zwodniczych|użyto wyrażeń zwodniczych}} === * {{s|Doprecyzuj}} - szablon kombajn, o którego są zbudowane inne szablony od wskazania wyrażeń zwodniczych. * {{s|Czyim}} - służy on do oznaczania miejsc, takich jak, "zdaniem historyków", "zdaniem poważnych badaczy" i tak dalej. Sformułowania takie są nie dość precyzyjne i wymagają podania źródła, wyjaśnienia konkretnie czyim zdaniem jest tak bądź inaczej. * {{s|Kto}} - służy on do oznaczania miejsc, takich jak "niektórzy twierdzą", "poważni badacze uważają", "naukowcy sądzą", "zdaniem historyków", i tak dalej. * {{s|Przez kogo}} - wstawiamy tam, gdzie widnieje ''uznawane jako'', ''przyjęte'', ''docenione'', ''znienawidzone'' itp. * {{s|Według kogo}} - wstawiamy tam, gdzie widnieje uznawane jako, przyjęte, docenione, znienawidzone. * {{s|Jaka}} - służy dom oznaczania miejsc, w którym nie określono, jakie to jest. * {{s|Jakich}} - służy dom oznaczania miejsc, w którym nie określono, jakich to dotyczy. * {{s|Gdzie}} - służy do oznaczania miejsc, w których takich jak "wyemitowano X odcinków", "tam spędził 10 lat", "produkcja zajmuje 1 miejsce pod względem oglądalności" i tak dalej. * {{s|Kiedy}} - służy do oznaczania miejsc w artykułach, kiedy on lub ona to robiła, jeśli nie nie zrobiono. * {{s|Od kiedy}} - służy do oznaczania miejsc w artykułach, od kiedy on lub ona to robiła, jeśli nie nie zrobiono. === Twórczość własna === * {{s|Or}} - gdy autor artykułu publikuje twórczość własną (stworzoną przez siebie). === Aktualność === * {{s|Aktualizuj po}} - dane w prowadzone do artykułu, mogą się zdezaktualizować, ale są aktualne na stan dzisiejszy, lub mogły zdezaktualizować się. === Szablony komunikatów === ==== Typowe szablony komunikatów ==== * {{s|Ambox}} (szablon wstawianych do przestrzeni podręcznikowych), {{s|AmboxProsty}} (prosty szablon, wstawianych, co poprzedni, informujący o różnych rzeczach), {{s|Tmbox}} (szablon wstawiany do przestrzeni dyskusji), {{s|Fmbox}} (szablon wstawiany do kategorii systemowych), {{s|Ombox}} (szablon wstawiany do stron informujące o kwestiach technicznych), {{s|Cmbox}} (szablon wstawiany do stron kategorii), {{s|Imbox}} (szablon wstawiany do stron w przestrzeni nazw plików), {{s|Dmbox}} (prosty szablon informujący) i {{s|Mbox}} (szablon szablonów - kombajn) - szablony komunikujące, wstawiane do różnych przestrzeni nazw i {{s|Mbox-strona}} - szablony do komunikatów w ramce pływającej po prawej części strony. ===== Szablony spisu alfabetycznego ===== * {{s|SpisKrótki}} i {{s|Spis treści kompakt}} - spis krótki - indeks, alfabetycznie, {{s|SpisAlfabetyczny}} - prosty spis alfabetyczny, {{s|Spis treści grafiki}} - spis treści do stron zawierających dużo grafiki, {{s|Spis treści kategorii}} i {{s|Spis treści kategoria}} - spis alfabetyczny linków do stron kategorii, i {{s|Spis treści kategoria/rozwinięty}} - spis alfabetyczny dokładny oparty o moduł {{m|TOC}}. ==== {{Śródtytuł|spisy-treści}}Szablony spisów artykułów ==== * {{s|Spis treści}} i {{s|TOCright}} (przekierowanie do tego ostatniego), {{s|TOC limit}}, {{s|TOCRamka}} i {{s|Spis treści zwinięty}} (generuje spis w postaci zwiniętej) - standardowy spis treści podobny, tak jak dawniej, do spisu treści wbudowanego do MediaWiki. * {{s|TOC}} - szablon wyświetla spis treści danego modułu, gdzie na samym górze spisu treści jest duży napis "Spis treści". * {{s|SpisTreści}} - szablon generujący spis treści, danego podartykułu podręcznika, na stronie głównej, ale tej samej książki. Ale też może być wyświetlany w dowolnym module. Szablon analizuje każdy rozpatrywany moduł od nowa. ---- Powyższe szablony przyjmują parametr {{Parametr|limit|liczba}} - podane do szablonów powyższych spisu treści w zakresie, gdzie liczba=2,...,6, to poziom, od którego elementu spisu treści tych szablonów mają być niewyświetlane (ukryte). ==== Nagłówki analizowane przez skrypty JavaScript i TOC'e oparte o {{m|StronicowyParser}} ==== * {{s|HNumer}} - szablon nagłówków, generujące nagłówki o dowolnym poziomie nagłówków większej od zera, w tym większe od sześciu. ==== Specjalistyczne szablony komunikatów ==== Tutaj są podane szablony, specjalizujące się w konkretnych sprawach wyświetlający ściśle określone informacje, zbudowane w oparciu o tabelki lub o szablon {{s|Ambox}}, albo o warstwy {{Tag|div}}: ===== Szablony bez nagłówka ===== * {{s|Info}} - szablon informujący zbudowany w oparciu o tabelki, ale nie o szablony komunikatów. * {{s|Infobox}} - szablon pudełko informujący, zbudowany o szablon {{s|Ambox}}. * {{s|Zapamiętaj}} - szablon wyrażający coś do zapamiętania, zbudowany o szablon {{s|Ambox}}. * {{s|Definicja3}} - szablony do wyrażania definicji w tekście, zbudowany o ramki {{Tag|div}}. * {{s|InfoRamka}} - szablon do podawania informacji na pewien temat, zbudowany o ramki {{Tag|div}}. * {{s|InfoReguła}} - szablon do podawania reguł jako informację, które pomogą w zrobieniu czegoś, zbudowany o ramki {{Tag|div}}. ====== Szablony szczególne bez nagłówka ====== * {{s|BibliografiaOpracowania}} - szablon bibliografii (o treści o przedrostku {{Code|Opracowania}}), dotyczące opracowań, z których korzysta dana książka, zbudowany w oparciu o ramki {{Tag|div}}. * {{s|BibliografiaŹródła}} - szablon bibliografii (o treści o przedrostku {{Code|Źródła:}}), dotyczące źródeł tekstów, z których korzysta dana książka, zbudowany w oparciu o ramki {{Tag|div}}. ===== Inne szablony bez nagłówka ===== * {{s|BlueBox}} - szablon tworzący ramkę, jako w niebieskim pudełku jest wyświetlana informacja, zbudowany w oparciu o warstwy {{Tag|div}}. * {{s|RightBox}} - szablon tworzący ramkę z tekstem w białym tle w niebieskim obramowaniu, zbudowany o ramki {{Tag|div}}. ===== Szablony z nagłówkiem ===== * {{s|Definicja}} i {{s|Definicja2}} - szablony do wyrażania definicji w tekście, zbudowany o szablon {{s|Ambox}} (ten pierwszy), a ten drugi o ramki {{Tag|div}}, z nagłówkiem '''Definicja'''. * {{s|Porada}} - szablon wyrażający poradę, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Porada'''. * {{s|Uwaga}} - szablon wyrażający uwagę, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Uwaga'''. * {{s|Ćwiczenie}} - szablon wyrażający coś do przećwiczenia, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Ćwiczenie'''. ===== Szablony z podanym nagłówkiem do przedstawiania pewnych informacji ===== * {{s|Ważne informacje}} - zawiera ważne informacje do zapamiętania, zbudowany o tabelki, z podanym nagłówkiem jako parametr szablonu. ===== Ramki wyświetlające kilka elementów w zawartości w ramce ===== * {{s|Ramka}} - szablon zbierający kilka elementów (obiektów) Wiki w jednej ramce. ===== Szablony informacji zbudowane o inne tego typu budulcowe szablony ===== * {{s|System}} - szablon zbudowany o szablon {{s|Uwaga}} pisany do różnych podręczników, odnoszący się do konkretnego systemu operacyjnego i w jakich jego wersjach zawarte informacje w artykule mogą tam nie działać. * {{s|Wymaga znajomości}} - szablon zbudowany o szablon komunikatów {{s|Mbox-strona}} pisanych do różnych podręczników, informujących, że treść tej książki wymaga znajomości poznania informacji z innych podręczników. ==== Szablony użytkowników ==== * {{s|Babel}} i {{s|Multiuserbox}} - szablony wstawiane na stronę użytkownika przedstawiające jego preferencje, ten pierwszy wyświetlający pudełko w jednej kolumnie po prawej stronie ekranu, a ten drugi w postaci przełamywanego bloku. ** {{s|Staż}} - szablon staży mówiący od kiedy jest się na projekcie. * {{s|Userbox}} i {{s|Userbox small}} - szablon preferencji służy do tworzenia userboksów, dołączanych w wikitabeli, w prawdziwej ramce lub na ekranie strony wikipedysty. Ten drugi w formie miniaturki. * {{s|User spec}} - meta-szablon pozwala na tworzenie {{lr|Userboksy|userboksów|klucz projektu=w}} dla {{lr|Wieża Specjalności|specjalności|klucz projektu=w}}. * {{s|Userlang}} i {{s|User language}} - ten pierwszy szablon jest używany przez ten drugi. Są to szablony preferencji językowych. * {{s|Ping}} - szablon pingowania do jednego lub do wielu użytkowników informująca, że jest nadesłana wiadomość. == Przypisy i bibliografia == === Szablony przypisów bibliograficznych i rzeczowych === * {{s|Przypisy}} - szablon przypisów bibliograficznych, i {{s|Uwagi}} - przypisów rzeczowych. * {{s|r}} - szablony: punktu z nazwą odnoszą się do przypisów użytych w {{s|Przypisy}}, a {{s|u}} - odnosi się do uwag zadeklarowanych przez szablon {{s|Uwagi}}. * {{s|RNota}} (jego skrót: {{s|RN}}) - szablony: zawartości referencji wyświetlane w: {{s|Przypisy}}, a {{s|UNota}} (jego skrót: {{s|UN}}) - zawartości uwag wyświetlane w: {{s|Uwagi}}. * {{s|Ref}} - szablon gotowych do użycia, w szablonie {{s|Przypisy}} i {{s|Uwagi}}, do stworzenia tam własnych przypisów, do którego odnoszą się po nazwach w tekście szablonu {{s|r}} i {{s|u}}, lub do użycia w tekście, zamiast znacznika {{Tag|ref}}. * {{s|Refn}} - szablon służy do {{lpp|Przypisy|tworzenia przypisów w Wikibooks}} i jest alternatywą (i uzupełnieniem) dla standardowego tagu {{Code|<nowiki><ref></nowiki>}}. * {{s|Przypisy-lista}} - szablon stworzony do tworzenia przypisów list, podobnie jak szablony: {{s|Przypisy}} i {{s|Uwagi}}, tylko z tą różnicą, że on dotyczy przypisów bibliograficznych, ale za to wyświetlającą swoją generowaną zawartość, w podanej liczbie kolumn dzielącej jego treść, w kolumnach. * {{s|Odn}} - szablon pozwala na generowanie skróconych {{lpg|przypisy harwardzkie|przypisów harwardzkich (oksfordzkich)}} do pozycji pojawiających się w bibliografii artykułu. Poniższe podszablony przyjmują te same parametry, co on: ** {{s|Odn/id}} - generuje identyfikator tworzonego przezeń przypisu. ** {{s|Odn/tekst}} - generuje tekst tworzonego przezeń przypisu. * {{s|Przypiswiki}} - szablon umieszczany wewnątrz szablonu {{s|Ref}} lub znaczników {{Tag|ref}}, czyli w ten sposób tworzymy referencję do przypisu. === Bibliografia === * {{s|Source}} - szablon do generowania bibliografii. == Szablony opływania elementów pływających, tzn. znajdujące się po lewej lub prawej części strony lub pudełka == * {{s|BrClear}} lub {{s|-}} albo też {{s|Koniec grafiki}} (te dwa ostatnie przekierowania do pierwszego) - szablon nowej linii opływania elementów. * {{s|SpanClear}} - szablon opływania wstawiany do wnętrza tekstu. * {{s|HrClear}} - szablon poziomej kreski opływania elementów z pewnym marginesem górnym. * {{s|DivClear}} - szablon służy do rozpychania rodzica przez dziecko. == Szablony powitania == * {{s|Witaj}} i {{s|Witam}} (przekierowanie do tego ostatniego) - dla użytkowników nieanonimowych - (po polsku) a {{s|Welcome}} (po angielsku). * {{s|Anonim}} - dla użytkowników anonimowych, czyli ogólnie mówiąc IP'ów. == Szablony kodów języka == * {{s|Lang}} i {{s|Język}} (przekierowanie do tego pierwszego) - szablony kodów do języka, zamieniający kod w coś innego, dotyczące języka. * {{s|Lang2}} - szablon służy do oznaczania języka, w jakim są napisane strony, na które wskazuje link zewnętrzny. * {{s|Lang3}} - szablon ustawia język i jednocześnie jego klasą CSS, tekstu, kierunek i inny tekst po jego prawej stronie. == Szablony wykorzystujące strony specjalne w przestrzeni nazw {{Np|Special|link=tak}} == * {{s|Zmiany w linkujących}} - szablon umieszcza zmiany w linkujących w ramce html-owej strony z ewentualnie podaną przestrzenią nazw, która domyślnie przyjmuje wartość {{Np|Category|link=tak}}. == Szablony ramkowe wykorzystujące mechanizmy MediaWiki i HTML == === Szablony blokowe === Szablony bloków, otwierający i zamykający: * {{s|Blok tabelowy}} i {{s|Blok tabelowy/Zamknij}} - zbudowanego za pomocą ramki wikikodu zbudowanej za pomocą tebelek mechanizmu MediaWiki. * {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}} - zbudowanego za pomocą tabeli wikikodu oparty o warstwy (znaczniki) {{Tag|div}}. === Inne szablony pudełkowe === * Pudełka ** {{s|Pudełko ramkowe}}, {{s|Pudełko ramkowe 1}}, {{s|Pudełko ramkowe 2}}, {{s|Pudełko ramkowe 3}}, {{s|Pudełko ramkowe 4}} i {{s|Pudełko ramkowe 5}} - szablon tworzy div-ramki htmlowe. ** {{s|Pudełko komórkowe}}, {{s|Pudełko komórkowe 1}}, {{s|Pudełko komórkowe 2}}, {{s|Pudełko komórkowe 3}}, {{s|Pudełko komórkowe 4}} i {{s|Pudełko komórkowe 5}} - szablon tworzy table-ramki htmlowe. * Sekcje ** {{s|Sekcja ramkowa}} - szablony do budowy sekcji na podstawie ramek {{Tag|div}}. ** {{s|Sekcja komórkowa}} - szablon do budowy sekcji w tabeli. == Szablony kierunku == * {{s|Ltr}} - szablon kierunku tekstu od lewej do prawej, a {{s|Rtl}} - od prawej do lewej. == Szablony znaczników HTML == * {{s|Znacznik start}}, {{s|Znacznik koniec}} i {{s|Znacznik}} - ogólne znaczniki kombajny, otwierający, zamykający i zupełny. * {{s|Div start}}, {{s|Div koniec}} i {{S|Div}} - znacznik otwierający, zamykający i zupełny znacznika {{Tag|div}}. * Znaczniki ogólne znacznika {{Tag|pre}} elementu preformatowanego znacznika HTML: {{s|Pre}}, {{s|PreBody}}, {{s|PreBody2}}, {{s|PreLine}}, {{s|PreLineBody}}, {{s|Pre start}} i {{s|Pre koniec}} - szablony z '''Body''' tekst wyświetlane jest bez ramki, a z '''Line''' tekst z wielokrotnymi spacjami tam spacje są skracane do jednej, z '''start''' i '''koniec''', to jest szablon otwierający i zamykający tego znacznika. * {{s|Code}}, {{s|Kbd}}, {{s|Tt}}, {{s|Sub}}, {{s|Sup}}, {{s|Su}}, {{s|P}}, {{s|Span}}, {{s|Bdo}}, {{s|Small}}, {{s|Big}}, {{s|Strong}}, {{s|Br}} i {{s|Hr}} - proste szablony znaczników sformułowane o znacznik ogólny kombajn. ** {{s|Font}} - bardziej skomplikowany szablon znaczników zastępujący znacznik {{Tag|font}}. ** {{s|Center}} - szablon center, którego funkcjonalnym odpowiednikiem jest znacznik {{Tag|center}}, z wieloma zaawansowanymi funkcjami. * {{s|Indeksuj}}, {{s|Kotwica}} i {{s|Id}} - szablony do indeksowania poszczególnych elementów strony. * {{s|OverflowWiersz}} - szablon potrzebny do tworzenia elementów z paskiem przewijania wierszowym, jeżeli zawartość, tego szablonu, w poziomie jest większa niż sam on. == Szablony tekstu specjalne == * {{s|Nobold}} - wyświetla tekst, lub ciąg znaków za pomocą normalnej czcionki w miejscu, gdzie czcionka jest automatycznie pogrubiana, np. nagłówki kolumn w tabelach itp. * {{s|Nowiki}} - szablony do wyświetlania szczególnie znaków zapisanych w postaci kodów HTML, aby one były wyświetlane w postaci tekstu, a nie jako znak. == Szablony do wyświetlania zawartości szablonu == === Szablony wyświetlające zawartość inkludowaną szablonu === * {{s|Wikikod}} - szablon służy do wyświetlania wikikodu podanych szablonów lub innych stron, przy czym wywołania szablonowe są zastępowane wywołaniem szablonu {{s|S}}, a wywołania modułowe szablonem {{s|M}}, a wywołania parsera są wyświetlane, jak normalny tekst. === Inne szablony specjalne oparte o znacznik {{Tag|pre}} === * {{s|PreWikikod}} - szablon służy do wyświetlania wikikodu podanych szablonów lub innych stron, przy czym wywołania szablonowe są zastępowane wywołaniem szablonu {{s|S}}, a wywołania modułowe szablonem {{s|M}}. Wikikod jest umieszczany w ramce znacznika {{Tag|pre}}. Ale wiele spacji nie są skracane do jednej, chyba, że użyjemy: {{Parametr|styl|white-space:pre-line}}. * {{s|PreLineWikikod}} - co poprzedni, ale w nim wiele spacji są skracane do jednej, bo w tym szablonie jest ukryty, który nie jawnie użyliśmy: {{Parametr|styl|white-space:pre-line}}, w funkcji {{s|PreLine}}. === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === * {{s|ŹródłoWikikod}} - szablon do wyświetlania wikikodu szablonów i innych stron z podświetlaniem jego składni. === Szablony wyświetlające szablony w postaci surowej (przetworzonej) === * {{s|LuaSurowySzablonRozwiń}} - szablon wyświetlający opcjonalnie z opakowaniem znacznika {{Tag|div}} przy pomocy {{s|Div}}, ewentualnie z atrybutami, z możliwością wyświetlania kategorii na stronę lub w postaci opakowanej, ma możliwość wyświetlania czystego wikikodu, lub jego zamienienia na zwykły tekst, który może być opakowany znacznikiem {{Tag|pre}} za pomocą szablonu {{s|Pre}}, to wszystko można zapewnić używając szablonu tego z pewnymi parametrami. == Szablony do wyświetlania tekstu z kodami HTML == * {{s|PreNowiki}} - szablon przyjmuje jeden parametr będący wikikodem do rozwinięcia opatrując go pomiędzy znacznikami {{Mniejszy}}nowiki{{Większy}}...{{Mniejszy}}/nowiki{{Większy}}. W danym polu parametru przy pierwszym znaku {{=}} stawiamy zamiast tego znaku wywołanie szablonowe {{s|{{=}}}}, by część poprzedzająca nie była traktowana jako parametr, a część następująca po nim jako wartość. Szablon wyświetla kody specjalne nie zamieniając je na odpowiednie znaki. Szablon wyświetla rozwinięty wikikod w postaci czystego tekstu otoczone ramką znacznika: {{Tag|pre}}. Ale wiele spacji nie są skracane do jednej, chyba, że użyjemy: {{Parametr|styl|white-space:pre-line}}. * {{s|PreLineNowiki}} - co poprzedni, ale w nim wiele spacji są skracane do jednej, bo w tym szablonie jest ukryty, który nie jawnie użyliśmy: {{Parametr|styl|white-space:pre-line}}, w funkcji {{s|PreLine}}. === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === * {{s|ŹródłoNowiki}} - szablon służy do podświetlania składni rozwijanych przez niego szablonów, czy stron, względem jego parametrów. == Szablony zamieniające pewne znaki na kod HTML == * {{s|KodHTMLZnaku}} - szablon zamieniający dowolny znak w jego kod HTML, lub w taki sposób, by się dało się wyświetlić ten kod na ekranie monitora. * {{s|KodyHTMLZnakówWikiCiągu}} - co poprzednio, tylko dla niektórych znaków, ale ten szablon nie dotyczy jednego podanego znaku, ale tekstu (wielu znaków po sobie następujących). == Szablony użyte w tekście do spowodowania jego łamliwości lub nie == * {{s|Wrap}} i {{s|W}} (przekierowanie) - szablony do łamania tekstu, gdzie po niełamliwej spacji następuje możliwe przełamanie, by zacząc dalszy niełamliwy tekst. * {{s|·wrap}} i {{s|·w}} (przekierowanie), {{s|•wrap}} i {{s|•w}} (przekierowanie), {{s|–wrap}} i {{s|–w}} (przekierowanie), {{s|!wrap}} i {{s|!w}} (przekierowanie) oraz {{s|\wrap}} i {{s|\w}} (przekierowanie) - proste szablony do łamania tekstu, gdzie znak przed '''wrap''' lub '''w''', w nazwie szablonu, wskazuje, jaki jest znak, po którym następuje opcjonalne przełamywanie tekstu, przed tym znakiem jest niełamliwa spacja. * {{s|·}}, {{s|Dot}} (przekierowanie) i {{s|Middot}} (przekierowanie), czy {{s|•}}, {{s|Bull}} (przekierowanie) i {{s|Bullet}} (przekierowanie), czy {{s|–}}, {{s|Ndash}} (przekierowanie}} i {{s|En dash}} (przekierowanie), czy {{s|—}}, {{s|Mdash}} (przekierowanie) i {{s|Em dash}} (przekierowanie) - szablony łamania tekstu, w którym znak wskazanym przez nazwę szablonu nieprzekierowania, działanie jest takie samo w ich przekierowaniach, w którym przed nim jest spacja niełamliwa, gdzie po tym znaku następuje opcjonalne przełamania tekstu. * {{s|Nowrap}}, {{s|Nowrap start}} i {{s|Nowrap koniec}} - szablony niełamliwości tekstu, pierwszy ten tekst wsadzamy ten tekst do wnętrza szablony, a drugi i trzeci, między tymi szablonami. * {{s|Nowraplinki}}, {{s|Nowraplinki start}} i {{s|Nowraplinki koniec}} - szablony niełamliwości linków w danym tekście, pierwszym tekst jest wsadzamy do wnętrza tego szablonu, a drugi i trzeci, między szablonami. == Szablon zastępujące pewne znaki == === Potrzebne typu do szablonów, linków, wikitabel i zmiennych === * {{s|!!}} i {{s|!}} (lub w postaci kodu HTML: {{s|Pipe}}) - szablony znaków kresek pionowych. * {{s|!(}} (otwierający) i {{s|)!}} (zamykający), {{s|!((}} (otwierający) i {{s|))!}} (zamykający) - szablony typu nawiasów kwadratowych, otwierający i zamykający. * {{s|(}} (otwierający) i {{s|)}} (zamykający), {{s|((}} (otwierający) i {{s|))}} (zamykający), {{s|(((}} (otwierający) i {{s|)))}} (zamykający) - szablony typu nawiasów klamrowych, otwierający i zamykający. * {{s|{{=}}}} - szablon zastępujący znak równości, przede wszystkim potrzebny do szablonu {{s|S}} (symbolizując kod szablonowy) i {{s|M}} (symbolizujący wywołanie ramki modułu). ** {{s|Dokumentacja szablonów zastępujących znaki}} - szablon dokumentacji szablonów zastępowania pewnych elementów szablonowych mających znaczenie w '''mechanizmie MediaWiki'''. ==== Szablony zastępujące znaki w postaci kodu HTML, potrzebne, by szablon nie uwzględniał je jako początek listy, lub do list, albo tabel ==== Przedstawimy tutaj szablony zastępujące znaki w postaci kodów HTML do wiki-tabel i wiki-list. ===== Szablony elementów wiki-tabel ===== * {{s|Pipe}} - szablon kreski pionowej, tzn.: {{Code|{{Pipe}}}}, wstawiany zamiast niego, by nie spowodować zainicjowanie nowego parametru, lub następnym elementem w nowym wierszu nie była normalna kreska pionowa tabeli, w postaci kodu HTML, zamiast zwykłego znaku: {{Code|{{Pipe}}}}, w postaci: {{Code|{{Nowiki|{{Pipe}}}}}}. ===== Szablony elementów wiki-list ===== * {{s|Śr}} - szablon średnika, tzn.: {{Code|{{Śr}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Śr}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Śr}}}}, w postaci kodu: {{Code|{{Nowiki|{{Śr}}}}}}. * {{s|Sp}} - szablon hash'a (splash'a), tzn.: {{Code|{{Sp}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Sp}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego: {{Code|{{Sp}}}}, w postaci kodu: {{Code|{{Nowiki|{{Sp}}}}}}. * {{s|Gw}} - szablon gwiazdki, tzn.: {{Code|{{Gw}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Gw}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Gw}}}}, w postaci kodu: {{Code|{{Nowiki|{{Gw}}}}}}. * {{s|Dk}} - szablon dwukropka, tzn.: {{Code|{{Dk}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Dk}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Dk}}}}, w postaci kodu: {{Code|{{Nowiki|{{Dk}}}}}}. === Wykorzystywane do innych znaków === * {{s|Mniejszy}} (otwierający) i {{s|Większy}} (zamykający) - potrzebne do znaczników (wykorzystywane w znaczniku: {{Tag|pre}}), przede wszystkich, aby wyłączyć dla nich obsługę mechanizmu MediaWiki, i aby były traktowane jako tylko elementy HTML, dla innych znaczników, które są tylko obsługiwane przez mechanizm MediaWiki, i nie mają żadnego znaczenia w HTML, to wyłączamy jego działanie, które można znów włączyć za pomocą funkcji w pewnym module (wskazanym przez pokazanie symboliczne): {{m|Ramka|Rozwiń}}), a także: {{s|Kropka}} i {{s|Kula}} - potrzebne do szablonów łamania tekstu oraz {{s|Pauza}} i {{s|Półpauza}} - szablony zastępujące inne znaki niekwadratowe i nieklamrowe, te ostatnie cztery szablony tak wyświetlają swoją rozwiniętą zawartość, jak wskazuje na to nazwa tych szablonów. === Szablon usuwające nadmiarowe odstępy === * {{s|PrzytnijTekst}} i jego przekierowanie {{s|Trim}} - szablony usuwające białe znaki z lewej i prawej części podanego parametru. * {{s|Odstępy}} - szablon usuwające białe znaki i dolne myślniki z lewej i prawej części podanego parametru oraz wewnątrz tekstu zamieniające je na spację lub dolny myślnik. == Szablony tworzące tabele przy pomocy mechanizmu MediaWiki == * {{s|Tabelka}}, {{s|Tytuł}}, {{s|Wiersz}} i {{s|Komórka}} - szablony tworzące kolejno: wiki-tabelę, jego tytuł, a także dzielące element pierwszy na wiersze, a je na kolumny. Umożliwiający pisanie je w jednej linijce za pomocą komentarzy, mimo że kod wynikowy tych nie musi być taki. ** {{s|Dunno}} - szablon potrzebny do budowy tabelki, wyświetlający białe tło z zapytajnikiem, ** {{s|No}} - szablon ten wykorzystuje się w tabeli, aby otrzymać komórkę z napisem "Nie" na czerwonym tle. * {{s|Tabela}} i {{s|GridTabela}} - szablony tworzące kolejno: wiki-tabelę i grid-tabelę, w postaci wysokopoziomowej otoczki, tworzący niskopoziomową tabelę, ale w różny sposób, w pierwszym za pomocą zwykłych tabel, a w drugim dzięki znacznikom {{Tag|div}}, mechanizmu MediaWiki, dzięki temu obsługą takich ich jest prosta. Zwracają uwagę, czy jakieś parametry nie zostały podane, czy są prawidłowe. == Szablony nagłówka == Szablony nagłówka używane w artykułach, nawet jego pierwszego. === Typowe szablony na górze strony podręcznika === * {{s|Nagłówek}} - szablon nagłówka i z ewentualnie ustawioną za pomocą JavaScriptu'u stopką. * {{s|Podręcznik}} - szablon menu na samym górze podręcznika w definicji zawierający szablon {{s|Nagłówek}}. Szablon posiada ustawienia zawierającą ustawienia tego ostatniego tego szablonu, która jest na stronie zapisaną ogólnie: '''{{Ns:Template}}:Podręcznik/Ustawienia/{{s|PEŁNANAZWAKSIĄŻKI}}/config'''. * {{s|Rozdział}} - szablon określający wyglądem dużym, że ta strona, ale ten typowy rozdział, to rozdział, a nie podrozdział. * {{s|Podrozdział}} - szablon określający wyglądem małym, że ta strona, ale ten typowy rozdział, to podrozdział, a nie rozdział. === Inne szablony tego typu === Inne szablony używane rzadziej niż poprzednie. ==== Szablony pierwszego nagłówka strony ==== * {{s|Małą literą}} - szablon zamienia dużą literę, nazwy strony, na małą w pierwszym nagłówku. * {{s|Szablon nie opis}} - szablon wyświetlający nazwę szablonu, nie opisu, lub nazwę szablonu, którego dotyczy opis. ==== Szablony niepierwszego nagłówka strony ==== * {{s|MDL:RozszerzonyLink}} - szablon oznaczony grafiką określającą artykuły (rozdziały) do wyróżnionych, np. zawierający poziom wyższy niż standardowy w szkole lub na uczelni. * {{s|Pełny rozdział}} - szablon wyświetlający strony zbiorcze danego rozdziału podręcznika. ==== Szablony nagłówka linków ==== * {{s|DG}} - szablon linku do górnej części, w stronę pierwszego nagłówka. ==== Szablony nagłówka, kolekcji i do druku, danej książki ==== * {{s|Zapisane książki}} - szablon w nagłówku strony na stronie zbiorczej linków do artykułów danej kolekcji artykułów danego podręcznika, by potem można było przygotować jego wersję PDF. * {{s|Drukowanie porada}} - szablon w nagłówku strony na stronie zbiorczej wszystkich artykułów, informujący, że aktualna strona jest do druku. ==== Szablony stron archiwalnych ==== * {{s|Archiwum}} - szablon określający, że dana strona jest archiwalna, by jej nie edytować. * {{s|SDU}} - szablon ogólny, archiwum {{lr|Poczekalnia|poczekalni}}, na podstawie której jest definiowany szablon {{s|SDU/Archiwum}}, umieszczony, w nagłówku, w tym archiwach. ==== Szablony identyfikatora pierwszego nagłówka ==== * {{s|Skrót}} - określa skrót strony, nie szablony, zwykle stron projektu i pomocy. * {{s|Skrót szablonu}} - określa skrót szablonu, w przestrzeni nazw {{Np|Template|link=tak}}. == Szablony tematyczne == Szablony tutaj są przedstawione z jakiś dziedzin nauki (nie infoboksy). === Szablony chemiczne tekstu === * {{s|Chem}} - szablon służy uproszczeniu zapisywania wzorów chemicznych. * {{s|Chem2}} - szablon służy do zapisywania wzorów i prostych reakcji chemicznych. * {{s|Wzory sumaryczne}} i jego szablon pomocniczy {{s|Wzory sumaryczne/sort}} - szablon umieszczany w przekierowaniach i stronach, których tytuły są wzorami sumarycznymi. === Szablony chemiczne pudełkowe === * {{s|Chem:ciek}} - szablon z podanymi w parametrach szablonu z ciekawostkami chemicznymi. * {{s|Chem:dośw}} - szablon z podanymi w parametrach szablonu z opisami doświadczeń. === Szablony matematyczne pudełkowe === * {{s|Mat:Ciek}} - szablony ciekawostek matematycznych, z nagłówkiem: '''Czy wiesz, że...'''. * {{s|Mat:Tw}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Twierdzenie'''. * {{s|Mat:Def}} - szablony definicji matematycznych, z nagłówkiem: '''Definicja'''. * {{s|Mat:Prz}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Przykład'''. * {{s|Mat:Uwg}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Uwaga'''. === Szablony fizyczne-matematyczne pudełkowe === * {{s|DefinicjaHasło}} - szablon podająca definicję danego hasła. * {{s|PrawoHasło}} - szablon podający prawo danego hasła. * {{s|PrzykładTemat}} - szablon przedstawiający przykład dla danego tematu. * {{s|MateriałTemat}} - szablon przedstawiające jaki materiał uczeń powinien znać, by opanować materiał w danym artykule. * {{s|ZadanieTemat}} - szablon podający pojedyncze zadanie wraz z pytaniem z rozwiązaniem, także z odpowiedzią. === Szablony ekonomiczne === * {{s|Konto otwórz}}, {{s|Konto zapis}} i {{s|Konto zamknij}} - szablony tworzone za pomocą wiki-tabelek, obrazują, ile ma się na koncie, a ile jest się winny. Szablony tworzą jedno pudełko z przepisaną klasą {{Code|konto}}, które można grupować w większą tabelę z przepisaną klasą {{Code|konta}}. === Szablony informacyjne === * {{s|Naukowiec}} - szablon przedstawiający informacje o jakimś naukowcach. {{BrClear}} <noinclude>{{UnikatowaStronaKoniec}}{{Kategoria|Tekstowe opisy techniczne szablonów}}</noinclude> muqb6bql78e0vll73x1ctlp9whcpcks 559486 559485 2026-10-17T04:43:42Z Persino 2851 /* Szablony tworzące tabele przy pomocy mechanizmu MediaWiki */ 559486 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc Wikibooks - Szablony}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> == Szablony nazw stron == * {{s|NAZWAKSIĄŻKI}} - zwraca nazwę adresu podręcznika bez nazwy przestrzeni nazw, do której należy. * {{s|PEŁNANAZWAKSIĄŻKI}} - zwraca nazwę adresu podręcznika z nazwą przestrzeni nazw, do której należy. * {{s|SUBNAZWAKSIĄŻKI}} - zwraca nazwę książki, bez jego adresu i przestrzeni nazw, do której należy. * {{s|NAZWAARTYKUŁUKSIĄŻKI}} - zwraca nazwę artykułu podręcznika. * {{s|NAZWAARTYKUŁUKSIĄŻKI2}} - zwraca nazwę artykułu książki lub tytuł książki, jeśli podano pełną nazwę strony. * {{s|PEŁNANAZWAARTYKUŁUKSIĄŻKI}} - zwraca przetworzoną nazwę strony lub nazwę przestrzeni nazw, na podstawie podanej pełnej nazwy strony. * {{s|NAZWAPRZESTRZENIKSIĄŻKI}} - zwraca nazwę przestrzeni nazw, do której należy książka, bez nazwy przestrzeni strony. * {{s|PEŁNANAZWAPRZESTRZENIKSIĄŻKI}} - zwraca nazwę przestrzeni nazw, do której należy książka, z nazwą przestrzeni strony. * {{s|NAZWAKORZENIASTRONY}} - zwraca nazwę korzenia strony bez nazwy przestrzeni nazw, do której należy. * {{s|PEŁNANAZWAKORZENIASTRONY}} - zwraca nazwę korzenia strony z nazwą przestrzeni nazw, do której należy. * {{s|NAZWAPRZESTRZENI}} - zwraca nazwę przestrzeni nazw, strony. * {{s|PRZEDMIOTOWAPRZESTRZEŃ}} - zwraca nazwę przedmiotowej przestrzeni nazw, strony. * {{s|PRZESTRZEŃDYSKUSJI}} - zwraca nazwę przestrzeni nazw dyskusji, strony. * {{s|NAZWASTRONY}} - zwraca nazwę strony bez nazwy przestrzeni nazw. * {{s|BAZOWANAZWASTRONY}} - zwraca nazwę bazową strony, bez nazwy przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron. * {{s|PEŁNANAZWASTRONY}} - zwraca nazwę strony z nazwą przestrzeni nazw. * {{s|PEŁNABAZOWANAZWASTRONY}} - zwraca nazwę bazową strony z nazwą przestrzenią nazw, czyli bezpośredniego rodzica w drzewie adresów stron. * {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}} - zwraca pełną nazwę bazową strony z przedmiotową nazwą przestrzenią nazw, czyli bezpośredniego rodzica w drzewie adresów stron przedmiotowych do podanej strony. * {{s|BAZOWANAZWASTRONYDYSKUSJI}} - zwraca pełną nazwę bazową strony z nazwą przestrzenią nazw dyskusji, czyli bezpośredniego rodzica w drzewie adresów stron dyskusji do podanej strony. * {{s|NAZWASTRONYDYSKUSJI}} - zwraca nazwę strony dyskusji, z jej nazwą przestrzenią nazw, do podanej strony. * {{s|PRZEDMIOTOWANAZWASTRONY}} - zwraca pełną nazwę strony z przedmiotową nazwą przestrzeni nazw. * {{s|NAZWASUBSTRONY}} - zwraca przetworzoną nazwę strony lub nazwę przestrzeni nazw, na podstawie podanej pełnej nazwy strony. == Inne szablony nazw == * {{s|Np}} - szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję polską i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę polską lub angielską. * {{s|NpDane}} - szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. * {{s|NAZWASERWISU}} - szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na Wikipedii, w jakieś podanej wersji językowej. == Szablony liczb nazw stron podręcznikowych == * {{s|LICZBAPODRĘCZNIKÓW}} - szablon wyświetla liczbę podręczników na polskim projekcie {{NAZWASERWISU|link=tak}}. Szablon liczy ich liczbę na podstawie pozycji w kategoriach: {{lk|Wszystkie książki}}, {{lk|Wszystkie książki użytkowników}} i {{lk|Wszystkie książki w brudnopisie projektu}}. == Szablony dopracowania jednostek, lub dla jednostek wymagający naprawy lub usunięcia == * {{s|Dopracować}} oraz {{s|DoPracowania}} i {{s|Cleanup}} (dwa ostatnie to przekierowania do tego pierwszego) i {{s|Dopracować2}} - szablony informujący na stronie artykułu, szablonu, ogólnie jednostek, że popełniono jakiś błąd, coś nie dopracowano, coś wymaga naprawy. * {{s|Ekspresowe kasowanie}}, {{s|Ek}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|EK}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|Delete}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|Screenshot}} (przekierowanie do {{s|Ekspresowe kasowanie}}) - szablony wstawiane na strony (zwykłe strony, kategorie i pliki), cztery pierwsze - jeżeli chcemy usunąć daną stronę lub piąty - jeżeli wykryto naruszenie praw autorskich, co do pliku (grafika, obrazek), i {{s|Ekspresowe kasowanie 2}}, {{s|Ek2}} (przekierowanie do {{s|Ekspresowe kasowanie 2}}) - szablon analogiczny do {{s|Ekspresowe kasowanie}}, dla jego przekierowań: {{s|Ek2}} jest analogiczny do {{s|Ek}}. ** {{s|Admin usuń}} - szablon pomocniczy w celu szybkiego usuwania rzeczy z wiki zostawiając przy tym stosowny opis, dlaczego strona została usunięta. ** {{s|Błąd}} - metaszablon zwraca ''stan błędu'' (rozpoznawany w ten sposób przez {{lpp|funkcje parsera}}) oraz opcjonalnie ''tekst wiadomości błędu'' w kolorze czerwonym (widoczny dla użytkownika element o klasie CSS „error”). Szablon jest używany przez inne szablony do sygnalizowania błędu, na przykład błędnych danych wejściowych, które następnie mogą być wyświetlane zarówno edytorowi lub przechwycone i obsługiwane przez inne szablony. === Szablony typu strony do usunięcia i poczekalni === * {{s|DNU}} - szablon wstawiany do jednostek, informujący co będzie zrobione przypuszczalnie z nim, gdy głosowanie się skończy, {{s|SdU}} ({{s|DoSkasowania}} - przekierowanie) - to samo co {{s|DNU}}, tylko przed głosowaniem, i {{s|SdUwynik}} - tom samo, co {{s|DNU}}, tylko po głosowaniu. * {{s|Kasowanie po przeniesieniu}} i {{s|Kpp}} (przekierowanie do ostatniego) - używany jest do stron (artykuły i podręczniki) w przestrzeni nazw {{Np|(main)|link=tak}} i {{Np|Wikijunior|link=tak}} oraz w przestrzeni nazw {{Np|File|link=tak}} do plików. Informuje autora o okresie, w czasie którego może skopiować zawartość przed jej skasowaniem. * {{s|DNUinfo}} i {{s|DNU/info}} - informują, że strona stworzona przez tego użytkownika została zgłoszona do poczekalni i toczy się nad nim dyskusja. * {{s|LnDNU}} - szablon wstawiający kategorie na strony dyskusji (nie przestrzeń nazw dyskusji) stron zgłoszonych do poczekalni. * {{s|KSdU}} - informuje, że strona została zakwalifikowana do natychmiastowego usunięcia autorstwa użytkownika. * {{s|SDU}} - szablon szkielet, z którego korzysta szablon {{s|SDU/Archiwum}}, który pokazuje wszystkie z archiwizowane strony dyskusji toczących się wcześniej dyskusji, one są przydzielone do odpowiednich kategorii, które informują, co zrobiono po dyskusji. Na każdej strony zarchiwizowanej ze stron dyskusji on umieszcza, z definicji tego szablonu poprzez niego, szablon {{s|Archiwum}}. == Szablony integracji i podziału oraz łączenia historii edycji stron, a także tłumaczeń stron z języka obcego == === Szablony integracji === * {{s|Integruj}} i {{s|Integracja}} (przekierowanie do {{s|Integruj}}) - szablony do integracji podanych jednostek. * {{s|Integruj z}} - integracji tego artykułu z innym artykułem. * {{s|Integruj do}} - integracji artykuł↓ z tą jednostką. * {{s|Integrowanie}} - szablonu używamy, gdy chcemy powiadomić innych wikipedystów, że właśnie trwa integracja danej strony. * {{s|Zintegrowany}} - ten szablon służy zaznaczeniu, że dana strona została {{lpp|Integracja|zintegrowana}} z inną stroną, który nadal istnieje, ale został przekształcony np. na {{lpp|przekierowanie}} lub {{lpr|Strona ujednoznaczniająca|stronę ujednoznaczniającą}}. === Szablony podziału === * {{s|Podziel}} - szablon informujący podział jednostki na inne jednostki. * {{s|Wydziel}} - szablon informuje, że z danej jednostki wydzielono inną jednostkę. * {{s|Podziel sekcję}} - mówi, żeby dana sekcja została przeniesiona do innej jednostki. * {{s|Wydzielony}} - ten szablon służy zaznaczeniu, że dana strona zawiera treści skopiowane z innej istniejącej w Wikibooks strony. === Połączenie historii edycji kilku stron === * {{s|Połącz}} - szablon informujący, by administrator połączył historię edycji podanych stron. === Szablony tłumaczeń z języka obcego stron z projektów siostrzanych, z innej wersji językowej niż polski === * {{s|Przetłumaczony}} - szablon mówi z jakich artykułów w języku obcym korzystano przy tłumaczeniu na język polski, tworząc dany artykuł (stronę). * {{s|Przetłumaczona metastrona}} - szablon mówi, że ta metastrona została przetłumaczona na język polski z języka obcego z projektów siostrzanych. == Szablony problemów umieszczane w tekście == === Weryfikowalność === * {{s|Brak strony}} - szablon informujący, o braku strony, w przypisie artykułu (strony). * {{s|Fakt}} - szablon ten należy umieścić w artykule w miejscu, gdzie ze względu na niepodpartą źródłami treść powinien znajdować się {{lpp|Przypisy|przypis bibliograficzny}}. * {{s|Niewiarygodne źródło}} - szablon ten należy umieścić w artykule obok odnośnika bibliograficznego do nierzetelnego źródła. * {{s|Nie w źródle}} - wstawiamy w treści artykułu, bezpośrednio po odnośniku do źródła (pozycji bibliograficznej, przypisu), które nie zawiera informacji, którą rzekomo ma potwierdzać. * {{s|Martwy link}} - ten szablon używany jest do oznaczania źródeł internetowych zawierających {{lpg|martwy link|martwe linki}}. * {{s|Wątpliwe}} - szablon należy umieścić w artykule przy fragmencie tekstu, który wydaje się wątpliwy i wymaga weryfikacji. === Podręcznikowość === * {{s|Czy to ważne}} - służy on do oznaczania zdań lub wyrażeń, które wydają się nie mieć związku z głównym tematem strony, czyli czynią z niego {{lpr|NIEŁAD|bezładny zbiór informacji}}. === Wyrażenia zwodnicze, typu {{lpr|Unikaj wyrażeń zwodniczych|użyto wyrażeń zwodniczych}} === * {{s|Doprecyzuj}} - szablon kombajn, o którego są zbudowane inne szablony od wskazania wyrażeń zwodniczych. * {{s|Czyim}} - służy on do oznaczania miejsc, takich jak, "zdaniem historyków", "zdaniem poważnych badaczy" i tak dalej. Sformułowania takie są nie dość precyzyjne i wymagają podania źródła, wyjaśnienia konkretnie czyim zdaniem jest tak bądź inaczej. * {{s|Kto}} - służy on do oznaczania miejsc, takich jak "niektórzy twierdzą", "poważni badacze uważają", "naukowcy sądzą", "zdaniem historyków", i tak dalej. * {{s|Przez kogo}} - wstawiamy tam, gdzie widnieje ''uznawane jako'', ''przyjęte'', ''docenione'', ''znienawidzone'' itp. * {{s|Według kogo}} - wstawiamy tam, gdzie widnieje uznawane jako, przyjęte, docenione, znienawidzone. * {{s|Jaka}} - służy dom oznaczania miejsc, w którym nie określono, jakie to jest. * {{s|Jakich}} - służy dom oznaczania miejsc, w którym nie określono, jakich to dotyczy. * {{s|Gdzie}} - służy do oznaczania miejsc, w których takich jak "wyemitowano X odcinków", "tam spędził 10 lat", "produkcja zajmuje 1 miejsce pod względem oglądalności" i tak dalej. * {{s|Kiedy}} - służy do oznaczania miejsc w artykułach, kiedy on lub ona to robiła, jeśli nie nie zrobiono. * {{s|Od kiedy}} - służy do oznaczania miejsc w artykułach, od kiedy on lub ona to robiła, jeśli nie nie zrobiono. === Twórczość własna === * {{s|Or}} - gdy autor artykułu publikuje twórczość własną (stworzoną przez siebie). === Aktualność === * {{s|Aktualizuj po}} - dane w prowadzone do artykułu, mogą się zdezaktualizować, ale są aktualne na stan dzisiejszy, lub mogły zdezaktualizować się. === Szablony komunikatów === ==== Typowe szablony komunikatów ==== * {{s|Ambox}} (szablon wstawianych do przestrzeni podręcznikowych), {{s|AmboxProsty}} (prosty szablon, wstawianych, co poprzedni, informujący o różnych rzeczach), {{s|Tmbox}} (szablon wstawiany do przestrzeni dyskusji), {{s|Fmbox}} (szablon wstawiany do kategorii systemowych), {{s|Ombox}} (szablon wstawiany do stron informujące o kwestiach technicznych), {{s|Cmbox}} (szablon wstawiany do stron kategorii), {{s|Imbox}} (szablon wstawiany do stron w przestrzeni nazw plików), {{s|Dmbox}} (prosty szablon informujący) i {{s|Mbox}} (szablon szablonów - kombajn) - szablony komunikujące, wstawiane do różnych przestrzeni nazw i {{s|Mbox-strona}} - szablony do komunikatów w ramce pływającej po prawej części strony. ===== Szablony spisu alfabetycznego ===== * {{s|SpisKrótki}} i {{s|Spis treści kompakt}} - spis krótki - indeks, alfabetycznie, {{s|SpisAlfabetyczny}} - prosty spis alfabetyczny, {{s|Spis treści grafiki}} - spis treści do stron zawierających dużo grafiki, {{s|Spis treści kategorii}} i {{s|Spis treści kategoria}} - spis alfabetyczny linków do stron kategorii, i {{s|Spis treści kategoria/rozwinięty}} - spis alfabetyczny dokładny oparty o moduł {{m|TOC}}. ==== {{Śródtytuł|spisy-treści}}Szablony spisów artykułów ==== * {{s|Spis treści}} i {{s|TOCright}} (przekierowanie do tego ostatniego), {{s|TOC limit}}, {{s|TOCRamka}} i {{s|Spis treści zwinięty}} (generuje spis w postaci zwiniętej) - standardowy spis treści podobny, tak jak dawniej, do spisu treści wbudowanego do MediaWiki. * {{s|TOC}} - szablon wyświetla spis treści danego modułu, gdzie na samym górze spisu treści jest duży napis "Spis treści". * {{s|SpisTreści}} - szablon generujący spis treści, danego podartykułu podręcznika, na stronie głównej, ale tej samej książki. Ale też może być wyświetlany w dowolnym module. Szablon analizuje każdy rozpatrywany moduł od nowa. ---- Powyższe szablony przyjmują parametr {{Parametr|limit|liczba}} - podane do szablonów powyższych spisu treści w zakresie, gdzie liczba=2,...,6, to poziom, od którego elementu spisu treści tych szablonów mają być niewyświetlane (ukryte). ==== Nagłówki analizowane przez skrypty JavaScript i TOC'e oparte o {{m|StronicowyParser}} ==== * {{s|HNumer}} - szablon nagłówków, generujące nagłówki o dowolnym poziomie nagłówków większej od zera, w tym większe od sześciu. ==== Specjalistyczne szablony komunikatów ==== Tutaj są podane szablony, specjalizujące się w konkretnych sprawach wyświetlający ściśle określone informacje, zbudowane w oparciu o tabelki lub o szablon {{s|Ambox}}, albo o warstwy {{Tag|div}}: ===== Szablony bez nagłówka ===== * {{s|Info}} - szablon informujący zbudowany w oparciu o tabelki, ale nie o szablony komunikatów. * {{s|Infobox}} - szablon pudełko informujący, zbudowany o szablon {{s|Ambox}}. * {{s|Zapamiętaj}} - szablon wyrażający coś do zapamiętania, zbudowany o szablon {{s|Ambox}}. * {{s|Definicja3}} - szablony do wyrażania definicji w tekście, zbudowany o ramki {{Tag|div}}. * {{s|InfoRamka}} - szablon do podawania informacji na pewien temat, zbudowany o ramki {{Tag|div}}. * {{s|InfoReguła}} - szablon do podawania reguł jako informację, które pomogą w zrobieniu czegoś, zbudowany o ramki {{Tag|div}}. ====== Szablony szczególne bez nagłówka ====== * {{s|BibliografiaOpracowania}} - szablon bibliografii (o treści o przedrostku {{Code|Opracowania}}), dotyczące opracowań, z których korzysta dana książka, zbudowany w oparciu o ramki {{Tag|div}}. * {{s|BibliografiaŹródła}} - szablon bibliografii (o treści o przedrostku {{Code|Źródła:}}), dotyczące źródeł tekstów, z których korzysta dana książka, zbudowany w oparciu o ramki {{Tag|div}}. ===== Inne szablony bez nagłówka ===== * {{s|BlueBox}} - szablon tworzący ramkę, jako w niebieskim pudełku jest wyświetlana informacja, zbudowany w oparciu o warstwy {{Tag|div}}. * {{s|RightBox}} - szablon tworzący ramkę z tekstem w białym tle w niebieskim obramowaniu, zbudowany o ramki {{Tag|div}}. ===== Szablony z nagłówkiem ===== * {{s|Definicja}} i {{s|Definicja2}} - szablony do wyrażania definicji w tekście, zbudowany o szablon {{s|Ambox}} (ten pierwszy), a ten drugi o ramki {{Tag|div}}, z nagłówkiem '''Definicja'''. * {{s|Porada}} - szablon wyrażający poradę, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Porada'''. * {{s|Uwaga}} - szablon wyrażający uwagę, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Uwaga'''. * {{s|Ćwiczenie}} - szablon wyrażający coś do przećwiczenia, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Ćwiczenie'''. ===== Szablony z podanym nagłówkiem do przedstawiania pewnych informacji ===== * {{s|Ważne informacje}} - zawiera ważne informacje do zapamiętania, zbudowany o tabelki, z podanym nagłówkiem jako parametr szablonu. ===== Ramki wyświetlające kilka elementów w zawartości w ramce ===== * {{s|Ramka}} - szablon zbierający kilka elementów (obiektów) Wiki w jednej ramce. ===== Szablony informacji zbudowane o inne tego typu budulcowe szablony ===== * {{s|System}} - szablon zbudowany o szablon {{s|Uwaga}} pisany do różnych podręczników, odnoszący się do konkretnego systemu operacyjnego i w jakich jego wersjach zawarte informacje w artykule mogą tam nie działać. * {{s|Wymaga znajomości}} - szablon zbudowany o szablon komunikatów {{s|Mbox-strona}} pisanych do różnych podręczników, informujących, że treść tej książki wymaga znajomości poznania informacji z innych podręczników. ==== Szablony użytkowników ==== * {{s|Babel}} i {{s|Multiuserbox}} - szablony wstawiane na stronę użytkownika przedstawiające jego preferencje, ten pierwszy wyświetlający pudełko w jednej kolumnie po prawej stronie ekranu, a ten drugi w postaci przełamywanego bloku. ** {{s|Staż}} - szablon staży mówiący od kiedy jest się na projekcie. * {{s|Userbox}} i {{s|Userbox small}} - szablon preferencji służy do tworzenia userboksów, dołączanych w wikitabeli, w prawdziwej ramce lub na ekranie strony wikipedysty. Ten drugi w formie miniaturki. * {{s|User spec}} - meta-szablon pozwala na tworzenie {{lr|Userboksy|userboksów|klucz projektu=w}} dla {{lr|Wieża Specjalności|specjalności|klucz projektu=w}}. * {{s|Userlang}} i {{s|User language}} - ten pierwszy szablon jest używany przez ten drugi. Są to szablony preferencji językowych. * {{s|Ping}} - szablon pingowania do jednego lub do wielu użytkowników informująca, że jest nadesłana wiadomość. == Przypisy i bibliografia == === Szablony przypisów bibliograficznych i rzeczowych === * {{s|Przypisy}} - szablon przypisów bibliograficznych, i {{s|Uwagi}} - przypisów rzeczowych. * {{s|r}} - szablony: punktu z nazwą odnoszą się do przypisów użytych w {{s|Przypisy}}, a {{s|u}} - odnosi się do uwag zadeklarowanych przez szablon {{s|Uwagi}}. * {{s|RNota}} (jego skrót: {{s|RN}}) - szablony: zawartości referencji wyświetlane w: {{s|Przypisy}}, a {{s|UNota}} (jego skrót: {{s|UN}}) - zawartości uwag wyświetlane w: {{s|Uwagi}}. * {{s|Ref}} - szablon gotowych do użycia, w szablonie {{s|Przypisy}} i {{s|Uwagi}}, do stworzenia tam własnych przypisów, do którego odnoszą się po nazwach w tekście szablonu {{s|r}} i {{s|u}}, lub do użycia w tekście, zamiast znacznika {{Tag|ref}}. * {{s|Refn}} - szablon służy do {{lpp|Przypisy|tworzenia przypisów w Wikibooks}} i jest alternatywą (i uzupełnieniem) dla standardowego tagu {{Code|<nowiki><ref></nowiki>}}. * {{s|Przypisy-lista}} - szablon stworzony do tworzenia przypisów list, podobnie jak szablony: {{s|Przypisy}} i {{s|Uwagi}}, tylko z tą różnicą, że on dotyczy przypisów bibliograficznych, ale za to wyświetlającą swoją generowaną zawartość, w podanej liczbie kolumn dzielącej jego treść, w kolumnach. * {{s|Odn}} - szablon pozwala na generowanie skróconych {{lpg|przypisy harwardzkie|przypisów harwardzkich (oksfordzkich)}} do pozycji pojawiających się w bibliografii artykułu. Poniższe podszablony przyjmują te same parametry, co on: ** {{s|Odn/id}} - generuje identyfikator tworzonego przezeń przypisu. ** {{s|Odn/tekst}} - generuje tekst tworzonego przezeń przypisu. * {{s|Przypiswiki}} - szablon umieszczany wewnątrz szablonu {{s|Ref}} lub znaczników {{Tag|ref}}, czyli w ten sposób tworzymy referencję do przypisu. === Bibliografia === * {{s|Source}} - szablon do generowania bibliografii. == Szablony opływania elementów pływających, tzn. znajdujące się po lewej lub prawej części strony lub pudełka == * {{s|BrClear}} lub {{s|-}} albo też {{s|Koniec grafiki}} (te dwa ostatnie przekierowania do pierwszego) - szablon nowej linii opływania elementów. * {{s|SpanClear}} - szablon opływania wstawiany do wnętrza tekstu. * {{s|HrClear}} - szablon poziomej kreski opływania elementów z pewnym marginesem górnym. * {{s|DivClear}} - szablon służy do rozpychania rodzica przez dziecko. == Szablony powitania == * {{s|Witaj}} i {{s|Witam}} (przekierowanie do tego ostatniego) - dla użytkowników nieanonimowych - (po polsku) a {{s|Welcome}} (po angielsku). * {{s|Anonim}} - dla użytkowników anonimowych, czyli ogólnie mówiąc IP'ów. == Szablony kodów języka == * {{s|Lang}} i {{s|Język}} (przekierowanie do tego pierwszego) - szablony kodów do języka, zamieniający kod w coś innego, dotyczące języka. * {{s|Lang2}} - szablon służy do oznaczania języka, w jakim są napisane strony, na które wskazuje link zewnętrzny. * {{s|Lang3}} - szablon ustawia język i jednocześnie jego klasą CSS, tekstu, kierunek i inny tekst po jego prawej stronie. == Szablony wykorzystujące strony specjalne w przestrzeni nazw {{Np|Special|link=tak}} == * {{s|Zmiany w linkujących}} - szablon umieszcza zmiany w linkujących w ramce html-owej strony z ewentualnie podaną przestrzenią nazw, która domyślnie przyjmuje wartość {{Np|Category|link=tak}}. == Szablony ramkowe wykorzystujące mechanizmy MediaWiki i HTML == === Szablony blokowe === Szablony bloków, otwierający i zamykający: * {{s|Blok tabelowy}} i {{s|Blok tabelowy/Zamknij}} - zbudowanego za pomocą ramki wikikodu zbudowanej za pomocą tebelek mechanizmu MediaWiki. * {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}} - zbudowanego za pomocą tabeli wikikodu oparty o warstwy (znaczniki) {{Tag|div}}. === Inne szablony pudełkowe === * Pudełka ** {{s|Pudełko ramkowe}}, {{s|Pudełko ramkowe 1}}, {{s|Pudełko ramkowe 2}}, {{s|Pudełko ramkowe 3}}, {{s|Pudełko ramkowe 4}} i {{s|Pudełko ramkowe 5}} - szablon tworzy div-ramki htmlowe. ** {{s|Pudełko komórkowe}}, {{s|Pudełko komórkowe 1}}, {{s|Pudełko komórkowe 2}}, {{s|Pudełko komórkowe 3}}, {{s|Pudełko komórkowe 4}} i {{s|Pudełko komórkowe 5}} - szablon tworzy table-ramki htmlowe. * Sekcje ** {{s|Sekcja ramkowa}} - szablony do budowy sekcji na podstawie ramek {{Tag|div}}. ** {{s|Sekcja komórkowa}} - szablon do budowy sekcji w tabeli. == Szablony kierunku == * {{s|Ltr}} - szablon kierunku tekstu od lewej do prawej, a {{s|Rtl}} - od prawej do lewej. == Szablony znaczników HTML == * {{s|Znacznik start}}, {{s|Znacznik koniec}} i {{s|Znacznik}} - ogólne znaczniki kombajny, otwierający, zamykający i zupełny. * {{s|Div start}}, {{s|Div koniec}} i {{S|Div}} - znacznik otwierający, zamykający i zupełny znacznika {{Tag|div}}. * Znaczniki ogólne znacznika {{Tag|pre}} elementu preformatowanego znacznika HTML: {{s|Pre}}, {{s|PreBody}}, {{s|PreBody2}}, {{s|PreLine}}, {{s|PreLineBody}}, {{s|Pre start}} i {{s|Pre koniec}} - szablony z '''Body''' tekst wyświetlane jest bez ramki, a z '''Line''' tekst z wielokrotnymi spacjami tam spacje są skracane do jednej, z '''start''' i '''koniec''', to jest szablon otwierający i zamykający tego znacznika. * {{s|Code}}, {{s|Kbd}}, {{s|Tt}}, {{s|Sub}}, {{s|Sup}}, {{s|Su}}, {{s|P}}, {{s|Span}}, {{s|Bdo}}, {{s|Small}}, {{s|Big}}, {{s|Strong}}, {{s|Br}} i {{s|Hr}} - proste szablony znaczników sformułowane o znacznik ogólny kombajn. ** {{s|Font}} - bardziej skomplikowany szablon znaczników zastępujący znacznik {{Tag|font}}. ** {{s|Center}} - szablon center, którego funkcjonalnym odpowiednikiem jest znacznik {{Tag|center}}, z wieloma zaawansowanymi funkcjami. * {{s|Indeksuj}}, {{s|Kotwica}} i {{s|Id}} - szablony do indeksowania poszczególnych elementów strony. * {{s|OverflowWiersz}} - szablon potrzebny do tworzenia elementów z paskiem przewijania wierszowym, jeżeli zawartość, tego szablonu, w poziomie jest większa niż sam on. == Szablony tekstu specjalne == * {{s|Nobold}} - wyświetla tekst, lub ciąg znaków za pomocą normalnej czcionki w miejscu, gdzie czcionka jest automatycznie pogrubiana, np. nagłówki kolumn w tabelach itp. * {{s|Nowiki}} - szablony do wyświetlania szczególnie znaków zapisanych w postaci kodów HTML, aby one były wyświetlane w postaci tekstu, a nie jako znak. == Szablony do wyświetlania zawartości szablonu == === Szablony wyświetlające zawartość inkludowaną szablonu === * {{s|Wikikod}} - szablon służy do wyświetlania wikikodu podanych szablonów lub innych stron, przy czym wywołania szablonowe są zastępowane wywołaniem szablonu {{s|S}}, a wywołania modułowe szablonem {{s|M}}, a wywołania parsera są wyświetlane, jak normalny tekst. === Inne szablony specjalne oparte o znacznik {{Tag|pre}} === * {{s|PreWikikod}} - szablon służy do wyświetlania wikikodu podanych szablonów lub innych stron, przy czym wywołania szablonowe są zastępowane wywołaniem szablonu {{s|S}}, a wywołania modułowe szablonem {{s|M}}. Wikikod jest umieszczany w ramce znacznika {{Tag|pre}}. Ale wiele spacji nie są skracane do jednej, chyba, że użyjemy: {{Parametr|styl|white-space:pre-line}}. * {{s|PreLineWikikod}} - co poprzedni, ale w nim wiele spacji są skracane do jednej, bo w tym szablonie jest ukryty, który nie jawnie użyliśmy: {{Parametr|styl|white-space:pre-line}}, w funkcji {{s|PreLine}}. === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === * {{s|ŹródłoWikikod}} - szablon do wyświetlania wikikodu szablonów i innych stron z podświetlaniem jego składni. === Szablony wyświetlające szablony w postaci surowej (przetworzonej) === * {{s|LuaSurowySzablonRozwiń}} - szablon wyświetlający opcjonalnie z opakowaniem znacznika {{Tag|div}} przy pomocy {{s|Div}}, ewentualnie z atrybutami, z możliwością wyświetlania kategorii na stronę lub w postaci opakowanej, ma możliwość wyświetlania czystego wikikodu, lub jego zamienienia na zwykły tekst, który może być opakowany znacznikiem {{Tag|pre}} za pomocą szablonu {{s|Pre}}, to wszystko można zapewnić używając szablonu tego z pewnymi parametrami. == Szablony do wyświetlania tekstu z kodami HTML == * {{s|PreNowiki}} - szablon przyjmuje jeden parametr będący wikikodem do rozwinięcia opatrując go pomiędzy znacznikami {{Mniejszy}}nowiki{{Większy}}...{{Mniejszy}}/nowiki{{Większy}}. W danym polu parametru przy pierwszym znaku {{=}} stawiamy zamiast tego znaku wywołanie szablonowe {{s|{{=}}}}, by część poprzedzająca nie była traktowana jako parametr, a część następująca po nim jako wartość. Szablon wyświetla kody specjalne nie zamieniając je na odpowiednie znaki. Szablon wyświetla rozwinięty wikikod w postaci czystego tekstu otoczone ramką znacznika: {{Tag|pre}}. Ale wiele spacji nie są skracane do jednej, chyba, że użyjemy: {{Parametr|styl|white-space:pre-line}}. * {{s|PreLineNowiki}} - co poprzedni, ale w nim wiele spacji są skracane do jednej, bo w tym szablonie jest ukryty, który nie jawnie użyliśmy: {{Parametr|styl|white-space:pre-line}}, w funkcji {{s|PreLine}}. === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === * {{s|ŹródłoNowiki}} - szablon służy do podświetlania składni rozwijanych przez niego szablonów, czy stron, względem jego parametrów. == Szablony zamieniające pewne znaki na kod HTML == * {{s|KodHTMLZnaku}} - szablon zamieniający dowolny znak w jego kod HTML, lub w taki sposób, by się dało się wyświetlić ten kod na ekranie monitora. * {{s|KodyHTMLZnakówWikiCiągu}} - co poprzednio, tylko dla niektórych znaków, ale ten szablon nie dotyczy jednego podanego znaku, ale tekstu (wielu znaków po sobie następujących). == Szablony użyte w tekście do spowodowania jego łamliwości lub nie == * {{s|Wrap}} i {{s|W}} (przekierowanie) - szablony do łamania tekstu, gdzie po niełamliwej spacji następuje możliwe przełamanie, by zacząc dalszy niełamliwy tekst. * {{s|·wrap}} i {{s|·w}} (przekierowanie), {{s|•wrap}} i {{s|•w}} (przekierowanie), {{s|–wrap}} i {{s|–w}} (przekierowanie), {{s|!wrap}} i {{s|!w}} (przekierowanie) oraz {{s|\wrap}} i {{s|\w}} (przekierowanie) - proste szablony do łamania tekstu, gdzie znak przed '''wrap''' lub '''w''', w nazwie szablonu, wskazuje, jaki jest znak, po którym następuje opcjonalne przełamywanie tekstu, przed tym znakiem jest niełamliwa spacja. * {{s|·}}, {{s|Dot}} (przekierowanie) i {{s|Middot}} (przekierowanie), czy {{s|•}}, {{s|Bull}} (przekierowanie) i {{s|Bullet}} (przekierowanie), czy {{s|–}}, {{s|Ndash}} (przekierowanie}} i {{s|En dash}} (przekierowanie), czy {{s|—}}, {{s|Mdash}} (przekierowanie) i {{s|Em dash}} (przekierowanie) - szablony łamania tekstu, w którym znak wskazanym przez nazwę szablonu nieprzekierowania, działanie jest takie samo w ich przekierowaniach, w którym przed nim jest spacja niełamliwa, gdzie po tym znaku następuje opcjonalne przełamania tekstu. * {{s|Nowrap}}, {{s|Nowrap start}} i {{s|Nowrap koniec}} - szablony niełamliwości tekstu, pierwszy ten tekst wsadzamy ten tekst do wnętrza szablony, a drugi i trzeci, między tymi szablonami. * {{s|Nowraplinki}}, {{s|Nowraplinki start}} i {{s|Nowraplinki koniec}} - szablony niełamliwości linków w danym tekście, pierwszym tekst jest wsadzamy do wnętrza tego szablonu, a drugi i trzeci, między szablonami. == Szablon zastępujące pewne znaki == === Potrzebne typu do szablonów, linków, wikitabel i zmiennych === * {{s|!!}} i {{s|!}} (lub w postaci kodu HTML: {{s|Pipe}}) - szablony znaków kresek pionowych. * {{s|!(}} (otwierający) i {{s|)!}} (zamykający), {{s|!((}} (otwierający) i {{s|))!}} (zamykający) - szablony typu nawiasów kwadratowych, otwierający i zamykający. * {{s|(}} (otwierający) i {{s|)}} (zamykający), {{s|((}} (otwierający) i {{s|))}} (zamykający), {{s|(((}} (otwierający) i {{s|)))}} (zamykający) - szablony typu nawiasów klamrowych, otwierający i zamykający. * {{s|{{=}}}} - szablon zastępujący znak równości, przede wszystkim potrzebny do szablonu {{s|S}} (symbolizując kod szablonowy) i {{s|M}} (symbolizujący wywołanie ramki modułu). ** {{s|Dokumentacja szablonów zastępujących znaki}} - szablon dokumentacji szablonów zastępowania pewnych elementów szablonowych mających znaczenie w '''mechanizmie MediaWiki'''. ==== Szablony zastępujące znaki w postaci kodu HTML, potrzebne, by szablon nie uwzględniał je jako początek listy, lub do list, albo tabel ==== Przedstawimy tutaj szablony zastępujące znaki w postaci kodów HTML do wiki-tabel i wiki-list. ===== Szablony elementów wiki-tabel ===== * {{s|Pipe}} - szablon kreski pionowej, tzn.: {{Code|{{Pipe}}}}, wstawiany zamiast niego, by nie spowodować zainicjowanie nowego parametru, lub następnym elementem w nowym wierszu nie była normalna kreska pionowa tabeli, w postaci kodu HTML, zamiast zwykłego znaku: {{Code|{{Pipe}}}}, w postaci: {{Code|{{Nowiki|{{Pipe}}}}}}. ===== Szablony elementów wiki-list ===== * {{s|Śr}} - szablon średnika, tzn.: {{Code|{{Śr}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Śr}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Śr}}}}, w postaci kodu: {{Code|{{Nowiki|{{Śr}}}}}}. * {{s|Sp}} - szablon hash'a (splash'a), tzn.: {{Code|{{Sp}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Sp}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego: {{Code|{{Sp}}}}, w postaci kodu: {{Code|{{Nowiki|{{Sp}}}}}}. * {{s|Gw}} - szablon gwiazdki, tzn.: {{Code|{{Gw}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Gw}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Gw}}}}, w postaci kodu: {{Code|{{Nowiki|{{Gw}}}}}}. * {{s|Dk}} - szablon dwukropka, tzn.: {{Code|{{Dk}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Dk}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Dk}}}}, w postaci kodu: {{Code|{{Nowiki|{{Dk}}}}}}. === Wykorzystywane do innych znaków === * {{s|Mniejszy}} (otwierający) i {{s|Większy}} (zamykający) - potrzebne do znaczników (wykorzystywane w znaczniku: {{Tag|pre}}), przede wszystkich, aby wyłączyć dla nich obsługę mechanizmu MediaWiki, i aby były traktowane jako tylko elementy HTML, dla innych znaczników, które są tylko obsługiwane przez mechanizm MediaWiki, i nie mają żadnego znaczenia w HTML, to wyłączamy jego działanie, które można znów włączyć za pomocą funkcji w pewnym module (wskazanym przez pokazanie symboliczne): {{m|Ramka|Rozwiń}}), a także: {{s|Kropka}} i {{s|Kula}} - potrzebne do szablonów łamania tekstu oraz {{s|Pauza}} i {{s|Półpauza}} - szablony zastępujące inne znaki niekwadratowe i nieklamrowe, te ostatnie cztery szablony tak wyświetlają swoją rozwiniętą zawartość, jak wskazuje na to nazwa tych szablonów. === Szablon usuwające nadmiarowe odstępy === * {{s|PrzytnijTekst}} i jego przekierowanie {{s|Trim}} - szablony usuwające białe znaki z lewej i prawej części podanego parametru. * {{s|Odstępy}} - szablon usuwające białe znaki i dolne myślniki z lewej i prawej części podanego parametru oraz wewnątrz tekstu zamieniające je na spację lub dolny myślnik. == Szablony tworzące tabele przy pomocy mechanizmu MediaWiki == * {{s|Tabelka}}, {{s|Tytuł}}, {{s|Wiersz}} i {{s|Komórka}} - szablony tworzące kolejno: wiki-tabelę, jego tytuł, a także dzielące element pierwszy na wiersze, a je na kolumny. Umożliwiający pisanie je w jednej linijce za pomocą komentarzy, mimo że kod wynikowy tych nie musi być taki. ** {{s|Dunno}} - szablon potrzebny do budowy tabelki, wyświetlający białe tło z zapytajnikiem, ** {{s|No}} - szablon ten wykorzystuje się w tabeli, aby otrzymać komórkę z napisem "Nie" na czerwonym tle. * {{s|Tabela}} i {{s|GridTabela}} - szablony tworzące kolejno: wiki-tabelę i grid-tabelę, w postaci wysokopoziomowej otoczki, tworzący niskopoziomową tabelę, ale w różny sposób, w pierwszym za pomocą zwykłych tabel, a w drugim dzięki znacznikom {{Tag|div}} na podstawie siatek '''grid''', mechanizmu MediaWiki, dzięki temu obsługą takich ich jest prosta. Zwracają uwagę, czy jakieś parametry nie zostały podane, czy są prawidłowe. == Szablony nagłówka == Szablony nagłówka używane w artykułach, nawet jego pierwszego. === Typowe szablony na górze strony podręcznika === * {{s|Nagłówek}} - szablon nagłówka i z ewentualnie ustawioną za pomocą JavaScriptu'u stopką. * {{s|Podręcznik}} - szablon menu na samym górze podręcznika w definicji zawierający szablon {{s|Nagłówek}}. Szablon posiada ustawienia zawierającą ustawienia tego ostatniego tego szablonu, która jest na stronie zapisaną ogólnie: '''{{Ns:Template}}:Podręcznik/Ustawienia/{{s|PEŁNANAZWAKSIĄŻKI}}/config'''. * {{s|Rozdział}} - szablon określający wyglądem dużym, że ta strona, ale ten typowy rozdział, to rozdział, a nie podrozdział. * {{s|Podrozdział}} - szablon określający wyglądem małym, że ta strona, ale ten typowy rozdział, to podrozdział, a nie rozdział. === Inne szablony tego typu === Inne szablony używane rzadziej niż poprzednie. ==== Szablony pierwszego nagłówka strony ==== * {{s|Małą literą}} - szablon zamienia dużą literę, nazwy strony, na małą w pierwszym nagłówku. * {{s|Szablon nie opis}} - szablon wyświetlający nazwę szablonu, nie opisu, lub nazwę szablonu, którego dotyczy opis. ==== Szablony niepierwszego nagłówka strony ==== * {{s|MDL:RozszerzonyLink}} - szablon oznaczony grafiką określającą artykuły (rozdziały) do wyróżnionych, np. zawierający poziom wyższy niż standardowy w szkole lub na uczelni. * {{s|Pełny rozdział}} - szablon wyświetlający strony zbiorcze danego rozdziału podręcznika. ==== Szablony nagłówka linków ==== * {{s|DG}} - szablon linku do górnej części, w stronę pierwszego nagłówka. ==== Szablony nagłówka, kolekcji i do druku, danej książki ==== * {{s|Zapisane książki}} - szablon w nagłówku strony na stronie zbiorczej linków do artykułów danej kolekcji artykułów danego podręcznika, by potem można było przygotować jego wersję PDF. * {{s|Drukowanie porada}} - szablon w nagłówku strony na stronie zbiorczej wszystkich artykułów, informujący, że aktualna strona jest do druku. ==== Szablony stron archiwalnych ==== * {{s|Archiwum}} - szablon określający, że dana strona jest archiwalna, by jej nie edytować. * {{s|SDU}} - szablon ogólny, archiwum {{lr|Poczekalnia|poczekalni}}, na podstawie której jest definiowany szablon {{s|SDU/Archiwum}}, umieszczony, w nagłówku, w tym archiwach. ==== Szablony identyfikatora pierwszego nagłówka ==== * {{s|Skrót}} - określa skrót strony, nie szablony, zwykle stron projektu i pomocy. * {{s|Skrót szablonu}} - określa skrót szablonu, w przestrzeni nazw {{Np|Template|link=tak}}. == Szablony tematyczne == Szablony tutaj są przedstawione z jakiś dziedzin nauki (nie infoboksy). === Szablony chemiczne tekstu === * {{s|Chem}} - szablon służy uproszczeniu zapisywania wzorów chemicznych. * {{s|Chem2}} - szablon służy do zapisywania wzorów i prostych reakcji chemicznych. * {{s|Wzory sumaryczne}} i jego szablon pomocniczy {{s|Wzory sumaryczne/sort}} - szablon umieszczany w przekierowaniach i stronach, których tytuły są wzorami sumarycznymi. === Szablony chemiczne pudełkowe === * {{s|Chem:ciek}} - szablon z podanymi w parametrach szablonu z ciekawostkami chemicznymi. * {{s|Chem:dośw}} - szablon z podanymi w parametrach szablonu z opisami doświadczeń. === Szablony matematyczne pudełkowe === * {{s|Mat:Ciek}} - szablony ciekawostek matematycznych, z nagłówkiem: '''Czy wiesz, że...'''. * {{s|Mat:Tw}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Twierdzenie'''. * {{s|Mat:Def}} - szablony definicji matematycznych, z nagłówkiem: '''Definicja'''. * {{s|Mat:Prz}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Przykład'''. * {{s|Mat:Uwg}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Uwaga'''. === Szablony fizyczne-matematyczne pudełkowe === * {{s|DefinicjaHasło}} - szablon podająca definicję danego hasła. * {{s|PrawoHasło}} - szablon podający prawo danego hasła. * {{s|PrzykładTemat}} - szablon przedstawiający przykład dla danego tematu. * {{s|MateriałTemat}} - szablon przedstawiające jaki materiał uczeń powinien znać, by opanować materiał w danym artykule. * {{s|ZadanieTemat}} - szablon podający pojedyncze zadanie wraz z pytaniem z rozwiązaniem, także z odpowiedzią. === Szablony ekonomiczne === * {{s|Konto otwórz}}, {{s|Konto zapis}} i {{s|Konto zamknij}} - szablony tworzone za pomocą wiki-tabelek, obrazują, ile ma się na koncie, a ile jest się winny. Szablony tworzą jedno pudełko z przepisaną klasą {{Code|konto}}, które można grupować w większą tabelę z przepisaną klasą {{Code|konta}}. === Szablony informacyjne === * {{s|Naukowiec}} - szablon przedstawiający informacje o jakimś naukowcach. {{BrClear}} <noinclude>{{UnikatowaStronaKoniec}}{{Kategoria|Tekstowe opisy techniczne szablonów}}</noinclude> 7m7me14h4qnw1z1gosx006y7mftmq92 559487 559486 2026-10-17T04:44:10Z Persino 2851 /* Szablony tworzące tabele przy pomocy mechanizmu MediaWiki */ 559487 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Podrozdział|Pomoc Wikibooks - Szablony}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> == Szablony nazw stron == * {{s|NAZWAKSIĄŻKI}} - zwraca nazwę adresu podręcznika bez nazwy przestrzeni nazw, do której należy. * {{s|PEŁNANAZWAKSIĄŻKI}} - zwraca nazwę adresu podręcznika z nazwą przestrzeni nazw, do której należy. * {{s|SUBNAZWAKSIĄŻKI}} - zwraca nazwę książki, bez jego adresu i przestrzeni nazw, do której należy. * {{s|NAZWAARTYKUŁUKSIĄŻKI}} - zwraca nazwę artykułu podręcznika. * {{s|NAZWAARTYKUŁUKSIĄŻKI2}} - zwraca nazwę artykułu książki lub tytuł książki, jeśli podano pełną nazwę strony. * {{s|PEŁNANAZWAARTYKUŁUKSIĄŻKI}} - zwraca przetworzoną nazwę strony lub nazwę przestrzeni nazw, na podstawie podanej pełnej nazwy strony. * {{s|NAZWAPRZESTRZENIKSIĄŻKI}} - zwraca nazwę przestrzeni nazw, do której należy książka, bez nazwy przestrzeni strony. * {{s|PEŁNANAZWAPRZESTRZENIKSIĄŻKI}} - zwraca nazwę przestrzeni nazw, do której należy książka, z nazwą przestrzeni strony. * {{s|NAZWAKORZENIASTRONY}} - zwraca nazwę korzenia strony bez nazwy przestrzeni nazw, do której należy. * {{s|PEŁNANAZWAKORZENIASTRONY}} - zwraca nazwę korzenia strony z nazwą przestrzeni nazw, do której należy. * {{s|NAZWAPRZESTRZENI}} - zwraca nazwę przestrzeni nazw, strony. * {{s|PRZEDMIOTOWAPRZESTRZEŃ}} - zwraca nazwę przedmiotowej przestrzeni nazw, strony. * {{s|PRZESTRZEŃDYSKUSJI}} - zwraca nazwę przestrzeni nazw dyskusji, strony. * {{s|NAZWASTRONY}} - zwraca nazwę strony bez nazwy przestrzeni nazw. * {{s|BAZOWANAZWASTRONY}} - zwraca nazwę bazową strony, bez nazwy przestrzeni nazw, czyli bezpośredniego rodzica w drzewie adresów stron. * {{s|PEŁNANAZWASTRONY}} - zwraca nazwę strony z nazwą przestrzeni nazw. * {{s|PEŁNABAZOWANAZWASTRONY}} - zwraca nazwę bazową strony z nazwą przestrzenią nazw, czyli bezpośredniego rodzica w drzewie adresów stron. * {{s|PRZEDMIOTOWABAZOWANAZWASTRONY}} - zwraca pełną nazwę bazową strony z przedmiotową nazwą przestrzenią nazw, czyli bezpośredniego rodzica w drzewie adresów stron przedmiotowych do podanej strony. * {{s|BAZOWANAZWASTRONYDYSKUSJI}} - zwraca pełną nazwę bazową strony z nazwą przestrzenią nazw dyskusji, czyli bezpośredniego rodzica w drzewie adresów stron dyskusji do podanej strony. * {{s|NAZWASTRONYDYSKUSJI}} - zwraca nazwę strony dyskusji, z jej nazwą przestrzenią nazw, do podanej strony. * {{s|PRZEDMIOTOWANAZWASTRONY}} - zwraca pełną nazwę strony z przedmiotową nazwą przestrzeni nazw. * {{s|NAZWASUBSTRONY}} - zwraca przetworzoną nazwę strony lub nazwę przestrzeni nazw, na podstawie podanej pełnej nazwy strony. == Inne szablony nazw == * {{s|Np}} - szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję polską i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę polską lub angielską. * {{s|NpDane}} - szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. * {{s|NAZWASERWISU}} - szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na Wikipedii, w jakieś podanej wersji językowej. == Szablony liczb nazw stron podręcznikowych == * {{s|LICZBAPODRĘCZNIKÓW}} - szablon wyświetla liczbę podręczników na polskim projekcie {{NAZWASERWISU|link=tak}}. Szablon liczy ich liczbę na podstawie pozycji w kategoriach: {{lk|Wszystkie książki}}, {{lk|Wszystkie książki użytkowników}} i {{lk|Wszystkie książki w brudnopisie projektu}}. == Szablony dopracowania jednostek, lub dla jednostek wymagający naprawy lub usunięcia == * {{s|Dopracować}} oraz {{s|DoPracowania}} i {{s|Cleanup}} (dwa ostatnie to przekierowania do tego pierwszego) i {{s|Dopracować2}} - szablony informujący na stronie artykułu, szablonu, ogólnie jednostek, że popełniono jakiś błąd, coś nie dopracowano, coś wymaga naprawy. * {{s|Ekspresowe kasowanie}}, {{s|Ek}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|EK}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|Delete}} (przekierowanie do {{s|Ekspresowe kasowanie}}), {{s|Screenshot}} (przekierowanie do {{s|Ekspresowe kasowanie}}) - szablony wstawiane na strony (zwykłe strony, kategorie i pliki), cztery pierwsze - jeżeli chcemy usunąć daną stronę lub piąty - jeżeli wykryto naruszenie praw autorskich, co do pliku (grafika, obrazek), i {{s|Ekspresowe kasowanie 2}}, {{s|Ek2}} (przekierowanie do {{s|Ekspresowe kasowanie 2}}) - szablon analogiczny do {{s|Ekspresowe kasowanie}}, dla jego przekierowań: {{s|Ek2}} jest analogiczny do {{s|Ek}}. ** {{s|Admin usuń}} - szablon pomocniczy w celu szybkiego usuwania rzeczy z wiki zostawiając przy tym stosowny opis, dlaczego strona została usunięta. ** {{s|Błąd}} - metaszablon zwraca ''stan błędu'' (rozpoznawany w ten sposób przez {{lpp|funkcje parsera}}) oraz opcjonalnie ''tekst wiadomości błędu'' w kolorze czerwonym (widoczny dla użytkownika element o klasie CSS „error”). Szablon jest używany przez inne szablony do sygnalizowania błędu, na przykład błędnych danych wejściowych, które następnie mogą być wyświetlane zarówno edytorowi lub przechwycone i obsługiwane przez inne szablony. === Szablony typu strony do usunięcia i poczekalni === * {{s|DNU}} - szablon wstawiany do jednostek, informujący co będzie zrobione przypuszczalnie z nim, gdy głosowanie się skończy, {{s|SdU}} ({{s|DoSkasowania}} - przekierowanie) - to samo co {{s|DNU}}, tylko przed głosowaniem, i {{s|SdUwynik}} - tom samo, co {{s|DNU}}, tylko po głosowaniu. * {{s|Kasowanie po przeniesieniu}} i {{s|Kpp}} (przekierowanie do ostatniego) - używany jest do stron (artykuły i podręczniki) w przestrzeni nazw {{Np|(main)|link=tak}} i {{Np|Wikijunior|link=tak}} oraz w przestrzeni nazw {{Np|File|link=tak}} do plików. Informuje autora o okresie, w czasie którego może skopiować zawartość przed jej skasowaniem. * {{s|DNUinfo}} i {{s|DNU/info}} - informują, że strona stworzona przez tego użytkownika została zgłoszona do poczekalni i toczy się nad nim dyskusja. * {{s|LnDNU}} - szablon wstawiający kategorie na strony dyskusji (nie przestrzeń nazw dyskusji) stron zgłoszonych do poczekalni. * {{s|KSdU}} - informuje, że strona została zakwalifikowana do natychmiastowego usunięcia autorstwa użytkownika. * {{s|SDU}} - szablon szkielet, z którego korzysta szablon {{s|SDU/Archiwum}}, który pokazuje wszystkie z archiwizowane strony dyskusji toczących się wcześniej dyskusji, one są przydzielone do odpowiednich kategorii, które informują, co zrobiono po dyskusji. Na każdej strony zarchiwizowanej ze stron dyskusji on umieszcza, z definicji tego szablonu poprzez niego, szablon {{s|Archiwum}}. == Szablony integracji i podziału oraz łączenia historii edycji stron, a także tłumaczeń stron z języka obcego == === Szablony integracji === * {{s|Integruj}} i {{s|Integracja}} (przekierowanie do {{s|Integruj}}) - szablony do integracji podanych jednostek. * {{s|Integruj z}} - integracji tego artykułu z innym artykułem. * {{s|Integruj do}} - integracji artykuł↓ z tą jednostką. * {{s|Integrowanie}} - szablonu używamy, gdy chcemy powiadomić innych wikipedystów, że właśnie trwa integracja danej strony. * {{s|Zintegrowany}} - ten szablon służy zaznaczeniu, że dana strona została {{lpp|Integracja|zintegrowana}} z inną stroną, który nadal istnieje, ale został przekształcony np. na {{lpp|przekierowanie}} lub {{lpr|Strona ujednoznaczniająca|stronę ujednoznaczniającą}}. === Szablony podziału === * {{s|Podziel}} - szablon informujący podział jednostki na inne jednostki. * {{s|Wydziel}} - szablon informuje, że z danej jednostki wydzielono inną jednostkę. * {{s|Podziel sekcję}} - mówi, żeby dana sekcja została przeniesiona do innej jednostki. * {{s|Wydzielony}} - ten szablon służy zaznaczeniu, że dana strona zawiera treści skopiowane z innej istniejącej w Wikibooks strony. === Połączenie historii edycji kilku stron === * {{s|Połącz}} - szablon informujący, by administrator połączył historię edycji podanych stron. === Szablony tłumaczeń z języka obcego stron z projektów siostrzanych, z innej wersji językowej niż polski === * {{s|Przetłumaczony}} - szablon mówi z jakich artykułów w języku obcym korzystano przy tłumaczeniu na język polski, tworząc dany artykuł (stronę). * {{s|Przetłumaczona metastrona}} - szablon mówi, że ta metastrona została przetłumaczona na język polski z języka obcego z projektów siostrzanych. == Szablony problemów umieszczane w tekście == === Weryfikowalność === * {{s|Brak strony}} - szablon informujący, o braku strony, w przypisie artykułu (strony). * {{s|Fakt}} - szablon ten należy umieścić w artykule w miejscu, gdzie ze względu na niepodpartą źródłami treść powinien znajdować się {{lpp|Przypisy|przypis bibliograficzny}}. * {{s|Niewiarygodne źródło}} - szablon ten należy umieścić w artykule obok odnośnika bibliograficznego do nierzetelnego źródła. * {{s|Nie w źródle}} - wstawiamy w treści artykułu, bezpośrednio po odnośniku do źródła (pozycji bibliograficznej, przypisu), które nie zawiera informacji, którą rzekomo ma potwierdzać. * {{s|Martwy link}} - ten szablon używany jest do oznaczania źródeł internetowych zawierających {{lpg|martwy link|martwe linki}}. * {{s|Wątpliwe}} - szablon należy umieścić w artykule przy fragmencie tekstu, który wydaje się wątpliwy i wymaga weryfikacji. === Podręcznikowość === * {{s|Czy to ważne}} - służy on do oznaczania zdań lub wyrażeń, które wydają się nie mieć związku z głównym tematem strony, czyli czynią z niego {{lpr|NIEŁAD|bezładny zbiór informacji}}. === Wyrażenia zwodnicze, typu {{lpr|Unikaj wyrażeń zwodniczych|użyto wyrażeń zwodniczych}} === * {{s|Doprecyzuj}} - szablon kombajn, o którego są zbudowane inne szablony od wskazania wyrażeń zwodniczych. * {{s|Czyim}} - służy on do oznaczania miejsc, takich jak, "zdaniem historyków", "zdaniem poważnych badaczy" i tak dalej. Sformułowania takie są nie dość precyzyjne i wymagają podania źródła, wyjaśnienia konkretnie czyim zdaniem jest tak bądź inaczej. * {{s|Kto}} - służy on do oznaczania miejsc, takich jak "niektórzy twierdzą", "poważni badacze uważają", "naukowcy sądzą", "zdaniem historyków", i tak dalej. * {{s|Przez kogo}} - wstawiamy tam, gdzie widnieje ''uznawane jako'', ''przyjęte'', ''docenione'', ''znienawidzone'' itp. * {{s|Według kogo}} - wstawiamy tam, gdzie widnieje uznawane jako, przyjęte, docenione, znienawidzone. * {{s|Jaka}} - służy dom oznaczania miejsc, w którym nie określono, jakie to jest. * {{s|Jakich}} - służy dom oznaczania miejsc, w którym nie określono, jakich to dotyczy. * {{s|Gdzie}} - służy do oznaczania miejsc, w których takich jak "wyemitowano X odcinków", "tam spędził 10 lat", "produkcja zajmuje 1 miejsce pod względem oglądalności" i tak dalej. * {{s|Kiedy}} - służy do oznaczania miejsc w artykułach, kiedy on lub ona to robiła, jeśli nie nie zrobiono. * {{s|Od kiedy}} - służy do oznaczania miejsc w artykułach, od kiedy on lub ona to robiła, jeśli nie nie zrobiono. === Twórczość własna === * {{s|Or}} - gdy autor artykułu publikuje twórczość własną (stworzoną przez siebie). === Aktualność === * {{s|Aktualizuj po}} - dane w prowadzone do artykułu, mogą się zdezaktualizować, ale są aktualne na stan dzisiejszy, lub mogły zdezaktualizować się. === Szablony komunikatów === ==== Typowe szablony komunikatów ==== * {{s|Ambox}} (szablon wstawianych do przestrzeni podręcznikowych), {{s|AmboxProsty}} (prosty szablon, wstawianych, co poprzedni, informujący o różnych rzeczach), {{s|Tmbox}} (szablon wstawiany do przestrzeni dyskusji), {{s|Fmbox}} (szablon wstawiany do kategorii systemowych), {{s|Ombox}} (szablon wstawiany do stron informujące o kwestiach technicznych), {{s|Cmbox}} (szablon wstawiany do stron kategorii), {{s|Imbox}} (szablon wstawiany do stron w przestrzeni nazw plików), {{s|Dmbox}} (prosty szablon informujący) i {{s|Mbox}} (szablon szablonów - kombajn) - szablony komunikujące, wstawiane do różnych przestrzeni nazw i {{s|Mbox-strona}} - szablony do komunikatów w ramce pływającej po prawej części strony. ===== Szablony spisu alfabetycznego ===== * {{s|SpisKrótki}} i {{s|Spis treści kompakt}} - spis krótki - indeks, alfabetycznie, {{s|SpisAlfabetyczny}} - prosty spis alfabetyczny, {{s|Spis treści grafiki}} - spis treści do stron zawierających dużo grafiki, {{s|Spis treści kategorii}} i {{s|Spis treści kategoria}} - spis alfabetyczny linków do stron kategorii, i {{s|Spis treści kategoria/rozwinięty}} - spis alfabetyczny dokładny oparty o moduł {{m|TOC}}. ==== {{Śródtytuł|spisy-treści}}Szablony spisów artykułów ==== * {{s|Spis treści}} i {{s|TOCright}} (przekierowanie do tego ostatniego), {{s|TOC limit}}, {{s|TOCRamka}} i {{s|Spis treści zwinięty}} (generuje spis w postaci zwiniętej) - standardowy spis treści podobny, tak jak dawniej, do spisu treści wbudowanego do MediaWiki. * {{s|TOC}} - szablon wyświetla spis treści danego modułu, gdzie na samym górze spisu treści jest duży napis "Spis treści". * {{s|SpisTreści}} - szablon generujący spis treści, danego podartykułu podręcznika, na stronie głównej, ale tej samej książki. Ale też może być wyświetlany w dowolnym module. Szablon analizuje każdy rozpatrywany moduł od nowa. ---- Powyższe szablony przyjmują parametr {{Parametr|limit|liczba}} - podane do szablonów powyższych spisu treści w zakresie, gdzie liczba=2,...,6, to poziom, od którego elementu spisu treści tych szablonów mają być niewyświetlane (ukryte). ==== Nagłówki analizowane przez skrypty JavaScript i TOC'e oparte o {{m|StronicowyParser}} ==== * {{s|HNumer}} - szablon nagłówków, generujące nagłówki o dowolnym poziomie nagłówków większej od zera, w tym większe od sześciu. ==== Specjalistyczne szablony komunikatów ==== Tutaj są podane szablony, specjalizujące się w konkretnych sprawach wyświetlający ściśle określone informacje, zbudowane w oparciu o tabelki lub o szablon {{s|Ambox}}, albo o warstwy {{Tag|div}}: ===== Szablony bez nagłówka ===== * {{s|Info}} - szablon informujący zbudowany w oparciu o tabelki, ale nie o szablony komunikatów. * {{s|Infobox}} - szablon pudełko informujący, zbudowany o szablon {{s|Ambox}}. * {{s|Zapamiętaj}} - szablon wyrażający coś do zapamiętania, zbudowany o szablon {{s|Ambox}}. * {{s|Definicja3}} - szablony do wyrażania definicji w tekście, zbudowany o ramki {{Tag|div}}. * {{s|InfoRamka}} - szablon do podawania informacji na pewien temat, zbudowany o ramki {{Tag|div}}. * {{s|InfoReguła}} - szablon do podawania reguł jako informację, które pomogą w zrobieniu czegoś, zbudowany o ramki {{Tag|div}}. ====== Szablony szczególne bez nagłówka ====== * {{s|BibliografiaOpracowania}} - szablon bibliografii (o treści o przedrostku {{Code|Opracowania}}), dotyczące opracowań, z których korzysta dana książka, zbudowany w oparciu o ramki {{Tag|div}}. * {{s|BibliografiaŹródła}} - szablon bibliografii (o treści o przedrostku {{Code|Źródła:}}), dotyczące źródeł tekstów, z których korzysta dana książka, zbudowany w oparciu o ramki {{Tag|div}}. ===== Inne szablony bez nagłówka ===== * {{s|BlueBox}} - szablon tworzący ramkę, jako w niebieskim pudełku jest wyświetlana informacja, zbudowany w oparciu o warstwy {{Tag|div}}. * {{s|RightBox}} - szablon tworzący ramkę z tekstem w białym tle w niebieskim obramowaniu, zbudowany o ramki {{Tag|div}}. ===== Szablony z nagłówkiem ===== * {{s|Definicja}} i {{s|Definicja2}} - szablony do wyrażania definicji w tekście, zbudowany o szablon {{s|Ambox}} (ten pierwszy), a ten drugi o ramki {{Tag|div}}, z nagłówkiem '''Definicja'''. * {{s|Porada}} - szablon wyrażający poradę, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Porada'''. * {{s|Uwaga}} - szablon wyrażający uwagę, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Uwaga'''. * {{s|Ćwiczenie}} - szablon wyrażający coś do przećwiczenia, zbudowany o szablon {{s|Ambox}}, z nagłówkiem '''Ćwiczenie'''. ===== Szablony z podanym nagłówkiem do przedstawiania pewnych informacji ===== * {{s|Ważne informacje}} - zawiera ważne informacje do zapamiętania, zbudowany o tabelki, z podanym nagłówkiem jako parametr szablonu. ===== Ramki wyświetlające kilka elementów w zawartości w ramce ===== * {{s|Ramka}} - szablon zbierający kilka elementów (obiektów) Wiki w jednej ramce. ===== Szablony informacji zbudowane o inne tego typu budulcowe szablony ===== * {{s|System}} - szablon zbudowany o szablon {{s|Uwaga}} pisany do różnych podręczników, odnoszący się do konkretnego systemu operacyjnego i w jakich jego wersjach zawarte informacje w artykule mogą tam nie działać. * {{s|Wymaga znajomości}} - szablon zbudowany o szablon komunikatów {{s|Mbox-strona}} pisanych do różnych podręczników, informujących, że treść tej książki wymaga znajomości poznania informacji z innych podręczników. ==== Szablony użytkowników ==== * {{s|Babel}} i {{s|Multiuserbox}} - szablony wstawiane na stronę użytkownika przedstawiające jego preferencje, ten pierwszy wyświetlający pudełko w jednej kolumnie po prawej stronie ekranu, a ten drugi w postaci przełamywanego bloku. ** {{s|Staż}} - szablon staży mówiący od kiedy jest się na projekcie. * {{s|Userbox}} i {{s|Userbox small}} - szablon preferencji służy do tworzenia userboksów, dołączanych w wikitabeli, w prawdziwej ramce lub na ekranie strony wikipedysty. Ten drugi w formie miniaturki. * {{s|User spec}} - meta-szablon pozwala na tworzenie {{lr|Userboksy|userboksów|klucz projektu=w}} dla {{lr|Wieża Specjalności|specjalności|klucz projektu=w}}. * {{s|Userlang}} i {{s|User language}} - ten pierwszy szablon jest używany przez ten drugi. Są to szablony preferencji językowych. * {{s|Ping}} - szablon pingowania do jednego lub do wielu użytkowników informująca, że jest nadesłana wiadomość. == Przypisy i bibliografia == === Szablony przypisów bibliograficznych i rzeczowych === * {{s|Przypisy}} - szablon przypisów bibliograficznych, i {{s|Uwagi}} - przypisów rzeczowych. * {{s|r}} - szablony: punktu z nazwą odnoszą się do przypisów użytych w {{s|Przypisy}}, a {{s|u}} - odnosi się do uwag zadeklarowanych przez szablon {{s|Uwagi}}. * {{s|RNota}} (jego skrót: {{s|RN}}) - szablony: zawartości referencji wyświetlane w: {{s|Przypisy}}, a {{s|UNota}} (jego skrót: {{s|UN}}) - zawartości uwag wyświetlane w: {{s|Uwagi}}. * {{s|Ref}} - szablon gotowych do użycia, w szablonie {{s|Przypisy}} i {{s|Uwagi}}, do stworzenia tam własnych przypisów, do którego odnoszą się po nazwach w tekście szablonu {{s|r}} i {{s|u}}, lub do użycia w tekście, zamiast znacznika {{Tag|ref}}. * {{s|Refn}} - szablon służy do {{lpp|Przypisy|tworzenia przypisów w Wikibooks}} i jest alternatywą (i uzupełnieniem) dla standardowego tagu {{Code|<nowiki><ref></nowiki>}}. * {{s|Przypisy-lista}} - szablon stworzony do tworzenia przypisów list, podobnie jak szablony: {{s|Przypisy}} i {{s|Uwagi}}, tylko z tą różnicą, że on dotyczy przypisów bibliograficznych, ale za to wyświetlającą swoją generowaną zawartość, w podanej liczbie kolumn dzielącej jego treść, w kolumnach. * {{s|Odn}} - szablon pozwala na generowanie skróconych {{lpg|przypisy harwardzkie|przypisów harwardzkich (oksfordzkich)}} do pozycji pojawiających się w bibliografii artykułu. Poniższe podszablony przyjmują te same parametry, co on: ** {{s|Odn/id}} - generuje identyfikator tworzonego przezeń przypisu. ** {{s|Odn/tekst}} - generuje tekst tworzonego przezeń przypisu. * {{s|Przypiswiki}} - szablon umieszczany wewnątrz szablonu {{s|Ref}} lub znaczników {{Tag|ref}}, czyli w ten sposób tworzymy referencję do przypisu. === Bibliografia === * {{s|Source}} - szablon do generowania bibliografii. == Szablony opływania elementów pływających, tzn. znajdujące się po lewej lub prawej części strony lub pudełka == * {{s|BrClear}} lub {{s|-}} albo też {{s|Koniec grafiki}} (te dwa ostatnie przekierowania do pierwszego) - szablon nowej linii opływania elementów. * {{s|SpanClear}} - szablon opływania wstawiany do wnętrza tekstu. * {{s|HrClear}} - szablon poziomej kreski opływania elementów z pewnym marginesem górnym. * {{s|DivClear}} - szablon służy do rozpychania rodzica przez dziecko. == Szablony powitania == * {{s|Witaj}} i {{s|Witam}} (przekierowanie do tego ostatniego) - dla użytkowników nieanonimowych - (po polsku) a {{s|Welcome}} (po angielsku). * {{s|Anonim}} - dla użytkowników anonimowych, czyli ogólnie mówiąc IP'ów. == Szablony kodów języka == * {{s|Lang}} i {{s|Język}} (przekierowanie do tego pierwszego) - szablony kodów do języka, zamieniający kod w coś innego, dotyczące języka. * {{s|Lang2}} - szablon służy do oznaczania języka, w jakim są napisane strony, na które wskazuje link zewnętrzny. * {{s|Lang3}} - szablon ustawia język i jednocześnie jego klasą CSS, tekstu, kierunek i inny tekst po jego prawej stronie. == Szablony wykorzystujące strony specjalne w przestrzeni nazw {{Np|Special|link=tak}} == * {{s|Zmiany w linkujących}} - szablon umieszcza zmiany w linkujących w ramce html-owej strony z ewentualnie podaną przestrzenią nazw, która domyślnie przyjmuje wartość {{Np|Category|link=tak}}. == Szablony ramkowe wykorzystujące mechanizmy MediaWiki i HTML == === Szablony blokowe === Szablony bloków, otwierający i zamykający: * {{s|Blok tabelowy}} i {{s|Blok tabelowy/Zamknij}} - zbudowanego za pomocą ramki wikikodu zbudowanej za pomocą tebelek mechanizmu MediaWiki. * {{s|Blok ramkowy}} i {{s|Blok ramkowy/Zamknij}} - zbudowanego za pomocą tabeli wikikodu oparty o warstwy (znaczniki) {{Tag|div}}. === Inne szablony pudełkowe === * Pudełka ** {{s|Pudełko ramkowe}}, {{s|Pudełko ramkowe 1}}, {{s|Pudełko ramkowe 2}}, {{s|Pudełko ramkowe 3}}, {{s|Pudełko ramkowe 4}} i {{s|Pudełko ramkowe 5}} - szablon tworzy div-ramki htmlowe. ** {{s|Pudełko komórkowe}}, {{s|Pudełko komórkowe 1}}, {{s|Pudełko komórkowe 2}}, {{s|Pudełko komórkowe 3}}, {{s|Pudełko komórkowe 4}} i {{s|Pudełko komórkowe 5}} - szablon tworzy table-ramki htmlowe. * Sekcje ** {{s|Sekcja ramkowa}} - szablony do budowy sekcji na podstawie ramek {{Tag|div}}. ** {{s|Sekcja komórkowa}} - szablon do budowy sekcji w tabeli. == Szablony kierunku == * {{s|Ltr}} - szablon kierunku tekstu od lewej do prawej, a {{s|Rtl}} - od prawej do lewej. == Szablony znaczników HTML == * {{s|Znacznik start}}, {{s|Znacznik koniec}} i {{s|Znacznik}} - ogólne znaczniki kombajny, otwierający, zamykający i zupełny. * {{s|Div start}}, {{s|Div koniec}} i {{S|Div}} - znacznik otwierający, zamykający i zupełny znacznika {{Tag|div}}. * Znaczniki ogólne znacznika {{Tag|pre}} elementu preformatowanego znacznika HTML: {{s|Pre}}, {{s|PreBody}}, {{s|PreBody2}}, {{s|PreLine}}, {{s|PreLineBody}}, {{s|Pre start}} i {{s|Pre koniec}} - szablony z '''Body''' tekst wyświetlane jest bez ramki, a z '''Line''' tekst z wielokrotnymi spacjami tam spacje są skracane do jednej, z '''start''' i '''koniec''', to jest szablon otwierający i zamykający tego znacznika. * {{s|Code}}, {{s|Kbd}}, {{s|Tt}}, {{s|Sub}}, {{s|Sup}}, {{s|Su}}, {{s|P}}, {{s|Span}}, {{s|Bdo}}, {{s|Small}}, {{s|Big}}, {{s|Strong}}, {{s|Br}} i {{s|Hr}} - proste szablony znaczników sformułowane o znacznik ogólny kombajn. ** {{s|Font}} - bardziej skomplikowany szablon znaczników zastępujący znacznik {{Tag|font}}. ** {{s|Center}} - szablon center, którego funkcjonalnym odpowiednikiem jest znacznik {{Tag|center}}, z wieloma zaawansowanymi funkcjami. * {{s|Indeksuj}}, {{s|Kotwica}} i {{s|Id}} - szablony do indeksowania poszczególnych elementów strony. * {{s|OverflowWiersz}} - szablon potrzebny do tworzenia elementów z paskiem przewijania wierszowym, jeżeli zawartość, tego szablonu, w poziomie jest większa niż sam on. == Szablony tekstu specjalne == * {{s|Nobold}} - wyświetla tekst, lub ciąg znaków za pomocą normalnej czcionki w miejscu, gdzie czcionka jest automatycznie pogrubiana, np. nagłówki kolumn w tabelach itp. * {{s|Nowiki}} - szablony do wyświetlania szczególnie znaków zapisanych w postaci kodów HTML, aby one były wyświetlane w postaci tekstu, a nie jako znak. == Szablony do wyświetlania zawartości szablonu == === Szablony wyświetlające zawartość inkludowaną szablonu === * {{s|Wikikod}} - szablon służy do wyświetlania wikikodu podanych szablonów lub innych stron, przy czym wywołania szablonowe są zastępowane wywołaniem szablonu {{s|S}}, a wywołania modułowe szablonem {{s|M}}, a wywołania parsera są wyświetlane, jak normalny tekst. === Inne szablony specjalne oparte o znacznik {{Tag|pre}} === * {{s|PreWikikod}} - szablon służy do wyświetlania wikikodu podanych szablonów lub innych stron, przy czym wywołania szablonowe są zastępowane wywołaniem szablonu {{s|S}}, a wywołania modułowe szablonem {{s|M}}. Wikikod jest umieszczany w ramce znacznika {{Tag|pre}}. Ale wiele spacji nie są skracane do jednej, chyba, że użyjemy: {{Parametr|styl|white-space:pre-line}}. * {{s|PreLineWikikod}} - co poprzedni, ale w nim wiele spacji są skracane do jednej, bo w tym szablonie jest ukryty, który nie jawnie użyliśmy: {{Parametr|styl|white-space:pre-line}}, w funkcji {{s|PreLine}}. === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === * {{s|ŹródłoWikikod}} - szablon do wyświetlania wikikodu szablonów i innych stron z podświetlaniem jego składni. === Szablony wyświetlające szablony w postaci surowej (przetworzonej) === * {{s|LuaSurowySzablonRozwiń}} - szablon wyświetlający opcjonalnie z opakowaniem znacznika {{Tag|div}} przy pomocy {{s|Div}}, ewentualnie z atrybutami, z możliwością wyświetlania kategorii na stronę lub w postaci opakowanej, ma możliwość wyświetlania czystego wikikodu, lub jego zamienienia na zwykły tekst, który może być opakowany znacznikiem {{Tag|pre}} za pomocą szablonu {{s|Pre}}, to wszystko można zapewnić używając szablonu tego z pewnymi parametrami. == Szablony do wyświetlania tekstu z kodami HTML == * {{s|PreNowiki}} - szablon przyjmuje jeden parametr będący wikikodem do rozwinięcia opatrując go pomiędzy znacznikami {{Mniejszy}}nowiki{{Większy}}...{{Mniejszy}}/nowiki{{Większy}}. W danym polu parametru przy pierwszym znaku {{=}} stawiamy zamiast tego znaku wywołanie szablonowe {{s|{{=}}}}, by część poprzedzająca nie była traktowana jako parametr, a część następująca po nim jako wartość. Szablon wyświetla kody specjalne nie zamieniając je na odpowiednie znaki. Szablon wyświetla rozwinięty wikikod w postaci czystego tekstu otoczone ramką znacznika: {{Tag|pre}}. Ale wiele spacji nie są skracane do jednej, chyba, że użyjemy: {{Parametr|styl|white-space:pre-line}}. * {{s|PreLineNowiki}} - co poprzedni, ale w nim wiele spacji są skracane do jednej, bo w tym szablonie jest ukryty, który nie jawnie użyliśmy: {{Parametr|styl|white-space:pre-line}}, w funkcji {{s|PreLine}}. === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === * {{s|ŹródłoNowiki}} - szablon służy do podświetlania składni rozwijanych przez niego szablonów, czy stron, względem jego parametrów. == Szablony zamieniające pewne znaki na kod HTML == * {{s|KodHTMLZnaku}} - szablon zamieniający dowolny znak w jego kod HTML, lub w taki sposób, by się dało się wyświetlić ten kod na ekranie monitora. * {{s|KodyHTMLZnakówWikiCiągu}} - co poprzednio, tylko dla niektórych znaków, ale ten szablon nie dotyczy jednego podanego znaku, ale tekstu (wielu znaków po sobie następujących). == Szablony użyte w tekście do spowodowania jego łamliwości lub nie == * {{s|Wrap}} i {{s|W}} (przekierowanie) - szablony do łamania tekstu, gdzie po niełamliwej spacji następuje możliwe przełamanie, by zacząc dalszy niełamliwy tekst. * {{s|·wrap}} i {{s|·w}} (przekierowanie), {{s|•wrap}} i {{s|•w}} (przekierowanie), {{s|–wrap}} i {{s|–w}} (przekierowanie), {{s|!wrap}} i {{s|!w}} (przekierowanie) oraz {{s|\wrap}} i {{s|\w}} (przekierowanie) - proste szablony do łamania tekstu, gdzie znak przed '''wrap''' lub '''w''', w nazwie szablonu, wskazuje, jaki jest znak, po którym następuje opcjonalne przełamywanie tekstu, przed tym znakiem jest niełamliwa spacja. * {{s|·}}, {{s|Dot}} (przekierowanie) i {{s|Middot}} (przekierowanie), czy {{s|•}}, {{s|Bull}} (przekierowanie) i {{s|Bullet}} (przekierowanie), czy {{s|–}}, {{s|Ndash}} (przekierowanie}} i {{s|En dash}} (przekierowanie), czy {{s|—}}, {{s|Mdash}} (przekierowanie) i {{s|Em dash}} (przekierowanie) - szablony łamania tekstu, w którym znak wskazanym przez nazwę szablonu nieprzekierowania, działanie jest takie samo w ich przekierowaniach, w którym przed nim jest spacja niełamliwa, gdzie po tym znaku następuje opcjonalne przełamania tekstu. * {{s|Nowrap}}, {{s|Nowrap start}} i {{s|Nowrap koniec}} - szablony niełamliwości tekstu, pierwszy ten tekst wsadzamy ten tekst do wnętrza szablony, a drugi i trzeci, między tymi szablonami. * {{s|Nowraplinki}}, {{s|Nowraplinki start}} i {{s|Nowraplinki koniec}} - szablony niełamliwości linków w danym tekście, pierwszym tekst jest wsadzamy do wnętrza tego szablonu, a drugi i trzeci, między szablonami. == Szablon zastępujące pewne znaki == === Potrzebne typu do szablonów, linków, wikitabel i zmiennych === * {{s|!!}} i {{s|!}} (lub w postaci kodu HTML: {{s|Pipe}}) - szablony znaków kresek pionowych. * {{s|!(}} (otwierający) i {{s|)!}} (zamykający), {{s|!((}} (otwierający) i {{s|))!}} (zamykający) - szablony typu nawiasów kwadratowych, otwierający i zamykający. * {{s|(}} (otwierający) i {{s|)}} (zamykający), {{s|((}} (otwierający) i {{s|))}} (zamykający), {{s|(((}} (otwierający) i {{s|)))}} (zamykający) - szablony typu nawiasów klamrowych, otwierający i zamykający. * {{s|{{=}}}} - szablon zastępujący znak równości, przede wszystkim potrzebny do szablonu {{s|S}} (symbolizując kod szablonowy) i {{s|M}} (symbolizujący wywołanie ramki modułu). ** {{s|Dokumentacja szablonów zastępujących znaki}} - szablon dokumentacji szablonów zastępowania pewnych elementów szablonowych mających znaczenie w '''mechanizmie MediaWiki'''. ==== Szablony zastępujące znaki w postaci kodu HTML, potrzebne, by szablon nie uwzględniał je jako początek listy, lub do list, albo tabel ==== Przedstawimy tutaj szablony zastępujące znaki w postaci kodów HTML do wiki-tabel i wiki-list. ===== Szablony elementów wiki-tabel ===== * {{s|Pipe}} - szablon kreski pionowej, tzn.: {{Code|{{Pipe}}}}, wstawiany zamiast niego, by nie spowodować zainicjowanie nowego parametru, lub następnym elementem w nowym wierszu nie była normalna kreska pionowa tabeli, w postaci kodu HTML, zamiast zwykłego znaku: {{Code|{{Pipe}}}}, w postaci: {{Code|{{Nowiki|{{Pipe}}}}}}. ===== Szablony elementów wiki-list ===== * {{s|Śr}} - szablon średnika, tzn.: {{Code|{{Śr}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Śr}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Śr}}}}, w postaci kodu: {{Code|{{Nowiki|{{Śr}}}}}}. * {{s|Sp}} - szablon hash'a (splash'a), tzn.: {{Code|{{Sp}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Sp}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego: {{Code|{{Sp}}}}, w postaci kodu: {{Code|{{Nowiki|{{Sp}}}}}}. * {{s|Gw}} - szablon gwiazdki, tzn.: {{Code|{{Gw}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Gw}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Gw}}}}, w postaci kodu: {{Code|{{Nowiki|{{Gw}}}}}}. * {{s|Dk}} - szablon dwukropka, tzn.: {{Code|{{Dk}}}}, wstawiany w tekstach, gdy pierwszy elementem linii w danym szablonie jest: {{Code|{{Dk}}}}, symbolizującej listę, w postaci kodu HTML, zamiast zwykłego tekstu: {{Code|{{Dk}}}}, w postaci kodu: {{Code|{{Nowiki|{{Dk}}}}}}. === Wykorzystywane do innych znaków === * {{s|Mniejszy}} (otwierający) i {{s|Większy}} (zamykający) - potrzebne do znaczników (wykorzystywane w znaczniku: {{Tag|pre}}), przede wszystkich, aby wyłączyć dla nich obsługę mechanizmu MediaWiki, i aby były traktowane jako tylko elementy HTML, dla innych znaczników, które są tylko obsługiwane przez mechanizm MediaWiki, i nie mają żadnego znaczenia w HTML, to wyłączamy jego działanie, które można znów włączyć za pomocą funkcji w pewnym module (wskazanym przez pokazanie symboliczne): {{m|Ramka|Rozwiń}}), a także: {{s|Kropka}} i {{s|Kula}} - potrzebne do szablonów łamania tekstu oraz {{s|Pauza}} i {{s|Półpauza}} - szablony zastępujące inne znaki niekwadratowe i nieklamrowe, te ostatnie cztery szablony tak wyświetlają swoją rozwiniętą zawartość, jak wskazuje na to nazwa tych szablonów. === Szablon usuwające nadmiarowe odstępy === * {{s|PrzytnijTekst}} i jego przekierowanie {{s|Trim}} - szablony usuwające białe znaki z lewej i prawej części podanego parametru. * {{s|Odstępy}} - szablon usuwające białe znaki i dolne myślniki z lewej i prawej części podanego parametru oraz wewnątrz tekstu zamieniające je na spację lub dolny myślnik. == Szablony tworzące tabele przy pomocy mechanizmu MediaWiki == * {{s|Tabelka}}, {{s|Tytuł}}, {{s|Wiersz}} i {{s|Komórka}} - szablony tworzące kolejno: wiki-tabelę, jego tytuł, a także dzielące element pierwszy na wiersze, a je na kolumny. Umożliwiający pisanie je w jednej linijce za pomocą komentarzy, mimo że kod wynikowy tych nie musi być taki. ** {{s|Dunno}} - szablon potrzebny do budowy tabelki, wyświetlający białe tło z zapytajnikiem, ** {{s|No}} - szablon ten wykorzystuje się w tabeli, aby otrzymać komórkę z napisem "Nie" na czerwonym tle. * {{s|Tabela}} i {{s|GridTabela}} - szablony tworzące kolejno: wiki-tabelę i grid-tabelę, w postaci wysokopoziomowej otoczki, tworzący niskopoziomową tabelę, ale w różny sposób, w pierwszym za pomocą zwykłych tabel, a w drugim dzięki znacznikom: {{Tag|div}}, na podstawie siatek '''grid''', mechanizmu MediaWiki, dzięki temu obsługą takich ich jest prosta. Zwracają uwagę, czy jakieś parametry nie zostały podane, czy są prawidłowe. == Szablony nagłówka == Szablony nagłówka używane w artykułach, nawet jego pierwszego. === Typowe szablony na górze strony podręcznika === * {{s|Nagłówek}} - szablon nagłówka i z ewentualnie ustawioną za pomocą JavaScriptu'u stopką. * {{s|Podręcznik}} - szablon menu na samym górze podręcznika w definicji zawierający szablon {{s|Nagłówek}}. Szablon posiada ustawienia zawierającą ustawienia tego ostatniego tego szablonu, która jest na stronie zapisaną ogólnie: '''{{Ns:Template}}:Podręcznik/Ustawienia/{{s|PEŁNANAZWAKSIĄŻKI}}/config'''. * {{s|Rozdział}} - szablon określający wyglądem dużym, że ta strona, ale ten typowy rozdział, to rozdział, a nie podrozdział. * {{s|Podrozdział}} - szablon określający wyglądem małym, że ta strona, ale ten typowy rozdział, to podrozdział, a nie rozdział. === Inne szablony tego typu === Inne szablony używane rzadziej niż poprzednie. ==== Szablony pierwszego nagłówka strony ==== * {{s|Małą literą}} - szablon zamienia dużą literę, nazwy strony, na małą w pierwszym nagłówku. * {{s|Szablon nie opis}} - szablon wyświetlający nazwę szablonu, nie opisu, lub nazwę szablonu, którego dotyczy opis. ==== Szablony niepierwszego nagłówka strony ==== * {{s|MDL:RozszerzonyLink}} - szablon oznaczony grafiką określającą artykuły (rozdziały) do wyróżnionych, np. zawierający poziom wyższy niż standardowy w szkole lub na uczelni. * {{s|Pełny rozdział}} - szablon wyświetlający strony zbiorcze danego rozdziału podręcznika. ==== Szablony nagłówka linków ==== * {{s|DG}} - szablon linku do górnej części, w stronę pierwszego nagłówka. ==== Szablony nagłówka, kolekcji i do druku, danej książki ==== * {{s|Zapisane książki}} - szablon w nagłówku strony na stronie zbiorczej linków do artykułów danej kolekcji artykułów danego podręcznika, by potem można było przygotować jego wersję PDF. * {{s|Drukowanie porada}} - szablon w nagłówku strony na stronie zbiorczej wszystkich artykułów, informujący, że aktualna strona jest do druku. ==== Szablony stron archiwalnych ==== * {{s|Archiwum}} - szablon określający, że dana strona jest archiwalna, by jej nie edytować. * {{s|SDU}} - szablon ogólny, archiwum {{lr|Poczekalnia|poczekalni}}, na podstawie której jest definiowany szablon {{s|SDU/Archiwum}}, umieszczony, w nagłówku, w tym archiwach. ==== Szablony identyfikatora pierwszego nagłówka ==== * {{s|Skrót}} - określa skrót strony, nie szablony, zwykle stron projektu i pomocy. * {{s|Skrót szablonu}} - określa skrót szablonu, w przestrzeni nazw {{Np|Template|link=tak}}. == Szablony tematyczne == Szablony tutaj są przedstawione z jakiś dziedzin nauki (nie infoboksy). === Szablony chemiczne tekstu === * {{s|Chem}} - szablon służy uproszczeniu zapisywania wzorów chemicznych. * {{s|Chem2}} - szablon służy do zapisywania wzorów i prostych reakcji chemicznych. * {{s|Wzory sumaryczne}} i jego szablon pomocniczy {{s|Wzory sumaryczne/sort}} - szablon umieszczany w przekierowaniach i stronach, których tytuły są wzorami sumarycznymi. === Szablony chemiczne pudełkowe === * {{s|Chem:ciek}} - szablon z podanymi w parametrach szablonu z ciekawostkami chemicznymi. * {{s|Chem:dośw}} - szablon z podanymi w parametrach szablonu z opisami doświadczeń. === Szablony matematyczne pudełkowe === * {{s|Mat:Ciek}} - szablony ciekawostek matematycznych, z nagłówkiem: '''Czy wiesz, że...'''. * {{s|Mat:Tw}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Twierdzenie'''. * {{s|Mat:Def}} - szablony definicji matematycznych, z nagłówkiem: '''Definicja'''. * {{s|Mat:Prz}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Przykład'''. * {{s|Mat:Uwg}} - szablony twierdzeń matematycznych, z nagłówkiem: '''Uwaga'''. === Szablony fizyczne-matematyczne pudełkowe === * {{s|DefinicjaHasło}} - szablon podająca definicję danego hasła. * {{s|PrawoHasło}} - szablon podający prawo danego hasła. * {{s|PrzykładTemat}} - szablon przedstawiający przykład dla danego tematu. * {{s|MateriałTemat}} - szablon przedstawiające jaki materiał uczeń powinien znać, by opanować materiał w danym artykule. * {{s|ZadanieTemat}} - szablon podający pojedyncze zadanie wraz z pytaniem z rozwiązaniem, także z odpowiedzią. === Szablony ekonomiczne === * {{s|Konto otwórz}}, {{s|Konto zapis}} i {{s|Konto zamknij}} - szablony tworzone za pomocą wiki-tabelek, obrazują, ile ma się na koncie, a ile jest się winny. Szablony tworzą jedno pudełko z przepisaną klasą {{Code|konto}}, które można grupować w większą tabelę z przepisaną klasą {{Code|konta}}. === Szablony informacyjne === * {{s|Naukowiec}} - szablon przedstawiający informacje o jakimś naukowcach. {{BrClear}} <noinclude>{{UnikatowaStronaKoniec}}{{Kategoria|Tekstowe opisy techniczne szablonów}}</noinclude> sh7f9tybwx7u897n620bh14rj5mteh0 Wikibooks:Szablony/Zawartość 4 60352 559488 559161 2026-10-17T04:47:23Z Persino 2851 /* Szablony skonstruowane przy pomocy kodu w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} */ 559488 wikitext text/x-wiki <noinclude>{{Autonawigacja|Pomoc:Spis treści}}</noinclude> == Szablony tekstu specjalne == {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|Unicode|Oto jest tekst napisany w standardzie Unicode}}}} | _1 = {{Unicode|Oto jest tekst napisany w standardzie Unicode}} | 2 = {{Tt| {{Śr}} Nagłówek pogrubiony, a w nim tekst{{s|Dk}} {{s|Nobold|wpisany tekst}}, niepogrubiony. }} | _2 = ; Nagłówek pogrubiony, a w nim tekst{{Dk}} {{Nobold|wpisany tekst}}, niepogrubiony. | 3 = {{Tt|{{s|Nowiki|{{s|Id|test|div|zawartość}}}}}} | _3 = {{Nowiki|{{Id|test|div|zawartość}}}} | 4 = {{Tt|{{s|Nowiki|{{Nowiki|Oto jest tekst ze znakami HTML: &nbsp;&amp;&#32;px.}}}}}} * Różnica ze znacznikiem mechanizmu {{NS|k=mw|l=tak}}, tzn. {{Tag|nowiki}}, jest taka, że ten nie wyświetla kodów w postaci kodów, tylko w wersji rozwiniętej. ; Przykład * {{Tag|nowiki|zawartość={{Nowiki|Oto jest tekst ze znakami HTML: &nbsp;&amp;&#32;px.}}}} ; Wynik * <nowiki>Oto jest tekst ze znakami HTML: &nbsp;&amp;&#32;px.</nowiki> | _4 = {{Nowiki|Oto jest tekst ze znakami HTML: &nbsp;&amp;&#32;px.}} }} == Szablony do wyświetlania zawartości szablonu == === Szablony wyświetlające zawartość inkludowaną szablonu === {{EfektKodów | 1 = {{Tt|{{s|Wikikod|BrClear}}}} | _1 = {{Wikikod|BrClear}} }} === Inne szablony specjalne oparte o znacznik {{Tag|pre}} === {{EfektKodów | 1 = {{Tt|{{s|PreWikikod|BrClear}}}} * Szablon nie skraca wielokrotne odstępy. | _1 = {{PreWikikod|BrClear}} | 2 = {{Tt|{{s|PreLineWikikod|BrClear}}}} * Szablon skraca wielokrotne odstępy do jednego. | _2 = {{PreLineWikikod|BrClear}} }} === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === {{EfektKodów | 1 = {{Tt|{{s|ŹródłoWikikod|BrClear}}}} | _1 = {{ŹródłoWikikod|BrClear}} }} == Techniczna zawartość szablonu == {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|LuaSurowySzablonRozwiń|strona{{=}}Szablon:Uprawa - roślina infobox}}}} | _1 = {{LuaSurowySzablonRozwiń|strona=Szablon:Uprawa - roślina infobox|bez dodatkowych sprawdzeń=tak}} }} == Szablony do wyświetlania tekstu z kodami HTML == === Podstawowe szablony === {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|PreNowiki|{{s|Czyim|nazwa przestrzeni nazw{{=}}(main)|typ jednostki{{=}}artykuł|nazwa jednostki{{=}}Strona/Podstrona}}}}}} * Szablon nie skraca wielokrotne odstępy. | _1 = {{PreNowiki|{{Czyim|nazwa przestrzeni nazw=(main)|typ jednostki=artykuł|nazwa jednostki=Strona/Podstrona}}}} | 2 = {{Tt|{{s|PreLineNowiki|{{s|Czyim|nazwa przestrzeni nazw{{=}}(main)|typ jednostki{{=}}artykuł|nazwa jednostki{{=}}Strona/Podstrona}}}}}} * Szablon skraca wielokrotne odstępy do jednego. | _2 = {{PreLineNowiki|{{Czyim|nazwa przestrzeni nazw=(main)|typ jednostki=artykuł|nazwa jednostki=Strona/Podstrona}}}} }} === Inne szablony z podświetlaniem składni oparte o znacznik {{Tag|syntaxhighlight}} do wyświetlania zawartości szablonu === {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|ŹródłoNowiki|Przestrzeń{{=}}Template|Nazw{{=}}S|M|parametr1{{((}}{{=}}{{))}}wartosc1|parametr2{{((}}{{=}}{{))}}wartosc2|parametr3{{((}}{{=}}{{))}}wartosc3}}}} | _1 = {{ŹródłoNowiki|Przestrzeń=Template|Nazwa=S|M|parametr1{{=}}wartosc1|parametr2{{=}}wartosc2|parametr3{{=}}wartosc3}} }} == Szablony zamieniające pewne znaki na kod HTML == {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|KodHTMLZnaku|k}} → {{s|Nowiki|{{s|KodHTMLZnaku|k}}}}}} | _1 = {{KodHTMLZnaku|k}} → {{Nowiki|{{KodHTMLZnaku|k}}}} | 2 = {{Tt|{{s|KodHTMLZnaku|k|tak}} → {{s|Nowiki|{{s|KodHTMLZnaku|k|tak}}}}}} | _2 = {{KodHTMLZnaku|k|tak}} → {{Nowiki|{{KodHTMLZnaku|k|tak}}}} | 3 = {{Tt|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}} → {{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s}}}}}} | _3 = {{KodyHTMLZnakówWikiCiągu|k{{((}}s}} → {{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s}}}} | 4 = {{Tt|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}} → {{s|Nowiki|{{s|KodyHTMLZnakówWikiCiągu|k{{s|((}}s|tak}}}}}} | _4 = {{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}} → {{Nowiki|{{KodyHTMLZnakówWikiCiągu|k{{((}}s|tak}}}} }} == Szablony użyte w tekście do spowodowania jego łamliwości lub nie == === Szablony łamliwości === {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|Span|Oto jest tekst{{s|Wrap}}. Oto jest tekst za.}}}} * Przekierowaniem do niego jest szablon {{s|W}}. | _1 = * ''' Wynik: ''' {{Span|Oto jest tekst{{Wrap}}. Oto jest tekst za.}} * ''' Kod HTML: ''' {{Nowiki|{{Span|Oto jest tekst{{Wrap}}. Oto jest tekst za.}}}} | 2 = {{Tt|{{s|Span|Oto jest tekst{{s|·wrap}}. Oto jest tekst za.}}}} * Przekierowaniem do niego jest szablon {{s|·w}}. | _2 = * ''' Wynik: ''' {{Span|Oto jest tekst{{·wrap}}. Oto jest tekst za.}} * ''' Kod HTML: ''' {{Nowiki|{{Span|Oto jest tekst{{·wrap}}. Oto jest tekst za.}}}} | 3 = {{Tt|{{s|Span|Oto jest tekst{{s|•wrap}}. Oto jest tekst za.}}}} * Przekierowaniem do niego jest szablon {{s|•w}}. | _3 = * ''' Wynik: ''' {{Span|Oto jest tekst{{•wrap}}. Oto jest tekst za.}} * ''' Kod HTML: ''' {{Nowiki|{{Span|Oto jest tekst{{•wrap}}. Oto jest tekst za.}}}} | 4 = {{Tt|{{s|Span|Oto jest tekst{{s|–wrap}}. Oto jest tekst za.}}}} * Przekierowaniem do niego jest szablon {{s|–w}}. | _4 = * ''' Wynik: ''' {{Span|Oto jest tekst{{–wrap}}. Oto jest tekst za.}} * ''' Kod HTML: ''' {{Nowiki|{{Span|Oto jest tekst{{–wrap}}. Oto jest tekst za.}}}} | 5 = {{Tt|{{s|Span|Oto jest tekst{{s|!wrap}}. Oto jest tekst za.}}}} * Przekierowaniem do niego jest szablon {{s|!w}}. | _5 = * ''' Wynik: ''' {{Span|Oto jest tekst{{!wrap}}. Oto jest tekst za.}} * ''' Kod HTML: ''' {{Nowiki|{{Span|Oto jest tekst{{!wrap}}. Oto jest tekst za.}}}} | 6 = {{Tt|{{s|Span|Oto jest tekst{{s|\wrap}}. Oto jest tekst za.}}}} * Przekierowaniem do niego jest szablon {{s|\w}}. | _6 = * ''' Wynik: ''' {{Span|Oto jest tekst{{\wrap}}. Oto jest tekst za.}} * ''' Kod HTML: ''' {{Nowiki|{{Span|Oto jest tekst{{\wrap}}. Oto jest tekst za.}}}} }} === Szablony niełamliwości === {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|Nowrap| 1 {{=}} 2 + 2 {{((}}{{=}}{{))}} 4}}}} | _1 = * '''Wynik:''' {{Nowrap| 1 = 2 + 2 = 4}} * '''Kod HTML:''' {{Nowiki|{{Nowrap|1=2 + 2 = 4}}}} | 2 = {{Pre|{{s|Nowrap start}} [[Chlorek sodu|Sól]] i{{s|Wrap}} [[Pieprz]] i{{s|Wrap}} [[Curry]] i{{s|Wrap}} [[Szafran]].{{s|Wrap}} [[Chlorek sodu|Sól]] i{{s|Wrap}} [[Pieprz]] i{{s|Wrap}} [[Curry]] i{{s|Wrap}} [[Szafran]]. {{s|Nowrap koniec}}}} | _2 = {{Nowrap start}} [[Chlorek sodu|Sól]] i{{Wrap}} [[Pieprz]] i{{Wrap}} [[Curry]] i{{Wrap}} [[Szafran]].{{Wrap}} [[Chlorek sodu|Sól]] i{{Wrap}} [[Pieprz]] i{{Wrap}} [[Curry]] i{{Wrap}} [[Szafran]]. {{Nowrap koniec}} | 3 = {{Pre|{{s|Nowraplinki|<nowiki>[[Wikibooks:Różnice między Wikipedią i Wikibooks]], ten tekst jest przeływany, [[Wikibooks:Dlaczego warto rozpocząć współpracę]], [[Wikibooks:Dlaczego używać wolnych podręczników]], ten drugi tekst jest przeływany, [[Wikibooks:Czym jest Wikibooks]], [[Wikibooks:Prośby do administratorów interfejsu]], [[Wikibooks:Sprzątanie Wikibooks]].</nowiki>}}}} | _3 = {{Nowraplinki|[[Wikibooks:Różnice między Wikipedią i Wikibooks]], ten tekst jest przeływany, [[Wikibooks:Dlaczego warto rozpocząć współpracę]], [[Wikibooks:Dlaczego używać wolnych podręczników]], ten drugi tekst jest przeływany, [[Wikibooks:Czym jest Wikibooks]], [[Wikibooks:Prośby do administratorów interfejsu]], [[Wikibooks:Sprzątanie Wikibooks]].}} | 4 = {{Pre|{{s|Nowraplinki start}}<nowiki>[[Wikibooks:Różnice między Wikipedią i Wikibooks]], ten tekst jest przeływany, [[Wikibooks:Dlaczego warto rozpocząć współpracę]], [[Wikibooks:Dlaczego używać wolnych podręczników]], ten drugi tekst jest przeływany, [[Wikibooks:Czym jest Wikibooks]], [[Wikibooks:Prośby do administratorów interfejsu]], [[Wikibooks:Sprzątanie Wikibooks]].</nowiki>{{s|Nowraplinki koniec}}}} | _4 = {{Nowraplinki start}}[[Wikibooks:Różnice między Wikipedią i Wikibooks]], ten tekst jest przeływany, [[Wikibooks:Dlaczego warto rozpocząć współpracę]], [[Wikibooks:Dlaczego używać wolnych podręczników]], ten drugi tekst jest przeływany, [[Wikibooks:Czym jest Wikibooks]], [[Wikibooks:Prośby do administratorów interfejsu]], [[Wikibooks:Sprzątanie Wikibooks]].{{Nowraplinki koniec}} }} === Szablony niełamliwej spacji bezpośrednio po jakimś znaku i po nim bezpośrednio innego znaku, a po nim łamliwej spacji === {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|Oto jest tekst{{s|·}}A za nim inny.}} * Przekierowaniem do niego jest szablon {{s|Dot}} i {{s|Middot}}. | _1 = * ''' Wynik: ''' Oto jest tekst{{·}}A za nim inny. * ''' Kod HTML: ''' {{Nowiki|Oto jest tekst{{·}}A za nim inny.}} | 2 = {{Tt|Oto jest tekst{{s|•}}A za nim inny.}} * Przekierowaniem do niego jest szablon {{s|Bull}} i {{s|Bullet}}. | _2 = * ''' Wynik: ''' Oto jest tekst{{•}}A za nim inny. * ''' Kod HTML: ''' {{Nowiki|Oto jest tekst{{•}}A za nim inny.}} | 3 = {{Tt|Oto jest tekst{{s|–}}A za nim inny.}} * Przekierowaniem do niego jest szablon {{s|Ndash}} i {{s|En dash}}. | _3 = * ''' Wynik: ''' Oto jest tekst{{–}}A za nim inny. * ''' Kod HTML: ''' {{Nowiki|Oto jest tekst{{–}}A za nim inny.}} | 4 = {{Tt|Oto jest tekst{{s|—}}A za nim inny.}} * Przekierowaniem do niego jest szablon {{s|Mdash}} i {{s|Em dash}}. | _4 = * ''' Wynik: ''' Oto jest tekst{{—}}A za nim inny. * ''' Kod HTML: ''' {{Nowiki|Oto jest tekst{{—}}A za nim inny.}} }} == Szablon zastępujące pewne znaki == === Potrzebne typu do szablonów, wiki-linków, wiki-tabel, wiki-list i zmiennych === ==== Szablony zastępujące znaki ==== {{EfektKodów | 1 = {{Tt|{{s|!}}}} | _1 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{!}}}}}} | 2 = {{Tt|{{s|!!}}}} | _2 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{!!}}}}}} | 3 = {{Tt|{{s|!(}}}} | _3 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{!(}}}}}} | 4 = {{Tt|{{s|)!}}}} | _4 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{)!}}}}}} | 5 = {{Tt|{{s|!((}}}} | _5 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{!((}}}}}} | 6 = {{Tt|{{s|))!}}}} | _6 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{))!}}}}}} | 7 = {{Tt|{{s|(}}}} | _7 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{(}}}}}} | 8 = {{Tt|{{s|)}}}} | _8 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{)}}}}}} | 9 = {{Tt|{{s|((}}}} | _9 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{((}}}}}} | 10 = {{Tt|{{s|))}}}} | _10 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{))}}}}}} | 11 = {{Tt|{{s|(((}}}} | _11 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{(((}}}}}} | 12 = {{Tt|{{s|)))}}}} | _12 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{)))}}}}}} | 13 = {{Tt|{{s|{{=}}}}}} | _13 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{=}}}}}} }} ==== Szablony zastępujące znaki w postaci kodu HTML ==== ===== Szablony wiki-tabel ===== {{EfektKodów | 1 = {{Tt|{{s|Pipe}}}} | _1 = * ''' Wynik: ''' {{Code|{{Pipe}}}} * ''' Kod HTML: ''' {{Tt|{{s|Nowiki|{{s|Pipe}}}}}} → {{Code|{{Nowiki|{{Pipe}}}}}} }} ===== Szablony wiki-list ===== {{EfektKodów | 1 = {{Tt|{{s|Śr}}}} | _1 = * ''' Wynik: ''' {{Code|{{Śr}}}} * ''' Kod HTML: ''' {{Tt|{{s|Nowiki|{{s|Śr}}}}}} → {{Code|{{Nowiki|{{Śr}}}}}} | 2 = {{Tt|{{s|Sp}}}} | _2 = * ''' Wynik: ''' {{Code|{{Sp}}}} * ''' Kod HTML: ''' {{Tt|{{s|Nowiki|{{s|Sp}}}}}} → {{Code|{{Nowiki|{{Sp}}}}}} | 3 = {{Tt|{{s|Gw}}}} | _3 = * ''' Wynik: ''' {{Code|{{Gw}}}} * ''' Kod HTML: ''' {{Tt|{{s|Nowiki|{{s|Gw}}}}}} → {{Code|{{Nowiki|{{Gw}}}}}} | 4 = {{Tt|{{s|Dk}}}} | _4 = * ''' Wynik: ''' {{Code|{{Dk}}}} * ''' Kod HTML: ''' {{Tt|{{s|Nowiki|{{s|Dk}}}}}} → {{Code|{{Nowiki|{{Dk}}}}}} }} === Wykorzystywane do innych znaków === {{EfektKodów | 1 = {{Tt|{{s|Mniejszy}}}} | _1 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{Mniejszy}}}}}} | 2 = {{Tt|{{s|Większy}}}} | _2 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{Większy}}}}}} | 3 = {{Tt|{{s|Kropka}}}} | _3 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{Kropka}}}}}} | 4 = {{Tt|{{s|Kula}}}} | _4 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{Kula}}}}}} | 5 = {{Tt|{{s|Pauza}}}} | _5 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{Pauza}}}}}} | 6 = {{Tt|{{s|Półpauza}}}} | _6 = {{Code|{{KodyHTMLZnakówWikiCiągu|{{Półpauza}}}}}} }} == Szablony tworzące tabele przy pomocy mechanizmu MediaWiki == === Szablony skonstruowane bez pomocy kodu w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|Tabelka|id{{=}}{{(((}}id{{)))}}|opcje{{=}}{{(((}}opcje{{)))}}|styl{{=}}{{(((}}styl{{)))}}|klasa{{=}}{{(((}}klasa{{)))}}|{{(((}}1{{)))}}}}}} | _1 = {{PreNowiki|{{Tabelka|id={{(((}}id{{)))}}|opcje={{(((}}opcje{{)))}}|styl={{(((}}styl{{)))}}|klasa={{(((}}klasa{{)))}}|{{(((}}1{{)))}}}}}} | 2 = {{Tt|{{s|Tytuł|id{{=}}{{(((}}id{{)))}}|opcje{{=}}{{(((}}opcje{{)))}}|styl{{=}}{{(((}}styl{{)))}}|klasa{{=}}{{(((}}klasa{{)))}}|{{(((}}1{{)))}}}}}} | _2 = {{PreNowiki|{{Tytuł|id={{(((}}id{{)))}}|opcje={{(((}}opcje{{)))}}|styl={{(((}}styl{{)))}}|klasa={{(((}}klasa{{)))}}|{{(((}}1{{)))}}|{{(((}}1{{)))}}}}}} | 3 = {{Tt|{{s|Wiersz|id{{=}}{{(((}}id{{)))}}|opcje{{=}}{{(((}}opcje{{)))}}|styl{{=}}{{(((}}styl{{)))}}|klasa{{=}}{{(((}}klasa{{)))}}|{{(((}}1{{)))}}}}}} | _3 = {{PreNowiki|{{Wiersz|id={{(((}}id{{)))}}|opcje={{(((}}opcje{{)))}}|styl={{(((}}styl{{)))}}|klasa={{(((}}klasa{{)))}}|{{(((}}1{{)))}}}}}} | 4 = {{Tt|{{s|Komórka|id{{=}}{{(((}}id{{)))}}|opcje{{=}}{{(((}}opcje{{)))}}|styl{{=}}{{(((}}styl{{)))}}|klasa{{=}}{{(((}}klasa{{)))}}|{{(((}}1{{)))}}}}}} | _4 = {{PreNowiki|{{Komórka|id={{(((}}id{{)))}}|opcje={{(((}}opcje{{)))}}|styl={{(((}}styl{{)))}}|klasa={{(((}}klasa{{)))}}|{{(((}}1{{)))}}}}}} }} ==== Szablony pomocnicze szablonów tabelek ==== {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|Tabelka|{{s|Wiersz|{{s|Komórka|{{s|Dunno}}}}}}}}}} | _1 = {{Tabelka|{{Wiersz|{{Komórka|{{Dunno}}}}}}}} | 2 = {{Tt|{{s|Tabelka|{{s|Wiersz|{{s|Komórka|{{s|No}}}}}}}}}} | _2 = {{Tabelka|{{Wiersz|{{Komórka|{{No}}}}}}}} }} === Szablony skonstruowane przy pomocy kodu w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === {{EfektKodów|kod-rozmiar=50% | 1 = {{Pre|{{s|Tabela|klasa{{=}}wikitable|liczba wierszy{{=}}3|liczba kolumn{{=}}3|tytuł{{=}}Tytuł tabeli | nagłówek 1 {{=}} nagłówek 1 | nagłówek 2 {{=}} nagłówek 2 | kolumny 2 {{=}} 2 | komórka 1_1 {{=}} komórka 1 1 | komórka 1_2 {{=}} komórka 1 2 | komórka 1_3 {{=}} komórka 1 3 | wiersze 1_2 {{=}} 2 | komórka 2_1 {{=}} komórka 2 1 | komórka 2_3 {{=}} komórka 2_3 | nagłówek 2_3 {{=}} tak | scal 3_1 {{=}} 1 2 | komórka 3_1 {{=}} komórka 3 1 | komórka 3_3 {{=}} komórka 3 3 | styl 3_1 {{=}} text-align:center }}}} | _1 = {{Tabela|klasa=wikitable|liczba wierszy=3|liczba kolumn=3|tytuł=Tytuł tabeli | nagłówek 1 = nagłówek 1 | nagłówek 2 = nagłówek 2 | kolumny 2 = 2 | komórka 1_1 = komórka 1 1 | komórka 1_2 = komórka 1 2 | komórka 1_3 = komórka 1 3 | wiersze 1_2 = 2 | komórka 2_1 = komórka 2 1 | komórka 2_3 = komórka 2 3 | nagłówek 2_3 = tak | scal 3_1 = 1 2 | komórka 3_1 = {{Center|komórka 3 1}} | komórka 3_3 = komórka 3 3 |styl 3_1 = text-align:center }} | 2 = {{Pre|{{s|GridTabela|klasa{{=}}gridtable|liczba wierszy{{=}}3|liczba kolumn{{=}}3|tytuł{{=}}Tytuł tabeli | nagłówek 1 {{=}} nagłówek 1 | nagłówek 2 {{=}} nagłówek 2 | kolumny 2 {{=}} 2 | komórka 1_1 {{=}} komórka 1 1 | komórka 1_2 {{=}} komórka 1 2 | komórka 1_3 {{=}} komórka 1 3 | wiersze 1_2 {{=}} 2 | komórka 2_1 {{=}} komórka 2 1 | komórka 2_3 {{=}} komórka 2_3 | nagłówek 2_3 {{=}} tak | scal 3_1 {{=}} 1 2 | komórka 3_1 {{=}} komórka 3 1 | komórka 3_3 {{=}} komórka 3 3 | styl 3_1 {{=}} text-align:center }}}} | _2 = {{GridTabela|klasa=gridtable|liczba wierszy=3|liczba kolumn=3|tytuł=Tytuł tabeli | nagłówek 1 = nagłówek 1 | nagłówek 2 = nagłówek 2 | kolumny 2 = 2 | komórka 1_1 = komórka 1 1 | komórka 1_2 = komórka 1 2 | komórka 1_3 = komórka 1 3 | wiersze 1_2 = 2 | komórka 2_1 = komórka 2 1 | komórka 2_3 = komórka 2 3 | nagłówek 2_3 = tak | scal 3_1 = 1 2 | komórka 3_1 = {{Center|komórka 3 1}} | komórka 3_3 = komórka 3 3 |styl 3_1 = text-align:center }} }} == Szablony z zawartością == {{EfektKodów|kod-rozmiar=50% | 1 = {{Pre| {{s|Numerowanie w tabeli| class{{=}}"wikitable" ! lp. !! opis |- |#|| jeden |- |#|| dwa |- |#|| trzy }}}} | _1 = {{Numerowanie w tabeli| class{{=}}"wikitable" ! lp. !! opis |- |#|| jeden |- |#|| dwa |- |#|| trzy }} }} === Szablony opisujące coś === {{EfektKodów|kod-rozmiar=50% | w-opis_1 = 850px | 1 = {{Pre start}} {{s|EfektKodów | 1 {{=}} {{s|s|Dopracować|powód}} | _1 {{=}} {{s|OpakujKategorieZeSortowaniem|{{S|Dopracować|powód|typ jednostki{{=}}artykuł}}}} | 2 {{=}} {{s|s|Integruj z|cel{{=}}strona/podstrona}} * wstawiamy na stronę, do której należy dołączyć treść innej | _2 {{=}} {{s|OpakujKategorieZeSortowaniem|{{S|Integruj z|cel{{=}}strona/podstrona|typ jednostki{{=}}artykuł}}}} | 3 {{=}} {{s|s|Integruj do|cel{{=}}strona/podstrona}} * wstawiamy na stronę, którą należy zlikwidować a jej treść włączyć do innej | _3 {{=}} {{s|OpakujKategorieZeSortowaniem|{{S|Integruj do|cel{{=}}strona/podstrona|typ jednostki{{=}}artykuł}}}} | 4 {{=}} {{s|s|POV}} | _4 {{=}} {{s|POV}} | 5 {{=}} {{s|s|Fakt|Wątpliwa informacja}} | _5 {{=}} {{s|OpakujKategorieZeSortowaniem|{{S|Fakt|Wątpliwa informacja|typ jednostki{{=}}artykuł}}}} }} {{Pre koniec}} | w-spis_1 = 1000px | _1 = {{EfektKodów | 1 = {{s|Dopracować|powód}} | _1 = {{OpakujKategorieZeSortowaniem|{{Dopracować|powód|typ jednostki=artykuł}}}} | 2 = {{s|Integruj z|cel{{=}}strona/podstrona}} * wstawiamy na stronę, do której należy dołączyć treść innej | _2 = {{OpakujKategorieZeSortowaniem|{{Integruj z|cel=strona/podstrona|typ jednostki=artykuł}}}} | 3 = {{s|Integruj do|cel{{=}}strona/podstrona}} * wstawiamy na stronę, którą należy zlikwidować a jej treść włączyć do innej | _3 = {{OpakujKategorieZeSortowaniem|{{Integruj do|cel=strona/podstrona|typ jednostki=artykuł}}}} | 4 = {{s|POV}} | _4 = {{POV}} | 5 = {{s|Fakt|Wątpliwa informacja}} | _5 = {{OpakujKategorieZeSortowaniem|{{Fakt|Wątpliwa informacja|typ jednostki=artykuł}}}} }} | w-opis_2 = 1350px | 2 = {{Pre|{{s|OpisKsiążek | 1 {{=}} ModPlug Tracker | _1 {{=}} Podręcznik opisuje korzystanie z programu ModPlug Tracker - prostego narzędzia do tworzenia muzyki. | 2 {{=}} AutoIt | _2 {{=}} Podręcznik programowania w języku skryptowym AutoIt. | 3 {{=}} Pisanie OS | _3 {{=}} Podręcznik wprowadzający w pisanie systemów operacyjnych.{{!}} o3 {{=}} Pisanie systemów operacyjnych | 4 {{=}} Szablon:ListaKategorii | _4 {{=}} Szablon do wyświetlania listy kategorii, danej kategorii, jako pozycje. | 5 {{=}} Moduł:Mapa | _5 {{=}} Moduł do wyświetlania mapy w artykule. | 6 {{=}} Moduł:Mapa | _6 {{=}} Moduł do wyświetlania mapy w artykule. | o6 {{=}} Moduł Mapa | 7 {{=}} Szablon:Mapa | _7 {{=}} Szablon do wyświetlania nazwy mapy w artykule. | o7 {{=}} Szablon Mapa | 8 {{=}} Wikijunior:Polska | _8 {{=}} Podręcznik dla dzieci na temat Polski | 9 {{=}} Astronomiczne podstawy geografii/Okładka | _9 {{=}} Jest to skrypt z astronomicznych podstaw geografii, który daje przegląd wybranych zagadnień tej tematyki. }}}} | w-spis_2 = 860px | _2 = {{OpisKsiążek | 1 = ModPlug Tracker | _1 = Podręcznik opisuje korzystanie z programu ModPlug Tracker - prostego narzędzia do tworzenia muzyki. | 2 = AutoIt | _2 = Podręcznik programowania w języku skryptowym AutoIt. | 3 = Pisanie OS | _3 = Podręcznik wprowadzający w pisanie systemów operacyjnych.| o3 = Pisanie systemów operacyjnych | 4 = Szablon:ListaKategorii | _4 = Szablon do wyświetlania listy kategorii, danej kategorii, jako pozycje. | 5 = Moduł:Mapa | _5 = Moduł do wyświetlania mapy w artykule. | 6 = Moduł:Mapa | _6 = Moduł do wyświetlania mapy w artykule. | o6 = Moduł Mapa | 7 = Szablon:Mapa | _7 = Szablon do wyświetlania nazwy mapy w artykule. | o7 = Szablon Mapa | 8 = Wikijunior:Polska | _8 = Podręcznik dla dzieci na temat Polski | 9 = Astronomiczne podstawy geografii/Okładka | _9 = Jest to skrypt z astronomicznych podstaw geografii, który daje przegląd wybranych zagadnień tej tematyki. }} }} == Szablony okładek == {{EfektKodów|kod-rozmiar=50% | w-opis_1 = 600px | 1 = {{Pre|{{s|OkładkaKsiążki | tytuł {{=}} Welkom! | dokończenie {{=}} Witamy! | obraz {{=}} Royal Coat of Arms of the Netherlands.svg | rozmiar {{=}} 400px | opis {{=}} Godło {{l|w:Holandia|Królestwa Niderlandów}} | adnotacja {{=}} Witamy w podręczniku do nauki języka niderlandzkiego! | plik1 {{=}} Flag_of_the_Netherlands.svg | adnotacja1 {{=}} Flaga Holandii | plik2 {{=}} Flag_of_Belgium.svg | adnotacja2 {{=}} Flaga Belgii | plik3 {{=}} Royal Coat of Arms of the Netherlands.svg | adnotacja3 {{=}} Godło Holandii | plik4 {{=}} Great Coat of Arms of Belgium.svg | adnotacja4 {{=}} Godło Belgii }}}} | w-spis_1 = 700px | _1 = {{OpakujKategorieZeSortowaniem|{{OkładkaKsiążki | tytuł = Welkom! | dokończenie = Witamy! | obraz = Royal Coat of Arms of the Netherlands.svg | rozmiar = 400px | opis = Godło [[w:Holandia|Królestwa Niderlandów]] | adnotacja = Witamy w podręczniku do nauki języka niderlandzkiego! | plik1 = Flag_of_the_Netherlands.svg | adnotacja1 = Flaga Holandii | plik2 = Flag_of_Belgium.svg | adnotacja2 = Flaga Belgii | plik3 = Royal Coat of Arms of the Netherlands.svg | adnotacja3 = Godło Holandii | plik4 = Great Coat of Arms of Belgium.svg | adnotacja4 = Godło Belgii }}}} }} == Formatowanie ramek == {{EfektKodów|kod-rozmiar=50% | 1 = {{Tt|{{s|Pokaż|tytuł{{=}}Widoczny tytuł|zawartość{{=}}Tekst do ukrycia|css_tabela{{=}}width: 80%}}}} | _1 = {{Pokaż|tytuł=Widoczny tytuł|zawartość=Tekst do ukrycia|css_tabela=width: 80%}} | 2 = {{Pre|{{s|Tabela|klasa{{=}}wikitable|styl{{=}}width:300px|liczba wierszy{{=}}1|liczba kolumn{{=}}1 | komórka 1_1 {{=}} {{s|Show | Wytłuszczony nagłówek | Ukryte wytłuszczone wprowadzenie: Informacje te nie pokażą się do czasu przyciśnięcia "pokaż". Zostały domyślnie ukryte zwinięciem, także po przyciśnięciu "ukryj". }} }} }} | _2 = {{Tabela|klasa=wikitable|styl=width:300px|liczba wierszy=1|liczba kolumn=1 | komórka 1_1 = {{Show | Wytłuszczony nagłówek | Ukryte wytłuszczone wprowadzenie: Informacje te nie pokażą się do czasu przyciśnięcia "pokaż". Zostały domyślnie ukryte zwinięciem, także po przyciśnięciu "ukryj". }} }} | 3 = {{Pre|{{s|Tabela nawigacyjna | styl {{=}} width:500px;margin-left:auto;margin-right:auto; | funkcja {{=}} UkrytaWikitabelowaListaMenu | tytuł {{=}} Tytuł menu | spis {{=}} * Pozycja pierwsza * Pozycja druga * Pozycja trzecia }}}} | _3 = {{Tabela nawigacyjna | styl = width:500px;margin-left:auto;margin-right:auto; | funkcja = UkrytaWikitabelowaListaMenu | tytuł = Tytuł menu | spis = * Pozycja pierwsza * Pozycja druga * Pozycja trzecia }} | cała-szerokość-spis_4=tak | 4 = {{Pre|{{s|Ramka nawigacyjna | funkcja {{=}} UkryjZawartośćMenu | styl {{=}} position:relative;width:500px;margin-left:auto;margin-right:auto; | styl tytułu {{=}} border:solid 1px; | tytuł {{=}} Tytuł menu | styl spisu {{=}} border:solid 1px;text-align:left;margin:-1px 0;background-color:white; | styl spisu 2 {{=}} border:solid 1px;text-align:left;margin:-1px 0;background-color:white; | styl spisu 3 {{=}} border:solid 1px;text-align:left;margin:-1px 0 0;background-color:white; | funkcja spisu {{=}} NawigacyjnaZawartość | funkcja spisu 2 {{=}} NawigacyjnaZawartość | funkcja spisu 3 {{=}} NawigacyjnaZawartość | spis {{=}} * Pozycja pierwsza * Pozycja druga * Pozycja trzecia | spis 2 {{=}} * Pozycja pierwsza 2 * Pozycja druga 2 * Pozycja trzecia 2 | spis 3 {{=}} * Pozycja pierwsza 3 * Pozycja druga 3 * Pozycja trzecia 3 }}}} | _4 = {{Ramka nawigacyjna | funkcja = UkryjZawartośćMenu | styl = position:relative;width:500px;margin-left:auto;margin-right:auto; | styl tytułu = border:solid 1px; | tytuł = Tytuł menu | styl spisu = border:solid 1px;text-align:left;margin:-1px 0;background-color:white; | styl spisu 2 = border:solid 1px;text-align:left;margin:-1px 0;background-color:white; | styl spisu 3 = border:solid 1px;text-align:left;margin:-1px 0 0;background-color:white; | funkcja spisu = NawigacyjnaZawartość | funkcja spisu 2 = NawigacyjnaZawartość | funkcja spisu 3 = NawigacyjnaZawartość | spis = *Pozycja pierwsza *Pozycja druga *Pozycja trzecia | spis 2 = *Pozycja pierwsza 2 *Pozycja druga 2 *Pozycja trzecia 2 | spis 3 = *Pozycja pierwsza 3 *Pozycja druga 3 *Pozycja trzecia 3 }} | bez-overflow-spis_5=tak | 5 = {{Tt|{{s|Menu listy pozycji kategorii|tytuł{{=}}Menu listy kategorii szablonowych i szablonów|kategoria{{=}}Szablony}}}} | _5 = {{Menu listy pozycji kategorii|tytuł=Menu listy kategorii szablonowych i szablonów|kategoria=Szablony|styl=z-index:15}} | bez-overflow-spis_6=tak | 6 = {{Tt|{{s|Menu listy kategorii portali}}}} | _6 = {{Menu listy kategorii portali|styl=z-index:14}} | bez-overflow-spis_7=tak | 7 = {{Tt|{{s|Menu listy kategorii statusu}}}} | _7 = {{Menu listy kategorii statusu|styl=z-index:13}} | bez-overflow-spis_8=tak | 8 = {{Tt|{{s|Menu listy kategorii poziomu}}}} | _8 = {{Menu listy kategorii poziomu|styl=z-index:12}} | bez-overflow-spis_9=tak | 9 = {{Tt|{{s|Menu listy kategorii tematycznych}}}} | _9 = {{Menu listy kategorii tematycznych|styl=z-index:11}} | bez-overflow-spis_10=tak | 10 = {{Tt|{{s|Menu listy kategorii Światy dla dzieci}}}} | _10 = {{Menu listy kategorii Światy dla dzieci|styl=z-index:10}} }} {{BrClear}} <noinclude>{{Kategoria|Wizualne opisy techniczne szablonów}}</noinclude> nhpwwmrondiag2sq4tssoeiiab96lhk Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII 4 63922 559471 559441 2026-10-16T14:38:35Z Persino 2851 /* Znajdowanie pierwszego artykułu książki */ 559471 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła: <syntaxhighlight lang="lua"> ---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania: ---- lista_szablon, ---- odstepy_poczatku_rozdzialu, ---- przerwa_szablon, ---- obiekt_szablon, ---- kod_szablon, ---- dalszy_tekst; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; ---- Uruchomienie nieskończonej pętli wyszukiwania, która wewnętrznie zostanie zakończona; while(true)do ---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję; local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); </syntaxhighlight> Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są: {{OpisParametrów | 1 = {{Code|lista_szablon}} {{Patrz|lista_szablon}} | _1 = Odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale. | 2 = {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} | _2 = Jest to ciąg odstępów bez znaku nowej linii {{Code|\n}}. | 3 = {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} | _3 = Elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdować się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego. | 4 = {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} | _4 = Jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}}. | 5 = {{Code|kod_szablon}} {{Patrz|kod_szablon}} | _5 = Numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Jest to dalszy kod, za pierwszym takim zauważalnym kodzie bazy kodów tekstu. }} ====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ====== Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i pustym: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu, ** Pozycje listy, gdzie: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, tzn: nie jest: {{Code|>}}, gdy: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kończy się też na to. ; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}} * Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, i {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody lnków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, * Szukamy w ich zawartości elementów, i tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. * W ten sposób znaleźliśmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. ==== Punkt końcowy ==== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q10gmuoiu7l4p9twty3os2ez10kyalp 559480 559471 2026-10-17T04:01:54Z Persino 2851 /* Znajdowanie pierwszego artykułu książki */ 559480 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła: <syntaxhighlight lang="lua"> ---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania: ---- lista_szablon, ---- odstepy_poczatku_rozdzialu, ---- przerwa_szablon, ---- obiekt_szablon, ---- kod_szablon, ---- dalszy_tekst; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; ---- Uruchomienie nieskończonej pętli wyszukiwania, która wewnętrznie zostanie zakończona; while(true)do ---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję; local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); </syntaxhighlight> Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są: {{OpisParametrów | 1 = {{Code|lista_szablon}} {{Patrz|lista_szablon}} | _1 = Odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale. Te znaki pozycji listy są: {{Code|<nowiki>[%*:#;<>]*</nowiki>}}. Może być ich liczba zero lub więcej. | 2 = {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} | _2 = Jest to ciąg odstępów bez znaku nowej linii {{Code|\n}}. | 3 = {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} | _3 = Elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdować się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego. | 4 = {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} | _4 = Jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}}. | 5 = {{Code|kod_szablon}} {{Patrz|kod_szablon}} | _5 = Numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Jest to dalszy kod, za pierwszym takim zauważalnym kodzie bazy kodów tekstu. }} ====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ====== Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i pustym: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu, ** Pozycje listy, gdzie: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, tzn: nie jest: {{Code|>}}, gdy: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kończy się też na to. ; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}} * Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, i {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody lnków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, * Szukamy w ich zawartości elementów, i tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. * W ten sposób znaleźliśmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. ==== Punkt końcowy ==== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> r04xntga5kc6ev6en0yeqkr272fapkb 559481 559480 2026-10-17T04:04:03Z Persino 2851 /* Znajdowanie pierwszego artykułu książki */ 559481 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła: <syntaxhighlight lang="lua"> ---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania: ---- lista_szablon, ---- odstepy_poczatku_rozdzialu, ---- przerwa_szablon, ---- obiekt_szablon, ---- kod_szablon, ---- dalszy_tekst; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; ---- Uruchomienie nieskończonej pętli wyszukiwania, która wewnętrznie zostanie zakończona; while(true)do ---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję; local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); </syntaxhighlight> Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są: {{OpisParametrów | 1 = {{Code|lista_szablon}} {{Patrz|lista_szablon}} | _1 = Odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale. Te znaki pozycji listy są: {{Code|<nowiki>[%*:#;<>]*</nowiki>}}. Może być ich liczba zero lub więcej. | 2 = {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} | _2 = Jest to ciąg odstępów {{Code|<nowiki>[^%S]*</nowiki>}} (czyli inaczej: {{Code|<nowiki>%s*</nowiki>}}) bez znaku nowej linii {{Code|\n}}. | 3 = {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} | _3 = Elementy te i {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdować się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego. | 4 = {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} | _4 = Jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligente i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}}. | 5 = {{Code|kod_szablon}} {{Patrz|kod_szablon}} | _5 = Numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Jest to dalszy kod, za pierwszym takim zauważalnym kodzie bazy kodów tekstu. }} ====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ====== Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i pustym: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu, ** Pozycje listy, gdzie: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, tzn: nie jest: {{Code|>}}, gdy: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kończy się też na to. ; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}} * Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, i {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody lnków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, * Szukamy w ich zawartości elementów, i tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. * W ten sposób znaleźliśmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. ==== Punkt końcowy ==== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 49u2ibf1b83rpplw64wk51ndy488sr5 559482 559481 2026-10-17T04:05:43Z Persino 2851 /* Znajdowanie pierwszego artykułu książki */ 559482 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła: <syntaxhighlight lang="lua"> ---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania: ---- lista_szablon, ---- odstepy_poczatku_rozdzialu, ---- przerwa_szablon, ---- obiekt_szablon, ---- kod_szablon, ---- dalszy_tekst; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; ---- Uruchomienie nieskończonej pętli wyszukiwania, która wewnętrznie zostanie zakończona; while(true)do ---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję; local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); </syntaxhighlight> Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są: {{OpisParametrów | 1 = {{Code|lista_szablon}} {{Patrz|lista_szablon}} | _1 = Odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale. Te znaki pozycji listy są: {{Code|<nowiki>[%*:#;<>]*</nowiki>}}. Może być ich liczba zero lub więcej. | 2 = {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} | _2 = Jest to ciąg odstępów {{Code|<nowiki>[^%S]*</nowiki>}} (czyli inaczej: {{Code|<nowiki>%s*</nowiki>}}) bez znaku nowej linii {{Code|\n}}. | 3 = {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} | _3 = Elementy te i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{LinkPatrz|lista_szablon}} i {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdować się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego. | 4 = {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} | _4 = Jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligentne i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}}. | 5 = {{Code|kod_szablon}} {{Patrz|kod_szablon}} | _5 = Numer kodu o typie {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Jest to dalszy kod, za pierwszym takim zauważalnym kodzie bazy kodów tekstu. }} ====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ====== Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i pustym: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu, ** Pozycje listy, gdzie: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, tzn: nie jest: {{Code|>}}, gdy: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kończy się też na to. ; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}} * Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, i {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody lnków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, * Szukamy w ich zawartości elementów, i tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. * W ten sposób znaleźliśmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. ==== Punkt końcowy ==== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qt1361l9cdb951k9sae0unobjhaff35 559483 559482 2026-10-17T04:07:34Z Persino 2851 /* Znajdowanie pierwszego artykułu książki */ 559483 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == {{Śródtytuł|p.AnalizaSpisuRzeczy}}{{Code|p.AnalizaSpisuRzeczy}} == Funkcja służy z zakodowanego i z przetworzonego tekstu artykułu danego spisu, wydzielić z niej właściwy fragment, który jest tym odpowiednim spisem treści. Funkcja uwzględnia w swojej budowie, że on ma w sobie zawierać również szablony przypisów: jak: {{s|Przypisy}}, i licencji jak: {{s|Licencja}}, robi to za pomocą odpowiednich funkcji korekcji (korygowania) wydzielonego spisu. === Parametry funkcji === Przedstawimy tutaj fragment definicji tej funkcji, a także opis odnośnikowy jej parametrów. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}. | 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak }} === Parametry zwracane === * Funkcja zwraca wydzielony tekst spis treści z tekstu zakodowanego i przetworzonego artykułu (spisu książki - podręcznika). <syntaxhighlight lang="lua"> --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ---- Wydzielenie właściwego spisu treści z całej treści zakodowanego artykułu spisu; local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ---- Korygowanie danych wydzielonego spisu według powyższej metody, korekcja odbywa się po wszystkich możliwościach tabeli; for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do ---- Kolejne iteracje korekcji odpowiedniego spisu, kolejnymi krokami według poniższej funkcji; tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; ---- Zwracanie wydzielonego i skorygowanego spisu treści; return tekst; </syntaxhighlight> === Wydzielanie właściwego spisu treści, liczenie punktów granicznych === Za pomocą tych dwóch liczb granicznych, punktu startowego i końcowego, będziemy wydzielać właściwy tekst spisu treści z całości zakodowanego spisu treści, ale najpierw te dwie liczby musimy wyznaczyć za pomocą pewnych ustalonych procedur. Będziemy to robić za pomocą funkcji w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}. ==== Punkt startowy ==== Będziemy tu znajdować punkt startowy, przed którym tekst zostanie ucięty w wyniku końcowym w wyniku zwracania wartości przez tę funkcję. ===== Znajdowanie pierwszego artykułu książki ===== Pierwszy kod szablonowy według bazy kodów znajdujemy według następującego źródła: <syntaxhighlight lang="lua"> ---- Według bazy kodów, to reprezentuje, to wyrażenie regularne, dowolny kod bazy modułu: Szablonowe; local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- Wyrażenie regularne wyszukiwania, względem warunków przechwytywania: ---- lista_szablon, ---- odstepy_poczatku_rozdzialu, ---- przerwa_szablon, ---- obiekt_szablon, ---- kod_szablon, ---- dalszy_tekst; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; ---- Uruchomienie nieskończonej pętli wyszukiwania, która wewnętrznie zostanie zakończona; while(true)do ---- szukanie elementów, według wyrażenia regularnego powyższego, tzn. początku i końca jego wyszukiwania, powyższych elementów przechwyconych przez tę funkcję; local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); </syntaxhighlight> Szukamy kolejne linie, używając funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, mając wyrażenie regularne powyższe, szukamy, co najmniej pozycji list, a co najwyżej rozdziałów dodatnich, lub nawet zwykłej linii, oczywiście z jakimś kodem. Szukane elementy, numerując je odpowiednio, to są: {{OpisParametrów | 1 = {{Code|lista_szablon}} {{Patrz|lista_szablon}} | _1 = Odpowiednie tą są znaki pozycji listy, lub nie ma ich wcale. Te znaki pozycji listy są: {{Code|<nowiki>[%*:#;<>]*</nowiki>}}. Może być ich liczba zero lub więcej. | 2 = {{Code|odstepy_poczatku_rozdzialu}} {{Patrz|odstepy_poczatku_rozdzialu}} | _2 = Jest to ciąg odstępów {{Code|<nowiki>[^%S]*</nowiki>}} (czyli inaczej: {{Code|<nowiki>%s*</nowiki>}}) bez znaku nowej linii {{Code|\n}}. | 3 = {{Code|przerwa_szablon}} {{Patrz|przerwa_szablon}} | _3 = Elementy te i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, gdzie mogą znajdować się tam elementy rozdziału dodatniego przy pustych wykrytych łańcuchach: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, to tam również mogą znajdować się znaki, typu: {{Code|<}} lub {{Code|>}}, oprócz tego. | 4 = {{Code|obiekt_szablon}} {{Patrz|obiekt_szablon}} | _4 = Jest to typ obiektu, który znajdujemy w kodzie, akceptowalne rodzaje, to {{ZobaczTeż|akceptowalne kody}}: {{Code|LINKW}} - linki wewnętrzne, {{Code|LINKZ}} - linki zewnętrzne, i {{Code|SZABLON}} - kody szablonowe, w tym linki inteligentne i inne linki, a nieakceptowalnymi kodami są to różnego rodzaju nagłówki wraz z istniejącymi zawartościami, ale też {{Code|SZABLON}} - inne niż te linki, a może {{Code|ZNACZNIK}}. | 5 = {{Code|kod_szablon}} {{Patrz|kod_szablon}} | _5 = Numer kodu o typie: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, który może być przetłumaczony na liczbę w wyniku transformacji przez funkcję: {{LzLua|tonumber}}, zamieniającą łańcuch znakowy na liczbę naturalną dodatnią. | 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Jest to dalszy kod, za pierwszym takim zauważalnym kodzie bazy kodów tekstu. }} ====== Wyszukiwanie kolejnych możliwości linii z kodami szablonowymi bazy kodów, znając powyższe zmienne ====== Przy możliwych akceptowalnych kodach typu: {{LinkZobaczTeż|akceptowalne kody}}, będziemy znajdować kolejne możliwości: * Pozycje akceptowalne przez funkcje listy: ** Pozycje dowolnej listy przy niepustym łańcuchu znakowym: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i pustym: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, co oznacza jego znaki, czyli to, że za nim bezpośrednio znajduje się kod bazy kodowania, np. linku, ale akceptowalnego elementu, ** Pozycje listy, gdzie: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, nie zaczyna się od dwukropka {{Code|:}}, ** Dowolna lista dwukropkowa, czyli: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, zaczyna się na dwukropek, a: {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, to mogą znaki jeden z: {{Code|<}} i {{Code|>}}, * Początkowe znaki linii dalszego tekstu: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, tzn: nie jest: {{Code|>}}, gdy: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, są puste, * Dowolny rozdział równaniowy dodatni, gdy zmienne: {{Code|lista_szablon}} {{LinkPatrz|lista_szablon}}, i {{Code|odstepy_poczatku_rozdzialu}} {{LinkPatrz|odstepy_poczatku_rozdzialu}}, są puste, a {{Code|przerwa_szablon}} {{LinkPatrz|przerwa_szablon}}, zaczyna się od równa się, a: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, kończy się też na to. ; Gdy nie znaleziono elementów według powyższych punktów, tzn. szukamy według{{dk}} * Gdy linii nie można było przydzielić, do któryś z powyższych punktów, to badamy, czy: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, i {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}} - przetłumaczony na numer, czy w nim ewentualnie da się znaleźć kody lnków, jeżeli one są szablonami, czy znacznikami, centrowania, lub sztucznymi nagłówkami, a nawet nagłówkami znacznikowymi, * Szukamy w ich zawartości elementów, i tzn. bezpośrednio zmiennych kodowych linków {{ZobaczTeż|inne_kody}}: {{Code|szablon}}, {{Code|obiekt_szablon}} {{LinkPatrz|obiekt_szablon}}, {{Code|kod_szablon}} {{LinkPatrz|kod_szablon}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, przy pomocy funkcji: {{LinkŚródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}}. * W ten sposób znaleźliśmy inne kody i dalszy jego tekst w postaci elementów podanych w: {{LinkZobaczTeż|inne_kody}}. ==== Punkt końcowy ==== ==== Wydzielanie spisu właściwego ==== ===== Korekcja uzyskanego wyniku ===== {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> poq1tusmxxu7dbhfo77dpd1wits5h6r Mechanika teoretyczna/Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika/Przykłady 0 64137 559474 559058 2026-10-16T21:17:19Z Persino 2851 /* Ruch pod wpływem siły tarcia wprost proporcjonalnego do prędkości */ 559474 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Przykłady ruchów ciał w układzie współrzędnych jednowymiarowych == === Ruch bez działania siły === W tym podrozdziale analizujemy najbardziej fundamentalny, a jednocześnie najprostszy możliwy przypadek ruchu w mechanice klasycznej: ruch ciała, na które '''nie działa żadna siła'''. Jest to sytuacja, która stanowi bezpośrednie ucieleśnienie pierwszej zasady dynamiki Newtona, zwanej również zasadą bezwładności. Zasada ta mówi, że jeśli na ciało nie działa żadna siła wypadkowa, to ciało pozostaje w spoczynku lub porusza się ruchem jednostajnym prostoliniowym. Jest to jedno z najbardziej podstawowych praw fizyki, które opisuje naturalną tendencję ciał do zachowania swojego stanu ruchu. Niech siła działająca na ciało jest równa zero, tzn. {{Formuła|<MATH>\vec{F}=0\;</MATH>}}. Zatem na podstawie {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} możemy napisać równanie ruchu: {{CentrujWzór|<MATH>m\ddot{x}=0\Rightarrow \dot{x}=v\Rightarrow x=vt+a\;</MATH>|1.32}} Równanie {{LinkWzór|1.32}} przedstawia pełny ciąg wnioskowania, który jest niezwykle ważny dla zrozumienia natury ruchu w mechanice Newtonowskiej: * Jeśli siła wypadkowa jest równa zero, to przyspieszenie jest równe zero: ** {{Formuła|<MATH>\ddot{x}=0</MATH>}}. ** Oznacza to, że prędkość ciała nie zmienia się w czasie — nie rośnie, nie maleje, nie zmienia kierunku. * Jeśli przyspieszenie jest zerowe, prędkość jest stała: ** {{Formuła|<MATH>\dot{x}=v</MATH>}}. ** Prędkość ta może być dowolna: dodatnia, ujemna lub równa zero. Jeśli jest równa zero, ciało pozostaje w spoczynku. Jeśli jest różna od zera, ciało porusza się ruchem jednostajnym. * Jeśli prędkość jest stała, położenie zmienia się liniowo w czasie: ** {{Formuła|<MATH>x(t)=vt+a</MATH>}}, ** gdzie {{Formuła|<MATH>a</MATH>}} jest stałą integracji określającą początkowe położenie. ** Oznacza to, że ciało pokonuje równe odcinki drogi w równych odstępach czasu. W ten sposób otrzymujemy klasyczny wynik pierwszej zasady dynamiki Newtona dla ruchu liniowego: * ciało pozostaje w spoczynku lub porusza się ruchem jednostajnym prostoliniowym, * jeśli nie działa na nie żadna siła wypadkowa. Ruch bez działania siły jest jednym z najważniejszych modeli w fizyce, ponieważ stanowi punkt odniesienia dla wszystkich bardziej złożonych przypadków. Każdy ruch, w którym pojawia się przyspieszenie, musi wynikać z działania siły. Jeśli siła znika, ruch natychmiast staje się jednostajny. Jest to fundamentalna cecha mechaniki klasycznej, która odróżnia ją od wielu innych teorii fizycznych. Model ten jest również podstawą pojęcia układu inercjalnego — układu odniesienia, w którym obowiązuje pierwsza zasada Newtona. W takich układach ciała zachowują swój ruch, jeśli nie działają na nie siły. Układy inercjalne są kluczowe dla całej mechaniki klasycznej i stanowią fundament dla dalszych rozdziałów dynamiki. === Spadek ciała tylko pod wpływem jednorodnego pola grawitacyjnego === W tym podrozdziale analizujemy jeden z najbardziej klasycznych i fundamentalnych ruchów w fizyce: spadek ciała w jednorodnym polu grawitacyjnym. Jest to sytuacja, która pojawia się w niezliczonych kontekstach — od ruchu kropli deszczu, przez spadanie kamienia, aż po ruch sond kosmicznych w pobliżu powierzchni planet. Jednorodne pole grawitacyjne jest idealizacją, która doskonale opisuje ruch ciał w pobliżu powierzchni Ziemi, gdzie przyspieszenie grawitacyjne można uznać za stałe. Z drugiej zasady dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}}, w której siła jest napisana wzorem {{Formuła|<MATH>F=ma\;</MATH>}}, i na ciało działa siła grawitacji {{Formuła|<MATH>F=-mg\;</MATH>}}, otrzymujemy równanie ruchu dla naszego przypadku: {{CentrujWzór|<MATH>m\ddot{x}=-mg\;</MATH>|1.33}} Równanie to jest jednym z najprostszych, a jednocześnie najbardziej fundamentalnych równań w fizyce klasycznej. Pokazuje ono, że przyspieszenie ciała jest stałe i równe -g. Jest to kluczowa cecha jednorodnego pola grawitacyjnego: niezależnie od położenia i prędkości, siła grawitacji pozostaje taka sama. Prędkość ciała w zależności od czasu '''t''' opisujemy, wychodząc od równania {{LinkWzór|1.33}}. Całkujemy równanie przyspieszenia: {{CentrujWzór|<MATH>\dot{x}=v=v_0-gt\;</MATH>|1.34}} Wielkość {{Formuła|<MATH>v_0</MATH>}} występująca we wzorze {{LinkWzór|1.34}} jest prędkością początkową ciała, tzn. prędkością w chwili początkowej {{Formuła|<MATH>t=0\;</MATH>}}. Jeśli ciało jest puszczone bez prędkości początkowej, to v₀ = 0, a prędkość rośnie liniowo w czasie. Jeśli ciało jest rzucone w dół lub w górę, prędkość początkowa może być dodatnia lub ujemna. Równanie prędkości możemy przecałkować jeszcze raz względem czasu, otrzymując równanie położenia: {{CentrujWzór|<MATH>x(t)=x_0+v_0t-{{gt^2}\over{2}}\;</MATH>|1.35}} Wzór {{LinkWzór|1.35}} przedstawia klasyczne równanie ruchu ciała spadającego w jednorodnym polu grawitacyjnym. Jest to jedno z najważniejszych równań w całej mechanice klasycznej — opisuje ruch jednostajnie przyspieszony z przyspieszeniem stałym i równym g. W równaniu tym: * {{Formuła|<MATH>x_0</MATH>}} – początkowe położenie ciała, * {{Formuła|<MATH>v_0</MATH>}} – prędkość początkowa, * {{Formuła|<MATH>g</MATH>}} – przyspieszenie grawitacyjne, * ruch jest jednostajnie przyspieszony, * przyspieszenie jest stałe i równe {{Formuła|<MATH>-g</MATH>}}. Równanie to jest podstawą analizy ruchu w polu grawitacyjnym. Opisuje ono idealny spadek ciała bez oporów, co jest doskonałym przybliżeniem dla wielu sytuacji fizycznych. W rzeczywistości opory powietrza mogą zmieniać ruch, lecz w wielu przypadkach — szczególnie dla małych prędkości lub w próżni — równanie to jest dokładne. Otrzymane równania są bezpośrednią konsekwencją drugiej zasady dynamiki Newtona i opisują idealny spadek ciała w polu grawitacyjnym bez oporów. Są one fundamentem całej kinematyki i dynamiki ruchu w polu sił stałych. === Ruch pod wpływem siły tarcia wprost proporcjonalnego do prędkości === W tym podrozdziale analizujemy jeden z najbardziej klasycznych modeli ruchu w ośrodku lepkim: ruch ciała pod wpływem siły tarcia, która jest '''wprost proporcjonalna do prędkości'''. Jest to sytuacja niezwykle często spotykana w fizyce i technice — obejmuje ruch małych cząstek w cieczy, ruch drobnych obiektów w powietrzu przy niewielkich prędkościach, a także ruch elektronów w przewodnikach, gdzie opór jest proporcjonalny do prędkości dryfu. Model ten jest podstawą hydrodynamiki Stokesa, teorii lepkości, a także wielu zagadnień związanych z tłumieniem drgań. Drugą zasadę dynamiki Newtona dla naszego rozważanego przypadku, w którym opory ruchu odbywają się pod wpływem siły tarcia '''wprost proporcjonalnego do prędkości''', zapisujemy równaniem: {{CentrujWzór|<MATH>m\ddot{x}=-\gamma\dot{x}\;</MATH>|1.36}} W powyższym równaniu współczynnik γ jest miarą intensywności oporu ośrodka. Im większa wartość γ, tym silniej ośrodek przeciwdziała ruchowi ciała. Siła oporu ma postać {{Formuła|<MATH>F_{\text{op}}=-\gamma v</MATH>}}, co oznacza, że jest skierowana przeciwnie do prędkości i rośnie liniowo wraz z jej wartością. Jest to model oporu lepkiego, który obowiązuje dla małych prędkości, gdy przepływ wokół ciała jest laminarny. ---- * ''Rozwiązanie równania różniczkowego'' Równanie {{LinkWzór|1.36}} jest liniowym jednorodnym równaniem różniczkowym o stałych współczynnikach. Jest to równanie drugiego rzędu, lecz dzięki swojej strukturze można je rozwiązać metodą podstawienia wykładniczego. Szukamy rozwiązania w postaci: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}}. Podstawiamy tę postać do równania: {{CentrujWzór|<MATH>e^{\lambda t}\left(m\lambda^2+\gamma\lambda\right)=0\Rightarrow m\lambda^2+\gamma\lambda=0\Rightarrow\lambda(m\lambda+\gamma)=0\;</MATH>|1.37}} Ponieważ funkcja wykładnicza nigdy nie jest równa zero, otrzymujemy równanie charakterystyczne: {{Formuła|<MATH>\lambda(m\lambda+\gamma)=0</MATH>}}. Równanie to ma dwa rozwiązania: * {{Formuła|<MATH>\lambda_1=0</MATH>}} — odpowiada rozwiązaniu stałemu, czyli położeniu granicznemu, do którego ciało dąży, * {{Formuła|<MATH>\lambda_2=-\gamma/m</MATH>}} — odpowiada rozwiązaniu wykładniczo malejącemu, które opisuje zanikanie ruchu. Pierwiastek ujemny oznacza, że ruch jest tłumiony: prędkość maleje wykładniczo, a ciało stopniowo zatrzymuje się. ---- * '''Pełne rozwiązanie równania ruchu''' Rozwiązanie ogólne jest kombinacją liniową dwóch rozwiązań: {{CentrujWzór|<MATH>x(t)=A_1+A_2e^{-{{\gamma}\over{m}}t}\;</MATH>|1.38}} W tym równaniu: * {{Formuła|<MATH>A_1</MATH>}} – stała integracji związana z położeniem granicznym, czyli wartością, do której ciało asymptotycznie dąży, * {{Formuła|<MATH>A_2</MATH>}} – stała integracji zależna od warunków początkowych, określająca początkowe wychylenie od położenia granicznego, * człon wykładniczy opisuje '''zanikanie ruchu''' w czasie z charakterystyczną stałą tłumienia ** {{Formuła|<MATH>\tau = m/\gamma</MATH>}}. Stała tłumienia τ określa czas, w którym prędkość maleje e‑krotnie. Im większa lepkość ośrodka (większe γ), tym krótszy czas zanikania ruchu. ---- * '''Interpretacja fizyczna''' Równanie {{LinkWzór|1.38}} opisuje ruch ciała w ośrodku lepkim: * prędkość maleje wykładniczo — jest to charakterystyczna cecha ruchu w ośrodku o oporze liniowym, * ciało asymptotycznie zatrzymuje się — nigdy nie osiąga położenia granicznego w skończonym czasie, lecz zbliża się do niego coraz wolniej, * położenie zbliża się do wartości granicznej {{Formuła|<MATH>A_1</MATH>}} — jest to położenie równowagi w obecności oporu. Model ten jest typowy dla ruchu w ośrodku, w którym opór jest proporcjonalny do prędkości — np. ruch małych obiektów w powietrzu lub w cieczy przy małych prędkościach (reżim Stokesa). W takich warunkach siła oporu nie zależy od kwadratu prędkości, lecz od jej wartości, co prowadzi do wykładniczego zanikania ruchu. Tak otrzymane rozwiązanie jest klasycznym wynikiem mechaniki Newtonowskiej dla ruchu tłumionego liniowo. Jest to jeden z najprostszych, a jednocześnie najbardziej fundamentalnych modeli ruchu w ośrodku lepkim. === Oscylator harmoniczny === Oscylator harmoniczny jest jednym z najbardziej fundamentalnych modeli w całej fizyce klasycznej, kwantowej, statystycznej i technicznej. Jego znaczenie wynika z faktu, że każdy układ fizyczny, który wykonuje niewielkie drgania wokół położenia równowagi, zachowuje się — w pierwszym przybliżeniu — jak oscylator harmoniczny. Dlatego model ten opisuje nie tylko sprężynę z ciężarkiem, lecz także drgania atomów w cząsteczkach, oscylacje planet wokół stabilnych punktów równowagi, drgania pól kwantowych, a nawet fale elektromagnetyczne w rezonatorach. Siłą harmoniczną działającą ze strony sprężynki na ciało jest siła wyrażona jako {{Formuła|<MATH>F=-kx\;</MATH>}}, co oznacza, że siła jest proporcjonalna do wychylenia i skierowana przeciwnie do niego. Jest to klasyczna postać prawa Hooke’a, które obowiązuje dla niewielkich odkształceń sprężyny. Dlatego w takim przypadku druga zasada dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} przyjmuje postać: {{CentrujWzór|<MATH>m\ddot{x}=-kx\;</MATH>|1.39}} Równanie to jest jednym z najprostszych, a jednocześnie najbardziej fundamentalnych równań różniczkowych w fizyce. Opisuje ono ruch ciała pod wpływem siły proporcjonalnej do wychylenia. Jest to równanie liniowe o stałych współczynnikach, które prowadzi do sinusoidalnych rozwiązań. ---- * '''Rozwiązanie równania różniczkowego''' Poszukujemy rozwiązania równania różniczkowego {{LinkWzór|1.39}} w postaci funkcji wykładniczej: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}} Jest to standardowa metoda rozwiązywania równań liniowych. Podstawienie funkcji wykładniczej pozwala sprowadzić równanie różniczkowe do równania algebraicznego, co znacznie upraszcza analizę. Podstawiamy tę postać do równania: {{CentrujWzór|<MATH>m\lambda^2+k=0\Rightarrow\lambda=\pm i\sqrt{{k}\over{m}}=\pm i\omega_0\;</MATH>|1.40}} Otrzymujemy dwa pierwiastki zespolone, co oznacza, że rozwiązanie jest sinusoidalne. Wielkość {{Formuła|<MATH>\omega_0=\sqrt{k/m}</MATH>}} jest częstością własną oscylatora harmonicznego — fundamentalną wielkością opisującą szybkość drgań. Częstość własna zależy wyłącznie od masy i stałej sprężystości. Im większa sprężystość, tym szybsze drgania; im większa masa, tym drgania wolniejsze. ---- * '''Pełne rozwiązanie równania ruchu''' Na podstawie końcowego wniosku wynikowego {{LinkWzór|1.40}}, możemy napisać położenie ciała znajdującego się na końcu sprężynki: {{CentrujWzór|<MATH>x(t)=A_1e^{i\omega_0 t}+A_2e^{-i\omega_0 t}=A\sin(\omega_0 t+\phi)\;</MATH>|1.41}} Rozwiązanie to jest klasyczną postacią sinusoidalnego ruchu harmonicznego. Stałe: * {{Formuła|<MATH>A_1, A_2</MATH>}} – stałe integracji wynikające z warunków początkowych, * {{Formuła|<MATH>A</MATH>}} – amplituda drgań, określająca maksymalne wychylenie, * {{Formuła|<MATH>\phi</MATH>}} – faza początkowa, określająca przesunięcie czasowe drgań. Rozwiązanie sinusoidalne wynika z faktu, że pierwiastki równania charakterystycznego są czysto urojone. Oznacza to, że układ wykonuje drgania bez tłumienia, a energia kinetyczna i potencjalna wymieniają się cyklicznie. ---- * '''Interpretacja fizyczna''' Równanie {{LinkWzór|1.41}} opisuje klasyczne drgania harmoniczne: * ruch jest '''okresowy''', co oznacza, że powtarza się w regularnych odstępach czasu, * częstość drgań zależy tylko od stosunku {{Formuła|<MATH>k/m</MATH>}}, * rozwiązanie jest sinusoidalne, co wynika z zespolonej postaci funkcji wykładniczej. Oscylator harmoniczny jest jednym z najważniejszych modeli w fizyce — opisuje m.in.: * drgania sprężyn, * wahadła dla małych wychyleń, * oscylacje atomów w cząsteczkach, * drgania pól kwantowych, * fale elektromagnetyczne w rezonatorach, * oscylacje planet wokół stabilnych punktów równowagi. Model ten jest tak uniwersalny, że stanowi fundament niemal każdej dziedziny fizyki. Jego prostota matematyczna i ogromna moc opisowa sprawiają, że jest jednym z najczęściej używanych narzędzi w całej nauce. === Tłumiony oscylator harmoniczny === W tłumionym oscylatorze harmonicznym, oprócz siły harmonicznej działającej ze strony sprężynki, działa również **siła tłumiąca ruch**, która zależy od prędkości ciała. Jest to sytuacja niezwykle często spotykana w fizyce klasycznej i technice: tłumienie występuje w amortyzatorach samochodowych, w układach drgających maszyn, w oscylacjach konstrukcji budowlanych, w drganiach atomów w ośrodkach lepkich, a nawet w układach elektronicznych, gdzie tłumienie odpowiada stratom energii. Siła tłumiąca jest zawsze skierowana przeciwnie do prędkości i powoduje stopniowe zmniejszanie amplitudy drgań. W takim przypadku drugą zasadę dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} zapisujemy: {{CentrujWzór|<MATH>m\ddot{x}=-kx-2m\beta\dot{x}\;</MATH>|1.42}} W powyższym wzorze oznaczyliśmy {{Formuła|<MATH>\beta=\gamma/(2m)</MATH>}}, czyli tzw. '''zredukowany współczynnik tłumienia'''. Współczynnik ten określa intensywność tłumienia: im większa wartość β, tym szybciej energia układu jest tracona. Tłumienie jest procesem nieodwracalnym — energia mechaniczna zamienia się na ciepło lub inne formy energii, które nie wracają do układu drgającego. ---- * '''Częstotliwość drgań nie tłumionych''' Zanim przejdziemy do analizy tłumienia, przypomnijmy definicję częstości własnej oscylatora harmonicznego. Jest to częstość drgań w przypadku braku tłumienia, czyli gdy β=0. Częstość ta zależy wyłącznie od masy i stałej sprężystości: {{CentrujWzór|<MATH>\omega_0=\sqrt{{k\over m}}\;</MATH>|1.43}} Częstotliwość własna jest fundamentalną wielkością opisującą układ drgający. Określa ona, jak szybko układ drga w idealnych warunkach, bez strat energii. Jest to częstość naturalna układu, wynikająca z jego geometrii i właściwości fizycznych. Równanie {{LinkWzór|1.42}} przy oznaczeniach {{LinkWzór|1.43}} zapisujemy: {{CentrujWzór|<MATH>\ddot{x}+2\beta\dot{x}+\omega_0^2x=0\;</MATH>|1.44}} Równanie to jest podstawowym równaniem tłumionego oscylatora harmonicznego. Zawiera ono trzy składniki: przyspieszenie, tłumienie proporcjonalne do prędkości oraz siłę sprężystości proporcjonalną do wychylenia. Każdy z tych składników odgrywa kluczową rolę w dynamice układu. ---- * '''Rozwiązanie równania różniczkowego''' Aby rozwiązać równanie {{LinkWzór|1.44}}, podstawiamy rozwiązanie w postaci wykładniczej: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}} Jest to standardowa metoda rozwiązywania równań liniowych o stałych współczynnikach. Podstawienie to pozwala sprowadzić równanie różniczkowe do równania algebraicznego. Otrzymujemy równanie charakterystyczne: {{CentrujWzór|<MATH>\lambda^2+2\beta\lambda+\omega_0^2=0\;</MATH>|1.45}} Równanie charakterystyczne jest równaniem kwadratowym, którego pierwiastki określają rodzaj ruchu. W zależności od wartości β względem ω₀ otrzymujemy trzy różne typy ruchu: silnie tłumiony, słabo tłumiony i krytycznie tłumiony. Rozwiązanie równania kwadratowego: {{CentrujWzór|<MATH>\lambda={{-2\beta\pm\sqrt{4\beta^2-4\omega_0^2}}\over 2}=-\beta\pm\sqrt{\beta^2-\omega_0^2}\;</MATH>|1.46}} Pierwiastki równania charakterystycznego decydują o tym, czy ruch jest oscylacyjny, czy nie. Jeśli pierwiastek jest zespolony, ruch jest sinusoidalny z malejącą amplitudą. Jeśli pierwiastki są rzeczywiste, ruch nie jest oscylacyjny — ciało wraca do równowagi bez drgań. ---- * '''Silne tłumienie''' {{Formuła|<MATH>\beta>\omega_0</MATH>}} W tym przypadku pierwiastki równania charakterystycznego są '''rzeczywiste i ujemne''': {{CentrujWzór|<MATH>x(t)=Ae^{\lambda_1 t}+Be^{\lambda_2 t}\;</MATH>|1.47}} Ruch nie jest oscylacyjny — ciało wraca do położenia równowagi bez drgań. Jest to sytuacja, w której tłumienie jest tak silne, że układ nie ma „siły” wykonywać drgań. Zamiast tego wychylenie maleje monotonicznie. Taki ruch występuje np. w amortyzatorach samochodowych, które mają za zadanie tłumić drgania jak najszybciej. ---- * '''Słabe tłumienie''' {{Formuła|<MATH>\beta<\omega_0</MATH>}} W tym przypadku pierwiastki są **zespolone**, a ruch pozostaje oscylacyjny: {{CentrujWzór|<MATH>x(t)=Ae^{-\beta t}\sin\left(\sqrt{\omega_0^2-\beta^2}\,t+\phi\right)\;</MATH>|1.48}} Częstotliwość drgań tłumionych wynosi: {{Formuła|<MATH>\omega=\sqrt{\omega_0^2-\beta^2}</MATH>}}. Amplituda maleje wykładniczo. Jest to najbardziej klasyczny przypadek tłumionego ruchu: ciało drga, lecz z każdą chwilą amplituda jest mniejsza. Taki ruch występuje np. w wahadłach w powietrzu, w drganiach strun, w oscylacjach atomów w ośrodkach lepkich. ---- * '''Przypadek graniczny''' {{Formuła|<MATH>\beta=\omega_0</MATH>}} W tym przypadku równanie charakterystyczne ma '''podwójny pierwiastek''': {{CentrujWzór|<MATH>x(t)=Ae^{-\beta t}(1+at)\;</MATH>|1.49}} Ruch nie jest oscylacyjny, ale ciało wraca do równowagi '''najszybciej możliwie bez oscylacji''' — jest to tzw. '''tłumienie krytyczne'''. Jest to przypadek szczególny, w którym układ wraca do równowagi w minimalnym czasie, bez wykonywania drgań. Tłumienie krytyczne jest idealne w układach technicznych, gdzie zależy nam na szybkim wygaszeniu drgań bez oscylacji. ---- Wszystkie trzy przypadki (silne, słabe i krytyczne tłumienie) wynikają bezpośrednio z analizy równania charakterystycznego {{LinkWzór|1.45}} i stanowią pełną klasyfikację ruchu tłumionego oscylatora harmonicznego. Każdy z tych przypadków ma ogromne znaczenie praktyczne i teoretyczne. Tłumienie jest jednym z najważniejszych zjawisk w fizyce klasycznej — bez tłumienia drgania trwałyby wiecznie, co nie zdarza się w rzeczywistych układach. Dzięki tłumieniu energia układu jest stopniowo tracona, a ruch wygasa. === Ruch ciała pod wpływem dowolnej siły zależnej od położenia === W tym podrozdziale zajmiemy się jednym z najbardziej fundamentalnych i jednocześnie najbardziej ogólnych zagadnień mechaniki klasycznej: ruchem ciała pod wpływem siły, która zależy wyłącznie od położenia. Jest to sytuacja niezwykle często spotykana w fizyce — obejmuje ruch w polu grawitacyjnym, w polu sprężystości, w polu elektrostatycznym, a także w dowolnym potencjale jednowymiarowym. Zależność siły od położenia jest kluczowa, ponieważ pozwala wprowadzić pojęcie energii potencjalnej, a tym samym zastosować zasadę zachowania energii, która jest jednym z najpotężniejszych narzędzi w całej mechanice. Napiszmy wzór na drugą zasadę dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}}, w której siła niezrównoważona pochodzi od '''sił potencjalnych''' działających na ciało. Mamy zatem równanie: {{CentrujWzór|<MATH>m\ddot{x}=F(x)\;</MATH>}} Równanie to jest punktem wyjścia do całej analizy. Pokazuje ono, że przyspieszenie ciała jest bezpośrednio związane z siłą działającą na ciało, a ta siła zależy od położenia. Jest to równanie różniczkowe drugiego rzędu, które w ogólności może być trudne do rozwiązania, lecz w przypadku sił potencjalnych możemy zastosować metodę znacznie prostszą i bardziej elegancką. Mnożymy obustronnie przez prędkość {{Formuła|<MATH>\dot{x}</MATH>}} i korzystamy z definicji energii potencjalnej: {{Formuła|<MATH>U(x)=-\int F(x)\,dx</MATH>}}. Ten krok jest kluczowy: mnożenie przez prędkość pozwala przekształcić równanie ruchu w równanie energii. Jest to jedna z najważniejszych sztuczek w mechanice analitycznej. Dzięki niej możemy przejść od równania różniczkowego do równania algebraicznego, które jest znacznie łatwiejsze do analizy. Wtedy otrzymujemy tożsamość, którą możemy przecałkować względem czasu: {{CentrujWzór|<MATH>{{d}\over{dt}}\left({{m\dot{x}^2}\over{2}}\right)=-{{d}\over{dt}}U(x)\Rightarrow {{1}\over{2}}m\dot{x}^2=E-U(x)\;</MATH>|1.50}} Równanie {{LinkWzór|1.50}} jest równaniem energii całkowitej. Pokazuje ono, że suma energii kinetycznej i potencjalnej jest stała i równa całkowitej energii E. Jest to jedno z najważniejszych równań w całej fizyce klasycznej. Dzięki niemu możemy analizować ruch bez konieczności rozwiązywania równania różniczkowego — wystarczy znać zależność U(x), aby określić prędkość, a tym samym cały ruch. ---- * Rozdzielanie zmiennych: Równanie {{LinkWzór|1.50}} możemy rozwiązać metodą rozdzielania zmiennych. Jest to metoda, która pozwala przekształcić równanie różniczkowe w całkę, którą można obliczyć lub przynajmniej przeanalizować. {{CentrujWzór|<MATH>dt={{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)} }}\Rightarrow t-t_0=\int_{x_0}^x{{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)}}}\;</MATH>|1.51}} Wzór {{LinkWzór|1.51}} jest jednym z najważniejszych wzorów w mechanice analitycznej. Pokazuje on, że czas ruchu można wyrazić jako całkę z odwrotności prędkości. Prędkość zależy od różnicy między energią całkowitą a potencjałem, co oznacza, że czas ruchu jest bezpośrednio związany z geometrią potencjału. ---- * Energia potencjalna sprężyny Dla siły sprężystości {{Formuła|<MATH>F=-kx</MATH>}} energia potencjalna wynosi: {{CentrujWzór|<MATH>U(x)=-\int F\,dx=-\int(-kx)\,dx={{k}\over{2}}x^2\;</MATH>|1.52}} Wzór {{LinkWzór|1.52}} jest klasycznym wynikiem: energia potencjalna sprężyny jest proporcjonalna do kwadratu wychylenia. Jest to potencjał harmoniczny, który prowadzi do ruchu sinusoidalnego. Jest to jeden z najważniejszych potencjałów w fizyce — pojawia się w drganiach atomów, w oscylacjach planet, w falach elektromagnetycznych, w kwantowych oscylatorach harmonicznych i w niezliczonych innych sytuacjach. ---- * Podstawienie do równania ruchu Podstawiamy {{LinkWzór|1.52}} do równania {{LinkWzór|1.51}}: {{CentrujWzór|<MATH> t=t_0+\int_{x_0}^x{{dx}\over{\sqrt{{{2}\over{m}}\left(E-{{1}\over{2}}kx^2\right)}}} =t_0+\sqrt{{{m}\over{k}}}\int_{x_0}^x{{dx\sqrt{{{k}\over{m}}}}\over{\sqrt{{{{2E}\over{m}}}-{{k}\over{m}}x^2}}} =t_0+\sqrt{{{m}\over{k}}}\operatorname{arcsin}\left(\sqrt{{{k}\over{2E}}}\,x\right) \;</MATH>|1.53}} Wzór {{LinkWzór|1.53}} jest niezwykle elegancki: pokazuje, że czas ruchu w potencjale harmonicznym jest funkcją arcsin. Jest to bezpośrednia konsekwencja tego, że potencjał harmoniczny prowadzi do ruchu sinusoidalnego. Cała struktura ruchu jest zakodowana w funkcjach trygonometrycznych. ---- * Odwrócenie zależności: położenie jako funkcja czasu Odwracając równanie {{LinkWzór|1.53}}, otrzymujemy zależność położenia od czasu: {{CentrujWzór|<MATH>x=\sqrt{{{2E}\over{k}}}\sin\left(\sqrt{{k\over m}}\,(t-t_0)\right)\;</MATH>|1.54}} Wzór {{LinkWzór|1.54}} jest pełnym rozwiązaniem ruchu ciała w polu sił sprężystości. Pokazuje on, że ruch jest sinusoidalny, z amplitudą zależną od energii i częstością zależną od stałej sprężystości i masy. Jest to jedno z najbardziej klasycznych rozwiązań w całej fizyce. ---- * Interpretacja fizyczna Wzór {{LinkWzór|1.54}} jest **pełnym rozwiązaniem ruchu ciała w polu sił sprężystości**, wyprowadzonym z zasady zachowania energii. Pokazuje on, że: * ruch jest '''harmoniczny''', * amplituda drgań wynosi {{Formuła|<MATH>A=\sqrt{2E/k}</MATH>}}, * częstość drgań jest równa {{Formuła|<MATH>\omega_0=\sqrt{k/m}</MATH>}}, * rozwiązanie zależy wyłącznie od energii całkowitej, masy i stałej sprężystości. W ten sposób otrzymujemy klasyczne równanie ruchu oscylatora harmonicznego, wyprowadzone **nie z równania różniczkowego**, lecz '''z zasady zachowania energii'''. Jest to przykład tego, jak potężna jest metoda energii w mechanice analitycznej — pozwala ona uzyskać pełne rozwiązanie ruchu bez konieczności rozwiązywania równania różniczkowego drugiego rzędu. === Określenie położenia maksymalnego na podstawie okresu drgań === W tym podrozdziale zajmiemy się jednym z najbardziej eleganckich i głębokich wyników klasycznej teorii drgań: zależnością między okresem drgań T(E) a maksymalnym położeniem ciała x(E) w jednowymiarowym potencjale U(x). Jest to zagadnienie o fundamentalnym znaczeniu, ponieważ pozwala odwrócić typowy sposób myślenia o ruchu drgającym. Zwykle bowiem zakładamy, że znamy potencjał U(x), a następnie wyznaczamy okres drgań T(E). Tutaj natomiast pokażemy, że można wykonać operację odwrotną: znając okres drgań jako funkcję energii, możemy odtworzyć maksymalne położenie x(E), a tym samym strukturę potencjału. Jest to niezwykle potężne narzędzie, wykorzystywane w fizyce klasycznej, kwantowej, w teorii oscylatorów, w analizie ruchu planetarnego, a także w metodach odwrotnych w mechanice analitycznej. Zależność ta pokazuje, że informacja o czasie ruchu zawiera w sobie pełną informację o geometrii potencjału. Innymi słowy — czas jest nośnikiem struktury przestrzennej. Weźmy pod uwagę różniczkę czasu określoną na podstawie jego zależności od różniczki położenia, daną wzorem {{LinkWzór|1.51}}. Różniczka ta jest kluczowa, ponieważ pozwala wyrazić czas jako całkę z odwrotności prędkości. Prędkość natomiast zależy od różnicy między energią całkowitą E a potencjałem U(x). Dzięki temu możemy powiązać czas ruchu z geometrią potencjału. Okres drgań możemy określić jako podwojoną wartość czasu, w jakim nasze badane ciało przechodzi z jednego maksymalnego położenia do drugiego. Jest to naturalne, ponieważ ruch w potencjale jednowymiarowym jest odwracalny: ciało wraca dokładnie tą samą drogą, z tą samą prędkością, lecz w przeciwnym kierunku. Dlatego całka od x₁(E) do x₂(E) opisuje tylko połowę ruchu — drugą połowę otrzymujemy przez symetrię. {{CentrujWzór|<MATH>T(E)=2\int_{x_1(E)}^{x_2(E)}{{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)} }}=\sqrt{2m}\int_{x_1(E)}^{x_2(E)}{{dx}\over{\sqrt{E-U(x)}}}\;</MATH>|1.55}} Wzór {{LinkWzór|1.55}} jest jednym z najważniejszych wzorów w teorii drgań. Pokazuje on, że okres drgań zależy od całki z odwrotności prędkości, a prędkość zależy od różnicy między energią całkowitą E a potencjałem U(x). Im większa energia, tym dalej ciało dociera, a tym samym okres drgań może się zmieniać. W przypadku potencjałów niesymetrycznych zależność ta może być bardzo złożona, lecz nadal pozostaje w pełni deterministyczna. Patrząc na wzór {{LinkWzór|1.55}}, okres drgań możemy zapisać, całkując po energii od {{Formuła|<MATH>0</MATH>}} do {{Formuła|<MATH>E</MATH>}} i od {{Formuła|<MATH>E</MATH>}} do {{Formuła|<MATH>0</MATH>}}. Po podziale całki na dwa składniki otrzymujemy: {{CentrujWzór|<MATH> T(E)=\sqrt{2m}\int_0^E{{dx_2(U)}\over{dU}}{{dU}\over{\sqrt{E-U}}} +\sqrt{2m}\int_E^0{{dx_1(U)}\over{dU}}{{dU}\over{\sqrt{E-U}}} =\sqrt{2m}\int_0^E\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]{{dU}\over{\sqrt{E-U}}} \;</MATH>|1.56}} Wzór {{LinkWzór|1.56}} jest kluczowy: pokazuje, że okres drgań można wyrazić jako całkę po energii, w której pojawia się różnica pochodnych położenia granicznego x₂(U) i x₁(U). Ta różnica jest niczym innym jak szerokością dostępnego obszaru ruchu dla danej energii. Innymi słowy, okres drgań zależy od tego, jak szeroki jest „przedział ruchu” przy danej energii. Dzielimy obie strony równości {{LinkWzór|1.56}} przez wyrażenie zależne od {{Formuła|<MATH>\alpha</MATH>}} i energii całkowitej {{Formuła|<MATH>E</MATH>}}: {{Formuła|<MATH>\sqrt{\alpha-E}</MATH>}} i całkujemy względem {{Formuła|<MATH>E</MATH>}} od {{Formuła|<MATH>0</MATH>}} do {{Formuła|<MATH>\alpha</MATH>}}: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\sqrt{2m}\int_0^{\alpha}\int_0^E\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]{{dU\,dE}\over{\sqrt{(\alpha-E)(E-U)}}} \;</MATH>|1.57}} Wzór {{LinkWzór|1.57}} jest przykładem zastosowania całkowania iterowanego. Zmieniamy kolejność całkowania, co jest klasyczną techniką w analizie matematycznej, pozwalającą uprościć złożone wyrażenia. We wzorze {{LinkWzór|1.57}} zmieniamy kolejność całkowania w całce podwójnej: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\sqrt{2m}\int_0^{\alpha}\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]dU \int_U^{\alpha}{{dE}\over{\sqrt{(\alpha-E)(E-U)}}} \;</MATH>|1.58}} Teraz kluczowym krokiem jest wyznaczenie całki wewnętrznej. Jest to całka o bardzo charakterystycznej strukturze: pod pierwiastkiem występuje iloczyn dwóch wyrażeń liniowych w E. Po odpowiednich przekształceniach sprowadzamy ją do postaci znanej z całki arcsin. Wyznaczmy teraz całkę występującą we wzorze {{LinkWzór|1.58}}. Korzystając z przekształceń równania kwadratowego i znanej całki: {{Formuła|<MATH>\int{{dx}\over{\sqrt{1-x^2}}}=\operatorname{arcsin}x</MATH>}}, otrzymujemy: {{CentrujWzór|<MATH> \int_U^{\alpha}{{dE}\over{\sqrt{(\alpha-E)(E-U)}}} =\pi \;</MATH>|1.59}} Wynik ten jest niezwykle elegancki: cała złożona struktura całki sprowadza się do stałej π. Jest to przykład tego, jak geometria ruchu w potencjale jednowymiarowym prowadzi do prostych i pięknych zależności matematycznych. Wzór na całkę {{LinkWzór|1.59}} podstawiamy do {{LinkWzór|1.58}} i całkujemy względem {{Formuła|<MATH>U</MATH>}}. Ostatecznie otrzymujemy: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\pi\sqrt{2m}\,[x_2(\alpha)-x_1(\alpha)] \;</MATH>|1.60}} Uwzględniając przypadek {{Formuła|<MATH>x_2(0)=x_1(0)=0</MATH>}} dla stanu równowagi, to dla {{Formuła|<MATH>\alpha=U</MATH>}} możemy jednocześnie zapisać: {{Formuła|<MATH>x_1(U)=-x_2(U)=x(U)</MATH>}}. Wtedy maksymalne położenie: {{CentrujWzór|<MATH> x(U)={{1}\over{2\pi\sqrt{2m}}}\int_0^U{{T(E)\,dE}\over{\sqrt{U-E}}} \;</MATH>|1.61}} <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> lhhz90my7aaqja4dynkemdts5nj5b3f 559475 559474 2026-10-16T21:32:22Z Persino 2851 /* Tłumiony oscylator harmoniczny */ 559475 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Przykłady ruchów ciał w układzie współrzędnych jednowymiarowych == === Ruch bez działania siły === W tym podrozdziale analizujemy najbardziej fundamentalny, a jednocześnie najprostszy możliwy przypadek ruchu w mechanice klasycznej: ruch ciała, na które '''nie działa żadna siła'''. Jest to sytuacja, która stanowi bezpośrednie ucieleśnienie pierwszej zasady dynamiki Newtona, zwanej również zasadą bezwładności. Zasada ta mówi, że jeśli na ciało nie działa żadna siła wypadkowa, to ciało pozostaje w spoczynku lub porusza się ruchem jednostajnym prostoliniowym. Jest to jedno z najbardziej podstawowych praw fizyki, które opisuje naturalną tendencję ciał do zachowania swojego stanu ruchu. Niech siła działająca na ciało jest równa zero, tzn. {{Formuła|<MATH>\vec{F}=0\;</MATH>}}. Zatem na podstawie {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} możemy napisać równanie ruchu: {{CentrujWzór|<MATH>m\ddot{x}=0\Rightarrow \dot{x}=v\Rightarrow x=vt+a\;</MATH>|1.32}} Równanie {{LinkWzór|1.32}} przedstawia pełny ciąg wnioskowania, który jest niezwykle ważny dla zrozumienia natury ruchu w mechanice Newtonowskiej: * Jeśli siła wypadkowa jest równa zero, to przyspieszenie jest równe zero: ** {{Formuła|<MATH>\ddot{x}=0</MATH>}}. ** Oznacza to, że prędkość ciała nie zmienia się w czasie — nie rośnie, nie maleje, nie zmienia kierunku. * Jeśli przyspieszenie jest zerowe, prędkość jest stała: ** {{Formuła|<MATH>\dot{x}=v</MATH>}}. ** Prędkość ta może być dowolna: dodatnia, ujemna lub równa zero. Jeśli jest równa zero, ciało pozostaje w spoczynku. Jeśli jest różna od zera, ciało porusza się ruchem jednostajnym. * Jeśli prędkość jest stała, położenie zmienia się liniowo w czasie: ** {{Formuła|<MATH>x(t)=vt+a</MATH>}}, ** gdzie {{Formuła|<MATH>a</MATH>}} jest stałą integracji określającą początkowe położenie. ** Oznacza to, że ciało pokonuje równe odcinki drogi w równych odstępach czasu. W ten sposób otrzymujemy klasyczny wynik pierwszej zasady dynamiki Newtona dla ruchu liniowego: * ciało pozostaje w spoczynku lub porusza się ruchem jednostajnym prostoliniowym, * jeśli nie działa na nie żadna siła wypadkowa. Ruch bez działania siły jest jednym z najważniejszych modeli w fizyce, ponieważ stanowi punkt odniesienia dla wszystkich bardziej złożonych przypadków. Każdy ruch, w którym pojawia się przyspieszenie, musi wynikać z działania siły. Jeśli siła znika, ruch natychmiast staje się jednostajny. Jest to fundamentalna cecha mechaniki klasycznej, która odróżnia ją od wielu innych teorii fizycznych. Model ten jest również podstawą pojęcia układu inercjalnego — układu odniesienia, w którym obowiązuje pierwsza zasada Newtona. W takich układach ciała zachowują swój ruch, jeśli nie działają na nie siły. Układy inercjalne są kluczowe dla całej mechaniki klasycznej i stanowią fundament dla dalszych rozdziałów dynamiki. === Spadek ciała tylko pod wpływem jednorodnego pola grawitacyjnego === W tym podrozdziale analizujemy jeden z najbardziej klasycznych i fundamentalnych ruchów w fizyce: spadek ciała w jednorodnym polu grawitacyjnym. Jest to sytuacja, która pojawia się w niezliczonych kontekstach — od ruchu kropli deszczu, przez spadanie kamienia, aż po ruch sond kosmicznych w pobliżu powierzchni planet. Jednorodne pole grawitacyjne jest idealizacją, która doskonale opisuje ruch ciał w pobliżu powierzchni Ziemi, gdzie przyspieszenie grawitacyjne można uznać za stałe. Z drugiej zasady dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}}, w której siła jest napisana wzorem {{Formuła|<MATH>F=ma\;</MATH>}}, i na ciało działa siła grawitacji {{Formuła|<MATH>F=-mg\;</MATH>}}, otrzymujemy równanie ruchu dla naszego przypadku: {{CentrujWzór|<MATH>m\ddot{x}=-mg\;</MATH>|1.33}} Równanie to jest jednym z najprostszych, a jednocześnie najbardziej fundamentalnych równań w fizyce klasycznej. Pokazuje ono, że przyspieszenie ciała jest stałe i równe -g. Jest to kluczowa cecha jednorodnego pola grawitacyjnego: niezależnie od położenia i prędkości, siła grawitacji pozostaje taka sama. Prędkość ciała w zależności od czasu '''t''' opisujemy, wychodząc od równania {{LinkWzór|1.33}}. Całkujemy równanie przyspieszenia: {{CentrujWzór|<MATH>\dot{x}=v=v_0-gt\;</MATH>|1.34}} Wielkość {{Formuła|<MATH>v_0</MATH>}} występująca we wzorze {{LinkWzór|1.34}} jest prędkością początkową ciała, tzn. prędkością w chwili początkowej {{Formuła|<MATH>t=0\;</MATH>}}. Jeśli ciało jest puszczone bez prędkości początkowej, to v₀ = 0, a prędkość rośnie liniowo w czasie. Jeśli ciało jest rzucone w dół lub w górę, prędkość początkowa może być dodatnia lub ujemna. Równanie prędkości możemy przecałkować jeszcze raz względem czasu, otrzymując równanie położenia: {{CentrujWzór|<MATH>x(t)=x_0+v_0t-{{gt^2}\over{2}}\;</MATH>|1.35}} Wzór {{LinkWzór|1.35}} przedstawia klasyczne równanie ruchu ciała spadającego w jednorodnym polu grawitacyjnym. Jest to jedno z najważniejszych równań w całej mechanice klasycznej — opisuje ruch jednostajnie przyspieszony z przyspieszeniem stałym i równym g. W równaniu tym: * {{Formuła|<MATH>x_0</MATH>}} – początkowe położenie ciała, * {{Formuła|<MATH>v_0</MATH>}} – prędkość początkowa, * {{Formuła|<MATH>g</MATH>}} – przyspieszenie grawitacyjne, * ruch jest jednostajnie przyspieszony, * przyspieszenie jest stałe i równe {{Formuła|<MATH>-g</MATH>}}. Równanie to jest podstawą analizy ruchu w polu grawitacyjnym. Opisuje ono idealny spadek ciała bez oporów, co jest doskonałym przybliżeniem dla wielu sytuacji fizycznych. W rzeczywistości opory powietrza mogą zmieniać ruch, lecz w wielu przypadkach — szczególnie dla małych prędkości lub w próżni — równanie to jest dokładne. Otrzymane równania są bezpośrednią konsekwencją drugiej zasady dynamiki Newtona i opisują idealny spadek ciała w polu grawitacyjnym bez oporów. Są one fundamentem całej kinematyki i dynamiki ruchu w polu sił stałych. === Ruch pod wpływem siły tarcia wprost proporcjonalnego do prędkości === W tym podrozdziale analizujemy jeden z najbardziej klasycznych modeli ruchu w ośrodku lepkim: ruch ciała pod wpływem siły tarcia, która jest '''wprost proporcjonalna do prędkości'''. Jest to sytuacja niezwykle często spotykana w fizyce i technice — obejmuje ruch małych cząstek w cieczy, ruch drobnych obiektów w powietrzu przy niewielkich prędkościach, a także ruch elektronów w przewodnikach, gdzie opór jest proporcjonalny do prędkości dryfu. Model ten jest podstawą hydrodynamiki Stokesa, teorii lepkości, a także wielu zagadnień związanych z tłumieniem drgań. Drugą zasadę dynamiki Newtona dla naszego rozważanego przypadku, w którym opory ruchu odbywają się pod wpływem siły tarcia '''wprost proporcjonalnego do prędkości''', zapisujemy równaniem: {{CentrujWzór|<MATH>m\ddot{x}=-\gamma\dot{x}\;</MATH>|1.36}} W powyższym równaniu współczynnik γ jest miarą intensywności oporu ośrodka. Im większa wartość γ, tym silniej ośrodek przeciwdziała ruchowi ciała. Siła oporu ma postać {{Formuła|<MATH>F_{\text{op}}=-\gamma v</MATH>}}, co oznacza, że jest skierowana przeciwnie do prędkości i rośnie liniowo wraz z jej wartością. Jest to model oporu lepkiego, który obowiązuje dla małych prędkości, gdy przepływ wokół ciała jest laminarny. ---- * ''Rozwiązanie równania różniczkowego'' Równanie {{LinkWzór|1.36}} jest liniowym jednorodnym równaniem różniczkowym o stałych współczynnikach. Jest to równanie drugiego rzędu, lecz dzięki swojej strukturze można je rozwiązać metodą podstawienia wykładniczego. Szukamy rozwiązania w postaci: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}}. Podstawiamy tę postać do równania: {{CentrujWzór|<MATH>e^{\lambda t}\left(m\lambda^2+\gamma\lambda\right)=0\Rightarrow m\lambda^2+\gamma\lambda=0\Rightarrow\lambda(m\lambda+\gamma)=0\;</MATH>|1.37}} Ponieważ funkcja wykładnicza nigdy nie jest równa zero, otrzymujemy równanie charakterystyczne: {{Formuła|<MATH>\lambda(m\lambda+\gamma)=0</MATH>}}. Równanie to ma dwa rozwiązania: * {{Formuła|<MATH>\lambda_1=0</MATH>}} — odpowiada rozwiązaniu stałemu, czyli położeniu granicznemu, do którego ciało dąży, * {{Formuła|<MATH>\lambda_2=-\gamma/m</MATH>}} — odpowiada rozwiązaniu wykładniczo malejącemu, które opisuje zanikanie ruchu. Pierwiastek ujemny oznacza, że ruch jest tłumiony: prędkość maleje wykładniczo, a ciało stopniowo zatrzymuje się. ---- * '''Pełne rozwiązanie równania ruchu''' Rozwiązanie ogólne jest kombinacją liniową dwóch rozwiązań: {{CentrujWzór|<MATH>x(t)=A_1+A_2e^{-{{\gamma}\over{m}}t}\;</MATH>|1.38}} W tym równaniu: * {{Formuła|<MATH>A_1</MATH>}} – stała integracji związana z położeniem granicznym, czyli wartością, do której ciało asymptotycznie dąży, * {{Formuła|<MATH>A_2</MATH>}} – stała integracji zależna od warunków początkowych, określająca początkowe wychylenie od położenia granicznego, * człon wykładniczy opisuje '''zanikanie ruchu''' w czasie z charakterystyczną stałą tłumienia ** {{Formuła|<MATH>\tau = m/\gamma</MATH>}}. Stała tłumienia τ określa czas, w którym prędkość maleje e‑krotnie. Im większa lepkość ośrodka (większe γ), tym krótszy czas zanikania ruchu. ---- * '''Interpretacja fizyczna''' Równanie {{LinkWzór|1.38}} opisuje ruch ciała w ośrodku lepkim: * prędkość maleje wykładniczo — jest to charakterystyczna cecha ruchu w ośrodku o oporze liniowym, * ciało asymptotycznie zatrzymuje się — nigdy nie osiąga położenia granicznego w skończonym czasie, lecz zbliża się do niego coraz wolniej, * położenie zbliża się do wartości granicznej {{Formuła|<MATH>A_1</MATH>}} — jest to położenie równowagi w obecności oporu. Model ten jest typowy dla ruchu w ośrodku, w którym opór jest proporcjonalny do prędkości — np. ruch małych obiektów w powietrzu lub w cieczy przy małych prędkościach (reżim Stokesa). W takich warunkach siła oporu nie zależy od kwadratu prędkości, lecz od jej wartości, co prowadzi do wykładniczego zanikania ruchu. Tak otrzymane rozwiązanie jest klasycznym wynikiem mechaniki Newtonowskiej dla ruchu tłumionego liniowo. Jest to jeden z najprostszych, a jednocześnie najbardziej fundamentalnych modeli ruchu w ośrodku lepkim. === Oscylator harmoniczny === Oscylator harmoniczny jest jednym z najbardziej fundamentalnych modeli w całej fizyce klasycznej, kwantowej, statystycznej i technicznej. Jego znaczenie wynika z faktu, że każdy układ fizyczny, który wykonuje niewielkie drgania wokół położenia równowagi, zachowuje się — w pierwszym przybliżeniu — jak oscylator harmoniczny. Dlatego model ten opisuje nie tylko sprężynę z ciężarkiem, lecz także drgania atomów w cząsteczkach, oscylacje planet wokół stabilnych punktów równowagi, drgania pól kwantowych, a nawet fale elektromagnetyczne w rezonatorach. Siłą harmoniczną działającą ze strony sprężynki na ciało jest siła wyrażona jako {{Formuła|<MATH>F=-kx\;</MATH>}}, co oznacza, że siła jest proporcjonalna do wychylenia i skierowana przeciwnie do niego. Jest to klasyczna postać prawa Hooke’a, które obowiązuje dla niewielkich odkształceń sprężyny. Dlatego w takim przypadku druga zasada dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} przyjmuje postać: {{CentrujWzór|<MATH>m\ddot{x}=-kx\;</MATH>|1.39}} Równanie to jest jednym z najprostszych, a jednocześnie najbardziej fundamentalnych równań różniczkowych w fizyce. Opisuje ono ruch ciała pod wpływem siły proporcjonalnej do wychylenia. Jest to równanie liniowe o stałych współczynnikach, które prowadzi do sinusoidalnych rozwiązań. ---- * '''Rozwiązanie równania różniczkowego''' Poszukujemy rozwiązania równania różniczkowego {{LinkWzór|1.39}} w postaci funkcji wykładniczej: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}} Jest to standardowa metoda rozwiązywania równań liniowych. Podstawienie funkcji wykładniczej pozwala sprowadzić równanie różniczkowe do równania algebraicznego, co znacznie upraszcza analizę. Podstawiamy tę postać do równania: {{CentrujWzór|<MATH>m\lambda^2+k=0\Rightarrow\lambda=\pm i\sqrt{{k}\over{m}}=\pm i\omega_0\;</MATH>|1.40}} Otrzymujemy dwa pierwiastki zespolone, co oznacza, że rozwiązanie jest sinusoidalne. Wielkość {{Formuła|<MATH>\omega_0=\sqrt{k/m}</MATH>}} jest częstością własną oscylatora harmonicznego — fundamentalną wielkością opisującą szybkość drgań. Częstość własna zależy wyłącznie od masy i stałej sprężystości. Im większa sprężystość, tym szybsze drgania; im większa masa, tym drgania wolniejsze. ---- * '''Pełne rozwiązanie równania ruchu''' Na podstawie końcowego wniosku wynikowego {{LinkWzór|1.40}}, możemy napisać położenie ciała znajdującego się na końcu sprężynki: {{CentrujWzór|<MATH>x(t)=A_1e^{i\omega_0 t}+A_2e^{-i\omega_0 t}=A\sin(\omega_0 t+\phi)\;</MATH>|1.41}} Rozwiązanie to jest klasyczną postacią sinusoidalnego ruchu harmonicznego. Stałe: * {{Formuła|<MATH>A_1, A_2</MATH>}} – stałe integracji wynikające z warunków początkowych, * {{Formuła|<MATH>A</MATH>}} – amplituda drgań, określająca maksymalne wychylenie, * {{Formuła|<MATH>\phi</MATH>}} – faza początkowa, określająca przesunięcie czasowe drgań. Rozwiązanie sinusoidalne wynika z faktu, że pierwiastki równania charakterystycznego są czysto urojone. Oznacza to, że układ wykonuje drgania bez tłumienia, a energia kinetyczna i potencjalna wymieniają się cyklicznie. ---- * '''Interpretacja fizyczna''' Równanie {{LinkWzór|1.41}} opisuje klasyczne drgania harmoniczne: * ruch jest '''okresowy''', co oznacza, że powtarza się w regularnych odstępach czasu, * częstość drgań zależy tylko od stosunku {{Formuła|<MATH>k/m</MATH>}}, * rozwiązanie jest sinusoidalne, co wynika z zespolonej postaci funkcji wykładniczej. Oscylator harmoniczny jest jednym z najważniejszych modeli w fizyce — opisuje m.in.: * drgania sprężyn, * wahadła dla małych wychyleń, * oscylacje atomów w cząsteczkach, * drgania pól kwantowych, * fale elektromagnetyczne w rezonatorach, * oscylacje planet wokół stabilnych punktów równowagi. Model ten jest tak uniwersalny, że stanowi fundament niemal każdej dziedziny fizyki. Jego prostota matematyczna i ogromna moc opisowa sprawiają, że jest jednym z najczęściej używanych narzędzi w całej nauce. === Tłumiony oscylator harmoniczny === W tłumionym oscylatorze harmonicznym, oprócz siły harmonicznej działającej ze strony sprężynki, działa również '''siła tłumiąca ruch''', która zależy od prędkości ciała. Jest to sytuacja niezwykle często spotykana w fizyce klasycznej i technice: tłumienie występuje w amortyzatorach samochodowych, w układach drgających maszyn, w oscylacjach konstrukcji budowlanych, w drganiach atomów w ośrodkach lepkich, a nawet w układach elektronicznych, gdzie tłumienie odpowiada stratom energii. Siła tłumiąca jest zawsze skierowana przeciwnie do prędkości i powoduje stopniowe zmniejszanie amplitudy drgań. W takim przypadku drugą zasadę dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} zapisujemy: {{CentrujWzór|<MATH>m\ddot{x}=-kx-2m\beta\dot{x}\;</MATH>|1.42}} W powyższym wzorze oznaczyliśmy {{Formuła|<MATH>\beta=\gamma/(2m)</MATH>}}, czyli tzw. '''zredukowany współczynnik tłumienia'''. Współczynnik ten określa intensywność tłumienia: im większa wartość β, tym szybciej energia układu jest tracona. Tłumienie jest procesem nieodwracalnym — energia mechaniczna zamienia się na ciepło lub inne formy energii, które nie wracają do układu drgającego. ---- * '''Częstotliwość drgań nie tłumionych''' Zanim przejdziemy do analizy tłumienia, przypomnijmy definicję częstości własnej oscylatora harmonicznego. Jest to częstość drgań w przypadku braku tłumienia, czyli gdy β=0. Częstość ta zależy wyłącznie od masy i stałej sprężystości: {{CentrujWzór|<MATH>\omega_0=\sqrt{{k\over m}}\;</MATH>|1.43}} Częstotliwość własna jest fundamentalną wielkością opisującą układ drgający. Określa ona, jak szybko układ drga w idealnych warunkach, bez strat energii. Jest to częstość naturalna układu, wynikająca z jego geometrii i właściwości fizycznych. Równanie {{LinkWzór|1.42}} przy oznaczeniach {{LinkWzór|1.43}} zapisujemy: {{CentrujWzór|<MATH>\ddot{x}+2\beta\dot{x}+\omega_0^2x=0\;</MATH>|1.44}} Równanie to jest podstawowym równaniem tłumionego oscylatora harmonicznego. Zawiera ono trzy składniki: przyspieszenie, tłumienie proporcjonalne do prędkości oraz siłę sprężystości proporcjonalną do wychylenia. Każdy z tych składników odgrywa kluczową rolę w dynamice układu. ---- * '''Rozwiązanie równania różniczkowego''' Aby rozwiązać równanie {{LinkWzór|1.44}}, podstawiamy rozwiązanie w postaci wykładniczej: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}} Jest to standardowa metoda rozwiązywania równań liniowych o stałych współczynnikach. Podstawienie to pozwala sprowadzić równanie różniczkowe do równania algebraicznego. Otrzymujemy równanie charakterystyczne: {{CentrujWzór|<MATH>\lambda^2+2\beta\lambda+\omega_0^2=0\;</MATH>|1.45}} Równanie charakterystyczne jest równaniem kwadratowym, którego pierwiastki określają rodzaj ruchu. W zależności od wartości β względem ω₀ otrzymujemy trzy różne typy ruchu: silnie tłumiony, słabo tłumiony i krytycznie tłumiony. Rozwiązanie równania kwadratowego: {{CentrujWzór|<MATH>\lambda={{-2\beta\pm\sqrt{4\beta^2-4\omega_0^2}}\over 2}=-\beta\pm\sqrt{\beta^2-\omega_0^2}\;</MATH>|1.46}} Pierwiastki równania charakterystycznego decydują o tym, czy ruch jest oscylacyjny, czy nie. Jeśli pierwiastek jest zespolony, ruch jest sinusoidalny z malejącą amplitudą. Jeśli pierwiastki są rzeczywiste, ruch nie jest oscylacyjny — ciało wraca do równowagi bez drgań. ---- * '''Silne tłumienie''' {{Formuła|<MATH>\beta>\omega_0</MATH>}} W tym przypadku pierwiastki równania charakterystycznego są '''rzeczywiste i ujemne''': {{CentrujWzór|<MATH>x(t)=Ae^{\lambda_1 t}+Be^{\lambda_2 t}\;</MATH>|1.47}} Ruch nie jest oscylacyjny — ciało wraca do położenia równowagi bez drgań. Jest to sytuacja, w której tłumienie jest tak silne, że układ nie ma „siły” wykonywać drgań. Zamiast tego wychylenie maleje monotonicznie. Taki ruch występuje np. w amortyzatorach samochodowych, które mają za zadanie tłumić drgania jak najszybciej. ---- * '''Słabe tłumienie''' {{Formuła|<MATH>\beta<\omega_0</MATH>}} W tym przypadku pierwiastki są '''zespolone''', a ruch pozostaje oscylacyjny: {{CentrujWzór|<MATH>x(t)=Ae^{-\beta t}\sin\left(\sqrt{\omega_0^2-\beta^2}\,t+\phi\right)\;</MATH>|1.48}} Częstotliwość drgań tłumionych wynosi: {{Formuła|<MATH>\omega=\sqrt{\omega_0^2-\beta^2}</MATH>}}. Amplituda maleje wykładniczo. Jest to najbardziej klasyczny przypadek tłumionego ruchu: ciało drga, lecz z każdą chwilą amplituda jest mniejsza. Taki ruch występuje np. w wahadłach w powietrzu, w drganiach strun, w oscylacjach atomów w ośrodkach lepkich. ---- * '''Przypadek graniczny''' {{Formuła|<MATH>\beta=\omega_0</MATH>}} W tym przypadku równanie charakterystyczne ma '''podwójny pierwiastek''': {{CentrujWzór|<MATH>x(t)=Ae^{-\beta t}(1+at)\;</MATH>|1.49}} Ruch nie jest oscylacyjny, ale ciało wraca do równowagi '''najszybciej możliwie bez oscylacji''' — jest to tzw. '''tłumienie krytyczne'''. Jest to przypadek szczególny, w którym układ wraca do równowagi w minimalnym czasie, bez wykonywania drgań. Tłumienie krytyczne jest idealne w układach technicznych, gdzie zależy nam na szybkim wygaszeniu drgań bez oscylacji. ---- Wszystkie trzy przypadki (silne, słabe i krytyczne tłumienie) wynikają bezpośrednio z analizy równania charakterystycznego {{LinkWzór|1.45}} i stanowią pełną klasyfikację ruchu tłumionego oscylatora harmonicznego. Każdy z tych przypadków ma ogromne znaczenie praktyczne i teoretyczne. Tłumienie jest jednym z najważniejszych zjawisk w fizyce klasycznej — bez tłumienia drgania trwałyby wiecznie, co nie zdarza się w rzeczywistych układach. Dzięki tłumieniu energia układu jest stopniowo tracona, a ruch wygasa. === Ruch ciała pod wpływem dowolnej siły zależnej od położenia === W tym podrozdziale zajmiemy się jednym z najbardziej fundamentalnych i jednocześnie najbardziej ogólnych zagadnień mechaniki klasycznej: ruchem ciała pod wpływem siły, która zależy wyłącznie od położenia. Jest to sytuacja niezwykle często spotykana w fizyce — obejmuje ruch w polu grawitacyjnym, w polu sprężystości, w polu elektrostatycznym, a także w dowolnym potencjale jednowymiarowym. Zależność siły od położenia jest kluczowa, ponieważ pozwala wprowadzić pojęcie energii potencjalnej, a tym samym zastosować zasadę zachowania energii, która jest jednym z najpotężniejszych narzędzi w całej mechanice. Napiszmy wzór na drugą zasadę dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}}, w której siła niezrównoważona pochodzi od '''sił potencjalnych''' działających na ciało. Mamy zatem równanie: {{CentrujWzór|<MATH>m\ddot{x}=F(x)\;</MATH>}} Równanie to jest punktem wyjścia do całej analizy. Pokazuje ono, że przyspieszenie ciała jest bezpośrednio związane z siłą działającą na ciało, a ta siła zależy od położenia. Jest to równanie różniczkowe drugiego rzędu, które w ogólności może być trudne do rozwiązania, lecz w przypadku sił potencjalnych możemy zastosować metodę znacznie prostszą i bardziej elegancką. Mnożymy obustronnie przez prędkość {{Formuła|<MATH>\dot{x}</MATH>}} i korzystamy z definicji energii potencjalnej: {{Formuła|<MATH>U(x)=-\int F(x)\,dx</MATH>}}. Ten krok jest kluczowy: mnożenie przez prędkość pozwala przekształcić równanie ruchu w równanie energii. Jest to jedna z najważniejszych sztuczek w mechanice analitycznej. Dzięki niej możemy przejść od równania różniczkowego do równania algebraicznego, które jest znacznie łatwiejsze do analizy. Wtedy otrzymujemy tożsamość, którą możemy przecałkować względem czasu: {{CentrujWzór|<MATH>{{d}\over{dt}}\left({{m\dot{x}^2}\over{2}}\right)=-{{d}\over{dt}}U(x)\Rightarrow {{1}\over{2}}m\dot{x}^2=E-U(x)\;</MATH>|1.50}} Równanie {{LinkWzór|1.50}} jest równaniem energii całkowitej. Pokazuje ono, że suma energii kinetycznej i potencjalnej jest stała i równa całkowitej energii E. Jest to jedno z najważniejszych równań w całej fizyce klasycznej. Dzięki niemu możemy analizować ruch bez konieczności rozwiązywania równania różniczkowego — wystarczy znać zależność U(x), aby określić prędkość, a tym samym cały ruch. ---- * Rozdzielanie zmiennych: Równanie {{LinkWzór|1.50}} możemy rozwiązać metodą rozdzielania zmiennych. Jest to metoda, która pozwala przekształcić równanie różniczkowe w całkę, którą można obliczyć lub przynajmniej przeanalizować. {{CentrujWzór|<MATH>dt={{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)} }}\Rightarrow t-t_0=\int_{x_0}^x{{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)}}}\;</MATH>|1.51}} Wzór {{LinkWzór|1.51}} jest jednym z najważniejszych wzorów w mechanice analitycznej. Pokazuje on, że czas ruchu można wyrazić jako całkę z odwrotności prędkości. Prędkość zależy od różnicy między energią całkowitą a potencjałem, co oznacza, że czas ruchu jest bezpośrednio związany z geometrią potencjału. ---- * Energia potencjalna sprężyny Dla siły sprężystości {{Formuła|<MATH>F=-kx</MATH>}} energia potencjalna wynosi: {{CentrujWzór|<MATH>U(x)=-\int F\,dx=-\int(-kx)\,dx={{k}\over{2}}x^2\;</MATH>|1.52}} Wzór {{LinkWzór|1.52}} jest klasycznym wynikiem: energia potencjalna sprężyny jest proporcjonalna do kwadratu wychylenia. Jest to potencjał harmoniczny, który prowadzi do ruchu sinusoidalnego. Jest to jeden z najważniejszych potencjałów w fizyce — pojawia się w drganiach atomów, w oscylacjach planet, w falach elektromagnetycznych, w kwantowych oscylatorach harmonicznych i w niezliczonych innych sytuacjach. ---- * Podstawienie do równania ruchu Podstawiamy {{LinkWzór|1.52}} do równania {{LinkWzór|1.51}}: {{CentrujWzór|<MATH> t=t_0+\int_{x_0}^x{{dx}\over{\sqrt{{{2}\over{m}}\left(E-{{1}\over{2}}kx^2\right)}}} =t_0+\sqrt{{{m}\over{k}}}\int_{x_0}^x{{dx\sqrt{{{k}\over{m}}}}\over{\sqrt{{{{2E}\over{m}}}-{{k}\over{m}}x^2}}} =t_0+\sqrt{{{m}\over{k}}}\operatorname{arcsin}\left(\sqrt{{{k}\over{2E}}}\,x\right) \;</MATH>|1.53}} Wzór {{LinkWzór|1.53}} jest niezwykle elegancki: pokazuje, że czas ruchu w potencjale harmonicznym jest funkcją arcsin. Jest to bezpośrednia konsekwencja tego, że potencjał harmoniczny prowadzi do ruchu sinusoidalnego. Cała struktura ruchu jest zakodowana w funkcjach trygonometrycznych. ---- * Odwrócenie zależności: położenie jako funkcja czasu Odwracając równanie {{LinkWzór|1.53}}, otrzymujemy zależność położenia od czasu: {{CentrujWzór|<MATH>x=\sqrt{{{2E}\over{k}}}\sin\left(\sqrt{{k\over m}}\,(t-t_0)\right)\;</MATH>|1.54}} Wzór {{LinkWzór|1.54}} jest pełnym rozwiązaniem ruchu ciała w polu sił sprężystości. Pokazuje on, że ruch jest sinusoidalny, z amplitudą zależną od energii i częstością zależną od stałej sprężystości i masy. Jest to jedno z najbardziej klasycznych rozwiązań w całej fizyce. ---- * Interpretacja fizyczna Wzór {{LinkWzór|1.54}} jest **pełnym rozwiązaniem ruchu ciała w polu sił sprężystości**, wyprowadzonym z zasady zachowania energii. Pokazuje on, że: * ruch jest '''harmoniczny''', * amplituda drgań wynosi {{Formuła|<MATH>A=\sqrt{2E/k}</MATH>}}, * częstość drgań jest równa {{Formuła|<MATH>\omega_0=\sqrt{k/m}</MATH>}}, * rozwiązanie zależy wyłącznie od energii całkowitej, masy i stałej sprężystości. W ten sposób otrzymujemy klasyczne równanie ruchu oscylatora harmonicznego, wyprowadzone **nie z równania różniczkowego**, lecz '''z zasady zachowania energii'''. Jest to przykład tego, jak potężna jest metoda energii w mechanice analitycznej — pozwala ona uzyskać pełne rozwiązanie ruchu bez konieczności rozwiązywania równania różniczkowego drugiego rzędu. === Określenie położenia maksymalnego na podstawie okresu drgań === W tym podrozdziale zajmiemy się jednym z najbardziej eleganckich i głębokich wyników klasycznej teorii drgań: zależnością między okresem drgań T(E) a maksymalnym położeniem ciała x(E) w jednowymiarowym potencjale U(x). Jest to zagadnienie o fundamentalnym znaczeniu, ponieważ pozwala odwrócić typowy sposób myślenia o ruchu drgającym. Zwykle bowiem zakładamy, że znamy potencjał U(x), a następnie wyznaczamy okres drgań T(E). Tutaj natomiast pokażemy, że można wykonać operację odwrotną: znając okres drgań jako funkcję energii, możemy odtworzyć maksymalne położenie x(E), a tym samym strukturę potencjału. Jest to niezwykle potężne narzędzie, wykorzystywane w fizyce klasycznej, kwantowej, w teorii oscylatorów, w analizie ruchu planetarnego, a także w metodach odwrotnych w mechanice analitycznej. Zależność ta pokazuje, że informacja o czasie ruchu zawiera w sobie pełną informację o geometrii potencjału. Innymi słowy — czas jest nośnikiem struktury przestrzennej. Weźmy pod uwagę różniczkę czasu określoną na podstawie jego zależności od różniczki położenia, daną wzorem {{LinkWzór|1.51}}. Różniczka ta jest kluczowa, ponieważ pozwala wyrazić czas jako całkę z odwrotności prędkości. Prędkość natomiast zależy od różnicy między energią całkowitą E a potencjałem U(x). Dzięki temu możemy powiązać czas ruchu z geometrią potencjału. Okres drgań możemy określić jako podwojoną wartość czasu, w jakim nasze badane ciało przechodzi z jednego maksymalnego położenia do drugiego. Jest to naturalne, ponieważ ruch w potencjale jednowymiarowym jest odwracalny: ciało wraca dokładnie tą samą drogą, z tą samą prędkością, lecz w przeciwnym kierunku. Dlatego całka od x₁(E) do x₂(E) opisuje tylko połowę ruchu — drugą połowę otrzymujemy przez symetrię. {{CentrujWzór|<MATH>T(E)=2\int_{x_1(E)}^{x_2(E)}{{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)} }}=\sqrt{2m}\int_{x_1(E)}^{x_2(E)}{{dx}\over{\sqrt{E-U(x)}}}\;</MATH>|1.55}} Wzór {{LinkWzór|1.55}} jest jednym z najważniejszych wzorów w teorii drgań. Pokazuje on, że okres drgań zależy od całki z odwrotności prędkości, a prędkość zależy od różnicy między energią całkowitą E a potencjałem U(x). Im większa energia, tym dalej ciało dociera, a tym samym okres drgań może się zmieniać. W przypadku potencjałów niesymetrycznych zależność ta może być bardzo złożona, lecz nadal pozostaje w pełni deterministyczna. Patrząc na wzór {{LinkWzór|1.55}}, okres drgań możemy zapisać, całkując po energii od {{Formuła|<MATH>0</MATH>}} do {{Formuła|<MATH>E</MATH>}} i od {{Formuła|<MATH>E</MATH>}} do {{Formuła|<MATH>0</MATH>}}. Po podziale całki na dwa składniki otrzymujemy: {{CentrujWzór|<MATH> T(E)=\sqrt{2m}\int_0^E{{dx_2(U)}\over{dU}}{{dU}\over{\sqrt{E-U}}} +\sqrt{2m}\int_E^0{{dx_1(U)}\over{dU}}{{dU}\over{\sqrt{E-U}}} =\sqrt{2m}\int_0^E\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]{{dU}\over{\sqrt{E-U}}} \;</MATH>|1.56}} Wzór {{LinkWzór|1.56}} jest kluczowy: pokazuje, że okres drgań można wyrazić jako całkę po energii, w której pojawia się różnica pochodnych położenia granicznego x₂(U) i x₁(U). Ta różnica jest niczym innym jak szerokością dostępnego obszaru ruchu dla danej energii. Innymi słowy, okres drgań zależy od tego, jak szeroki jest „przedział ruchu” przy danej energii. Dzielimy obie strony równości {{LinkWzór|1.56}} przez wyrażenie zależne od {{Formuła|<MATH>\alpha</MATH>}} i energii całkowitej {{Formuła|<MATH>E</MATH>}}: {{Formuła|<MATH>\sqrt{\alpha-E}</MATH>}} i całkujemy względem {{Formuła|<MATH>E</MATH>}} od {{Formuła|<MATH>0</MATH>}} do {{Formuła|<MATH>\alpha</MATH>}}: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\sqrt{2m}\int_0^{\alpha}\int_0^E\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]{{dU\,dE}\over{\sqrt{(\alpha-E)(E-U)}}} \;</MATH>|1.57}} Wzór {{LinkWzór|1.57}} jest przykładem zastosowania całkowania iterowanego. Zmieniamy kolejność całkowania, co jest klasyczną techniką w analizie matematycznej, pozwalającą uprościć złożone wyrażenia. We wzorze {{LinkWzór|1.57}} zmieniamy kolejność całkowania w całce podwójnej: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\sqrt{2m}\int_0^{\alpha}\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]dU \int_U^{\alpha}{{dE}\over{\sqrt{(\alpha-E)(E-U)}}} \;</MATH>|1.58}} Teraz kluczowym krokiem jest wyznaczenie całki wewnętrznej. Jest to całka o bardzo charakterystycznej strukturze: pod pierwiastkiem występuje iloczyn dwóch wyrażeń liniowych w E. Po odpowiednich przekształceniach sprowadzamy ją do postaci znanej z całki arcsin. Wyznaczmy teraz całkę występującą we wzorze {{LinkWzór|1.58}}. Korzystając z przekształceń równania kwadratowego i znanej całki: {{Formuła|<MATH>\int{{dx}\over{\sqrt{1-x^2}}}=\operatorname{arcsin}x</MATH>}}, otrzymujemy: {{CentrujWzór|<MATH> \int_U^{\alpha}{{dE}\over{\sqrt{(\alpha-E)(E-U)}}} =\pi \;</MATH>|1.59}} Wynik ten jest niezwykle elegancki: cała złożona struktura całki sprowadza się do stałej π. Jest to przykład tego, jak geometria ruchu w potencjale jednowymiarowym prowadzi do prostych i pięknych zależności matematycznych. Wzór na całkę {{LinkWzór|1.59}} podstawiamy do {{LinkWzór|1.58}} i całkujemy względem {{Formuła|<MATH>U</MATH>}}. Ostatecznie otrzymujemy: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\pi\sqrt{2m}\,[x_2(\alpha)-x_1(\alpha)] \;</MATH>|1.60}} Uwzględniając przypadek {{Formuła|<MATH>x_2(0)=x_1(0)=0</MATH>}} dla stanu równowagi, to dla {{Formuła|<MATH>\alpha=U</MATH>}} możemy jednocześnie zapisać: {{Formuła|<MATH>x_1(U)=-x_2(U)=x(U)</MATH>}}. Wtedy maksymalne położenie: {{CentrujWzór|<MATH> x(U)={{1}\over{2\pi\sqrt{2m}}}\int_0^U{{T(E)\,dE}\over{\sqrt{U-E}}} \;</MATH>|1.61}} <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> gjoakli7a6s8bqympxpz5tyevzvhbdb 559476 559475 2026-10-16T21:45:55Z Persino 2851 /* Ruch ciała pod wpływem dowolnej siły zależnej od położenia */ 559476 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Przykłady ruchów ciał w układzie współrzędnych jednowymiarowych == === Ruch bez działania siły === W tym podrozdziale analizujemy najbardziej fundamentalny, a jednocześnie najprostszy możliwy przypadek ruchu w mechanice klasycznej: ruch ciała, na które '''nie działa żadna siła'''. Jest to sytuacja, która stanowi bezpośrednie ucieleśnienie pierwszej zasady dynamiki Newtona, zwanej również zasadą bezwładności. Zasada ta mówi, że jeśli na ciało nie działa żadna siła wypadkowa, to ciało pozostaje w spoczynku lub porusza się ruchem jednostajnym prostoliniowym. Jest to jedno z najbardziej podstawowych praw fizyki, które opisuje naturalną tendencję ciał do zachowania swojego stanu ruchu. Niech siła działająca na ciało jest równa zero, tzn. {{Formuła|<MATH>\vec{F}=0\;</MATH>}}. Zatem na podstawie {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} możemy napisać równanie ruchu: {{CentrujWzór|<MATH>m\ddot{x}=0\Rightarrow \dot{x}=v\Rightarrow x=vt+a\;</MATH>|1.32}} Równanie {{LinkWzór|1.32}} przedstawia pełny ciąg wnioskowania, który jest niezwykle ważny dla zrozumienia natury ruchu w mechanice Newtonowskiej: * Jeśli siła wypadkowa jest równa zero, to przyspieszenie jest równe zero: ** {{Formuła|<MATH>\ddot{x}=0</MATH>}}. ** Oznacza to, że prędkość ciała nie zmienia się w czasie — nie rośnie, nie maleje, nie zmienia kierunku. * Jeśli przyspieszenie jest zerowe, prędkość jest stała: ** {{Formuła|<MATH>\dot{x}=v</MATH>}}. ** Prędkość ta może być dowolna: dodatnia, ujemna lub równa zero. Jeśli jest równa zero, ciało pozostaje w spoczynku. Jeśli jest różna od zera, ciało porusza się ruchem jednostajnym. * Jeśli prędkość jest stała, położenie zmienia się liniowo w czasie: ** {{Formuła|<MATH>x(t)=vt+a</MATH>}}, ** gdzie {{Formuła|<MATH>a</MATH>}} jest stałą integracji określającą początkowe położenie. ** Oznacza to, że ciało pokonuje równe odcinki drogi w równych odstępach czasu. W ten sposób otrzymujemy klasyczny wynik pierwszej zasady dynamiki Newtona dla ruchu liniowego: * ciało pozostaje w spoczynku lub porusza się ruchem jednostajnym prostoliniowym, * jeśli nie działa na nie żadna siła wypadkowa. Ruch bez działania siły jest jednym z najważniejszych modeli w fizyce, ponieważ stanowi punkt odniesienia dla wszystkich bardziej złożonych przypadków. Każdy ruch, w którym pojawia się przyspieszenie, musi wynikać z działania siły. Jeśli siła znika, ruch natychmiast staje się jednostajny. Jest to fundamentalna cecha mechaniki klasycznej, która odróżnia ją od wielu innych teorii fizycznych. Model ten jest również podstawą pojęcia układu inercjalnego — układu odniesienia, w którym obowiązuje pierwsza zasada Newtona. W takich układach ciała zachowują swój ruch, jeśli nie działają na nie siły. Układy inercjalne są kluczowe dla całej mechaniki klasycznej i stanowią fundament dla dalszych rozdziałów dynamiki. === Spadek ciała tylko pod wpływem jednorodnego pola grawitacyjnego === W tym podrozdziale analizujemy jeden z najbardziej klasycznych i fundamentalnych ruchów w fizyce: spadek ciała w jednorodnym polu grawitacyjnym. Jest to sytuacja, która pojawia się w niezliczonych kontekstach — od ruchu kropli deszczu, przez spadanie kamienia, aż po ruch sond kosmicznych w pobliżu powierzchni planet. Jednorodne pole grawitacyjne jest idealizacją, która doskonale opisuje ruch ciał w pobliżu powierzchni Ziemi, gdzie przyspieszenie grawitacyjne można uznać za stałe. Z drugiej zasady dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}}, w której siła jest napisana wzorem {{Formuła|<MATH>F=ma\;</MATH>}}, i na ciało działa siła grawitacji {{Formuła|<MATH>F=-mg\;</MATH>}}, otrzymujemy równanie ruchu dla naszego przypadku: {{CentrujWzór|<MATH>m\ddot{x}=-mg\;</MATH>|1.33}} Równanie to jest jednym z najprostszych, a jednocześnie najbardziej fundamentalnych równań w fizyce klasycznej. Pokazuje ono, że przyspieszenie ciała jest stałe i równe -g. Jest to kluczowa cecha jednorodnego pola grawitacyjnego: niezależnie od położenia i prędkości, siła grawitacji pozostaje taka sama. Prędkość ciała w zależności od czasu '''t''' opisujemy, wychodząc od równania {{LinkWzór|1.33}}. Całkujemy równanie przyspieszenia: {{CentrujWzór|<MATH>\dot{x}=v=v_0-gt\;</MATH>|1.34}} Wielkość {{Formuła|<MATH>v_0</MATH>}} występująca we wzorze {{LinkWzór|1.34}} jest prędkością początkową ciała, tzn. prędkością w chwili początkowej {{Formuła|<MATH>t=0\;</MATH>}}. Jeśli ciało jest puszczone bez prędkości początkowej, to v₀ = 0, a prędkość rośnie liniowo w czasie. Jeśli ciało jest rzucone w dół lub w górę, prędkość początkowa może być dodatnia lub ujemna. Równanie prędkości możemy przecałkować jeszcze raz względem czasu, otrzymując równanie położenia: {{CentrujWzór|<MATH>x(t)=x_0+v_0t-{{gt^2}\over{2}}\;</MATH>|1.35}} Wzór {{LinkWzór|1.35}} przedstawia klasyczne równanie ruchu ciała spadającego w jednorodnym polu grawitacyjnym. Jest to jedno z najważniejszych równań w całej mechanice klasycznej — opisuje ruch jednostajnie przyspieszony z przyspieszeniem stałym i równym g. W równaniu tym: * {{Formuła|<MATH>x_0</MATH>}} – początkowe położenie ciała, * {{Formuła|<MATH>v_0</MATH>}} – prędkość początkowa, * {{Formuła|<MATH>g</MATH>}} – przyspieszenie grawitacyjne, * ruch jest jednostajnie przyspieszony, * przyspieszenie jest stałe i równe {{Formuła|<MATH>-g</MATH>}}. Równanie to jest podstawą analizy ruchu w polu grawitacyjnym. Opisuje ono idealny spadek ciała bez oporów, co jest doskonałym przybliżeniem dla wielu sytuacji fizycznych. W rzeczywistości opory powietrza mogą zmieniać ruch, lecz w wielu przypadkach — szczególnie dla małych prędkości lub w próżni — równanie to jest dokładne. Otrzymane równania są bezpośrednią konsekwencją drugiej zasady dynamiki Newtona i opisują idealny spadek ciała w polu grawitacyjnym bez oporów. Są one fundamentem całej kinematyki i dynamiki ruchu w polu sił stałych. === Ruch pod wpływem siły tarcia wprost proporcjonalnego do prędkości === W tym podrozdziale analizujemy jeden z najbardziej klasycznych modeli ruchu w ośrodku lepkim: ruch ciała pod wpływem siły tarcia, która jest '''wprost proporcjonalna do prędkości'''. Jest to sytuacja niezwykle często spotykana w fizyce i technice — obejmuje ruch małych cząstek w cieczy, ruch drobnych obiektów w powietrzu przy niewielkich prędkościach, a także ruch elektronów w przewodnikach, gdzie opór jest proporcjonalny do prędkości dryfu. Model ten jest podstawą hydrodynamiki Stokesa, teorii lepkości, a także wielu zagadnień związanych z tłumieniem drgań. Drugą zasadę dynamiki Newtona dla naszego rozważanego przypadku, w którym opory ruchu odbywają się pod wpływem siły tarcia '''wprost proporcjonalnego do prędkości''', zapisujemy równaniem: {{CentrujWzór|<MATH>m\ddot{x}=-\gamma\dot{x}\;</MATH>|1.36}} W powyższym równaniu współczynnik γ jest miarą intensywności oporu ośrodka. Im większa wartość γ, tym silniej ośrodek przeciwdziała ruchowi ciała. Siła oporu ma postać {{Formuła|<MATH>F_{\text{op}}=-\gamma v</MATH>}}, co oznacza, że jest skierowana przeciwnie do prędkości i rośnie liniowo wraz z jej wartością. Jest to model oporu lepkiego, który obowiązuje dla małych prędkości, gdy przepływ wokół ciała jest laminarny. ---- * ''Rozwiązanie równania różniczkowego'' Równanie {{LinkWzór|1.36}} jest liniowym jednorodnym równaniem różniczkowym o stałych współczynnikach. Jest to równanie drugiego rzędu, lecz dzięki swojej strukturze można je rozwiązać metodą podstawienia wykładniczego. Szukamy rozwiązania w postaci: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}}. Podstawiamy tę postać do równania: {{CentrujWzór|<MATH>e^{\lambda t}\left(m\lambda^2+\gamma\lambda\right)=0\Rightarrow m\lambda^2+\gamma\lambda=0\Rightarrow\lambda(m\lambda+\gamma)=0\;</MATH>|1.37}} Ponieważ funkcja wykładnicza nigdy nie jest równa zero, otrzymujemy równanie charakterystyczne: {{Formuła|<MATH>\lambda(m\lambda+\gamma)=0</MATH>}}. Równanie to ma dwa rozwiązania: * {{Formuła|<MATH>\lambda_1=0</MATH>}} — odpowiada rozwiązaniu stałemu, czyli położeniu granicznemu, do którego ciało dąży, * {{Formuła|<MATH>\lambda_2=-\gamma/m</MATH>}} — odpowiada rozwiązaniu wykładniczo malejącemu, które opisuje zanikanie ruchu. Pierwiastek ujemny oznacza, że ruch jest tłumiony: prędkość maleje wykładniczo, a ciało stopniowo zatrzymuje się. ---- * '''Pełne rozwiązanie równania ruchu''' Rozwiązanie ogólne jest kombinacją liniową dwóch rozwiązań: {{CentrujWzór|<MATH>x(t)=A_1+A_2e^{-{{\gamma}\over{m}}t}\;</MATH>|1.38}} W tym równaniu: * {{Formuła|<MATH>A_1</MATH>}} – stała integracji związana z położeniem granicznym, czyli wartością, do której ciało asymptotycznie dąży, * {{Formuła|<MATH>A_2</MATH>}} – stała integracji zależna od warunków początkowych, określająca początkowe wychylenie od położenia granicznego, * człon wykładniczy opisuje '''zanikanie ruchu''' w czasie z charakterystyczną stałą tłumienia ** {{Formuła|<MATH>\tau = m/\gamma</MATH>}}. Stała tłumienia τ określa czas, w którym prędkość maleje e‑krotnie. Im większa lepkość ośrodka (większe γ), tym krótszy czas zanikania ruchu. ---- * '''Interpretacja fizyczna''' Równanie {{LinkWzór|1.38}} opisuje ruch ciała w ośrodku lepkim: * prędkość maleje wykładniczo — jest to charakterystyczna cecha ruchu w ośrodku o oporze liniowym, * ciało asymptotycznie zatrzymuje się — nigdy nie osiąga położenia granicznego w skończonym czasie, lecz zbliża się do niego coraz wolniej, * położenie zbliża się do wartości granicznej {{Formuła|<MATH>A_1</MATH>}} — jest to położenie równowagi w obecności oporu. Model ten jest typowy dla ruchu w ośrodku, w którym opór jest proporcjonalny do prędkości — np. ruch małych obiektów w powietrzu lub w cieczy przy małych prędkościach (reżim Stokesa). W takich warunkach siła oporu nie zależy od kwadratu prędkości, lecz od jej wartości, co prowadzi do wykładniczego zanikania ruchu. Tak otrzymane rozwiązanie jest klasycznym wynikiem mechaniki Newtonowskiej dla ruchu tłumionego liniowo. Jest to jeden z najprostszych, a jednocześnie najbardziej fundamentalnych modeli ruchu w ośrodku lepkim. === Oscylator harmoniczny === Oscylator harmoniczny jest jednym z najbardziej fundamentalnych modeli w całej fizyce klasycznej, kwantowej, statystycznej i technicznej. Jego znaczenie wynika z faktu, że każdy układ fizyczny, który wykonuje niewielkie drgania wokół położenia równowagi, zachowuje się — w pierwszym przybliżeniu — jak oscylator harmoniczny. Dlatego model ten opisuje nie tylko sprężynę z ciężarkiem, lecz także drgania atomów w cząsteczkach, oscylacje planet wokół stabilnych punktów równowagi, drgania pól kwantowych, a nawet fale elektromagnetyczne w rezonatorach. Siłą harmoniczną działającą ze strony sprężynki na ciało jest siła wyrażona jako {{Formuła|<MATH>F=-kx\;</MATH>}}, co oznacza, że siła jest proporcjonalna do wychylenia i skierowana przeciwnie do niego. Jest to klasyczna postać prawa Hooke’a, które obowiązuje dla niewielkich odkształceń sprężyny. Dlatego w takim przypadku druga zasada dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} przyjmuje postać: {{CentrujWzór|<MATH>m\ddot{x}=-kx\;</MATH>|1.39}} Równanie to jest jednym z najprostszych, a jednocześnie najbardziej fundamentalnych równań różniczkowych w fizyce. Opisuje ono ruch ciała pod wpływem siły proporcjonalnej do wychylenia. Jest to równanie liniowe o stałych współczynnikach, które prowadzi do sinusoidalnych rozwiązań. ---- * '''Rozwiązanie równania różniczkowego''' Poszukujemy rozwiązania równania różniczkowego {{LinkWzór|1.39}} w postaci funkcji wykładniczej: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}} Jest to standardowa metoda rozwiązywania równań liniowych. Podstawienie funkcji wykładniczej pozwala sprowadzić równanie różniczkowe do równania algebraicznego, co znacznie upraszcza analizę. Podstawiamy tę postać do równania: {{CentrujWzór|<MATH>m\lambda^2+k=0\Rightarrow\lambda=\pm i\sqrt{{k}\over{m}}=\pm i\omega_0\;</MATH>|1.40}} Otrzymujemy dwa pierwiastki zespolone, co oznacza, że rozwiązanie jest sinusoidalne. Wielkość {{Formuła|<MATH>\omega_0=\sqrt{k/m}</MATH>}} jest częstością własną oscylatora harmonicznego — fundamentalną wielkością opisującą szybkość drgań. Częstość własna zależy wyłącznie od masy i stałej sprężystości. Im większa sprężystość, tym szybsze drgania; im większa masa, tym drgania wolniejsze. ---- * '''Pełne rozwiązanie równania ruchu''' Na podstawie końcowego wniosku wynikowego {{LinkWzór|1.40}}, możemy napisać położenie ciała znajdującego się na końcu sprężynki: {{CentrujWzór|<MATH>x(t)=A_1e^{i\omega_0 t}+A_2e^{-i\omega_0 t}=A\sin(\omega_0 t+\phi)\;</MATH>|1.41}} Rozwiązanie to jest klasyczną postacią sinusoidalnego ruchu harmonicznego. Stałe: * {{Formuła|<MATH>A_1, A_2</MATH>}} – stałe integracji wynikające z warunków początkowych, * {{Formuła|<MATH>A</MATH>}} – amplituda drgań, określająca maksymalne wychylenie, * {{Formuła|<MATH>\phi</MATH>}} – faza początkowa, określająca przesunięcie czasowe drgań. Rozwiązanie sinusoidalne wynika z faktu, że pierwiastki równania charakterystycznego są czysto urojone. Oznacza to, że układ wykonuje drgania bez tłumienia, a energia kinetyczna i potencjalna wymieniają się cyklicznie. ---- * '''Interpretacja fizyczna''' Równanie {{LinkWzór|1.41}} opisuje klasyczne drgania harmoniczne: * ruch jest '''okresowy''', co oznacza, że powtarza się w regularnych odstępach czasu, * częstość drgań zależy tylko od stosunku {{Formuła|<MATH>k/m</MATH>}}, * rozwiązanie jest sinusoidalne, co wynika z zespolonej postaci funkcji wykładniczej. Oscylator harmoniczny jest jednym z najważniejszych modeli w fizyce — opisuje m.in.: * drgania sprężyn, * wahadła dla małych wychyleń, * oscylacje atomów w cząsteczkach, * drgania pól kwantowych, * fale elektromagnetyczne w rezonatorach, * oscylacje planet wokół stabilnych punktów równowagi. Model ten jest tak uniwersalny, że stanowi fundament niemal każdej dziedziny fizyki. Jego prostota matematyczna i ogromna moc opisowa sprawiają, że jest jednym z najczęściej używanych narzędzi w całej nauce. === Tłumiony oscylator harmoniczny === W tłumionym oscylatorze harmonicznym, oprócz siły harmonicznej działającej ze strony sprężynki, działa również '''siła tłumiąca ruch''', która zależy od prędkości ciała. Jest to sytuacja niezwykle często spotykana w fizyce klasycznej i technice: tłumienie występuje w amortyzatorach samochodowych, w układach drgających maszyn, w oscylacjach konstrukcji budowlanych, w drganiach atomów w ośrodkach lepkich, a nawet w układach elektronicznych, gdzie tłumienie odpowiada stratom energii. Siła tłumiąca jest zawsze skierowana przeciwnie do prędkości i powoduje stopniowe zmniejszanie amplitudy drgań. W takim przypadku drugą zasadę dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} zapisujemy: {{CentrujWzór|<MATH>m\ddot{x}=-kx-2m\beta\dot{x}\;</MATH>|1.42}} W powyższym wzorze oznaczyliśmy {{Formuła|<MATH>\beta=\gamma/(2m)</MATH>}}, czyli tzw. '''zredukowany współczynnik tłumienia'''. Współczynnik ten określa intensywność tłumienia: im większa wartość β, tym szybciej energia układu jest tracona. Tłumienie jest procesem nieodwracalnym — energia mechaniczna zamienia się na ciepło lub inne formy energii, które nie wracają do układu drgającego. ---- * '''Częstotliwość drgań nie tłumionych''' Zanim przejdziemy do analizy tłumienia, przypomnijmy definicję częstości własnej oscylatora harmonicznego. Jest to częstość drgań w przypadku braku tłumienia, czyli gdy β=0. Częstość ta zależy wyłącznie od masy i stałej sprężystości: {{CentrujWzór|<MATH>\omega_0=\sqrt{{k\over m}}\;</MATH>|1.43}} Częstotliwość własna jest fundamentalną wielkością opisującą układ drgający. Określa ona, jak szybko układ drga w idealnych warunkach, bez strat energii. Jest to częstość naturalna układu, wynikająca z jego geometrii i właściwości fizycznych. Równanie {{LinkWzór|1.42}} przy oznaczeniach {{LinkWzór|1.43}} zapisujemy: {{CentrujWzór|<MATH>\ddot{x}+2\beta\dot{x}+\omega_0^2x=0\;</MATH>|1.44}} Równanie to jest podstawowym równaniem tłumionego oscylatora harmonicznego. Zawiera ono trzy składniki: przyspieszenie, tłumienie proporcjonalne do prędkości oraz siłę sprężystości proporcjonalną do wychylenia. Każdy z tych składników odgrywa kluczową rolę w dynamice układu. ---- * '''Rozwiązanie równania różniczkowego''' Aby rozwiązać równanie {{LinkWzór|1.44}}, podstawiamy rozwiązanie w postaci wykładniczej: {{Formuła|<MATH>x(t)=e^{\lambda t}</MATH>}} Jest to standardowa metoda rozwiązywania równań liniowych o stałych współczynnikach. Podstawienie to pozwala sprowadzić równanie różniczkowe do równania algebraicznego. Otrzymujemy równanie charakterystyczne: {{CentrujWzór|<MATH>\lambda^2+2\beta\lambda+\omega_0^2=0\;</MATH>|1.45}} Równanie charakterystyczne jest równaniem kwadratowym, którego pierwiastki określają rodzaj ruchu. W zależności od wartości β względem ω₀ otrzymujemy trzy różne typy ruchu: silnie tłumiony, słabo tłumiony i krytycznie tłumiony. Rozwiązanie równania kwadratowego: {{CentrujWzór|<MATH>\lambda={{-2\beta\pm\sqrt{4\beta^2-4\omega_0^2}}\over 2}=-\beta\pm\sqrt{\beta^2-\omega_0^2}\;</MATH>|1.46}} Pierwiastki równania charakterystycznego decydują o tym, czy ruch jest oscylacyjny, czy nie. Jeśli pierwiastek jest zespolony, ruch jest sinusoidalny z malejącą amplitudą. Jeśli pierwiastki są rzeczywiste, ruch nie jest oscylacyjny — ciało wraca do równowagi bez drgań. ---- * '''Silne tłumienie''' {{Formuła|<MATH>\beta>\omega_0</MATH>}} W tym przypadku pierwiastki równania charakterystycznego są '''rzeczywiste i ujemne''': {{CentrujWzór|<MATH>x(t)=Ae^{\lambda_1 t}+Be^{\lambda_2 t}\;</MATH>|1.47}} Ruch nie jest oscylacyjny — ciało wraca do położenia równowagi bez drgań. Jest to sytuacja, w której tłumienie jest tak silne, że układ nie ma „siły” wykonywać drgań. Zamiast tego wychylenie maleje monotonicznie. Taki ruch występuje np. w amortyzatorach samochodowych, które mają za zadanie tłumić drgania jak najszybciej. ---- * '''Słabe tłumienie''' {{Formuła|<MATH>\beta<\omega_0</MATH>}} W tym przypadku pierwiastki są '''zespolone''', a ruch pozostaje oscylacyjny: {{CentrujWzór|<MATH>x(t)=Ae^{-\beta t}\sin\left(\sqrt{\omega_0^2-\beta^2}\,t+\phi\right)\;</MATH>|1.48}} Częstotliwość drgań tłumionych wynosi: {{Formuła|<MATH>\omega=\sqrt{\omega_0^2-\beta^2}</MATH>}}. Amplituda maleje wykładniczo. Jest to najbardziej klasyczny przypadek tłumionego ruchu: ciało drga, lecz z każdą chwilą amplituda jest mniejsza. Taki ruch występuje np. w wahadłach w powietrzu, w drganiach strun, w oscylacjach atomów w ośrodkach lepkich. ---- * '''Przypadek graniczny''' {{Formuła|<MATH>\beta=\omega_0</MATH>}} W tym przypadku równanie charakterystyczne ma '''podwójny pierwiastek''': {{CentrujWzór|<MATH>x(t)=Ae^{-\beta t}(1+at)\;</MATH>|1.49}} Ruch nie jest oscylacyjny, ale ciało wraca do równowagi '''najszybciej możliwie bez oscylacji''' — jest to tzw. '''tłumienie krytyczne'''. Jest to przypadek szczególny, w którym układ wraca do równowagi w minimalnym czasie, bez wykonywania drgań. Tłumienie krytyczne jest idealne w układach technicznych, gdzie zależy nam na szybkim wygaszeniu drgań bez oscylacji. ---- Wszystkie trzy przypadki (silne, słabe i krytyczne tłumienie) wynikają bezpośrednio z analizy równania charakterystycznego {{LinkWzór|1.45}} i stanowią pełną klasyfikację ruchu tłumionego oscylatora harmonicznego. Każdy z tych przypadków ma ogromne znaczenie praktyczne i teoretyczne. Tłumienie jest jednym z najważniejszych zjawisk w fizyce klasycznej — bez tłumienia drgania trwałyby wiecznie, co nie zdarza się w rzeczywistych układach. Dzięki tłumieniu energia układu jest stopniowo tracona, a ruch wygasa. === Ruch ciała pod wpływem dowolnej siły zależnej od położenia === W tym podrozdziale zajmiemy się jednym z najbardziej fundamentalnych i jednocześnie najbardziej ogólnych zagadnień mechaniki klasycznej: ruchem ciała pod wpływem siły, która zależy wyłącznie od położenia. Jest to sytuacja niezwykle często spotykana w fizyce — obejmuje ruch w polu grawitacyjnym, w polu sprężystości, w polu elektrostatycznym, a także w dowolnym potencjale jednowymiarowym. Zależność siły od położenia jest kluczowa, ponieważ pozwala wprowadzić pojęcie energii potencjalnej, a tym samym zastosować zasadę zachowania energii, która jest jednym z najpotężniejszych narzędzi w całej mechanice. Napiszmy wzór na drugą zasadę dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}}, w której siła niezrównoważona pochodzi od '''sił potencjalnych''' działających na ciało. Mamy zatem równanie: {{CentrujWzór|<MATH>m\ddot{x}=F(x)\;</MATH>}} Równanie to jest punktem wyjścia do całej analizy. Pokazuje ono, że przyspieszenie ciała jest bezpośrednio związane z siłą działającą na ciało, a ta siła zależy od położenia. Jest to równanie różniczkowe drugiego rzędu, które w ogólności może być trudne do rozwiązania, lecz w przypadku sił potencjalnych możemy zastosować metodę znacznie prostszą i bardziej elegancką. Mnożymy obustronnie przez prędkość {{Formuła|<MATH>\dot{x}</MATH>}} i korzystamy z definicji energii potencjalnej: {{Formuła|<MATH>U(x)=-\int F(x)\,dx</MATH>}}. Ten krok jest kluczowy: mnożenie przez prędkość pozwala przekształcić równanie ruchu w równanie energii. Jest to jedna z najważniejszych sztuczek w mechanice analitycznej. Dzięki niej możemy przejść od równania różniczkowego do równania algebraicznego, które jest znacznie łatwiejsze do analizy. Wtedy otrzymujemy tożsamość, którą możemy przecałkować względem czasu: {{CentrujWzór|<MATH>{{d}\over{dt}}\left({{m\dot{x}^2}\over{2}}\right)=-{{d}\over{dt}}U(x)\Rightarrow {{1}\over{2}}m\dot{x}^2=E-U(x)\;</MATH>|1.50}} Równanie {{LinkWzór|1.50}} jest równaniem energii całkowitej. Pokazuje ono, że suma energii kinetycznej i potencjalnej jest stała i równa całkowitej energii E. Jest to jedno z najważniejszych równań w całej fizyce klasycznej. Dzięki niemu możemy analizować ruch bez konieczności rozwiązywania równania różniczkowego — wystarczy znać zależność U(x), aby określić prędkość, a tym samym cały ruch. ---- * Rozdzielanie zmiennych: Równanie {{LinkWzór|1.50}} możemy rozwiązać metodą rozdzielania zmiennych. Jest to metoda, która pozwala przekształcić równanie różniczkowe w całkę, którą można obliczyć lub przynajmniej przeanalizować. {{CentrujWzór|<MATH>dt={{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)} }}\Rightarrow t-t_0=\int_{x_0}^x{{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)}}}\;</MATH>|1.51}} Wzór {{LinkWzór|1.51}} jest jednym z najważniejszych wzorów w mechanice analitycznej. Pokazuje on, że czas ruchu można wyrazić jako całkę z odwrotności prędkości. Prędkość zależy od różnicy między energią całkowitą a potencjałem, co oznacza, że czas ruchu jest bezpośrednio związany z geometrią potencjału. ---- * Energia potencjalna sprężyny Dla siły sprężystości {{Formuła|<MATH>F=-kx</MATH>}} energia potencjalna wynosi: {{CentrujWzór|<MATH>U(x)=-\int F\,dx=-\int(-kx)\,dx={{k}\over{2}}x^2\;</MATH>|1.52}} Wzór {{LinkWzór|1.52}} jest klasycznym wynikiem: energia potencjalna sprężyny jest proporcjonalna do kwadratu wychylenia. Jest to potencjał harmoniczny, który prowadzi do ruchu sinusoidalnego. Jest to jeden z najważniejszych potencjałów w fizyce — pojawia się w drganiach atomów, w oscylacjach planet, w falach elektromagnetycznych, w kwantowych oscylatorach harmonicznych i w niezliczonych innych sytuacjach. ---- * Podstawienie do równania ruchu Podstawiamy {{LinkWzór|1.52}} do równania {{LinkWzór|1.51}}: {{CentrujWzór|<MATH> t=t_0+\int_{x_0}^x{{dx}\over{\sqrt{{{2}\over{m}}\left(E-{{1}\over{2}}kx^2\right)}}} =t_0+\sqrt{{{m}\over{k}}}\int_{x_0}^x{{dx\sqrt{{{k}\over{m}}}}\over{\sqrt{{{{2E}\over{m}}}-{{k}\over{m}}x^2}}} =t_0+\sqrt{{{m}\over{k}}}\operatorname{arcsin}\left(\sqrt{{{k}\over{2E}}}\,x\right) \;</MATH>|1.53}} Wzór {{LinkWzór|1.53}} jest niezwykle elegancki: pokazuje, że czas ruchu w potencjale harmonicznym jest funkcją arcsin. Jest to bezpośrednia konsekwencja tego, że potencjał harmoniczny prowadzi do ruchu sinusoidalnego. Cała struktura ruchu jest zakodowana w funkcjach trygonometrycznych. ---- * Odwrócenie zależności: położenie jako funkcja czasu Odwracając równanie {{LinkWzór|1.53}}, otrzymujemy zależność położenia od czasu: {{CentrujWzór|<MATH>x=\sqrt{{{2E}\over{k}}}\sin\left(\sqrt{{k\over m}}\,(t-t_0)\right)\;</MATH>|1.54}} Wzór {{LinkWzór|1.54}} jest pełnym rozwiązaniem ruchu ciała w polu sił sprężystości. Pokazuje on, że ruch jest sinusoidalny, z amplitudą zależną od energii i częstością zależną od stałej sprężystości i masy. Jest to jedno z najbardziej klasycznych rozwiązań w całej fizyce. ---- * Interpretacja fizyczna Wzór {{LinkWzór|1.54}} jest '''pełnym rozwiązaniem ruchu ciała w polu sił sprężystości''', wyprowadzonym z zasady zachowania energii. Pokazuje on, że: * ruch jest '''harmoniczny''', * amplituda drgań wynosi {{Formuła|<MATH>A=\sqrt{2E/k}</MATH>}}, * częstość drgań jest równa {{Formuła|<MATH>\omega_0=\sqrt{k/m}</MATH>}}, * rozwiązanie zależy wyłącznie od energii całkowitej, masy i stałej sprężystości. W ten sposób otrzymujemy klasyczne równanie ruchu oscylatora harmonicznego, wyprowadzone '''nie z równania różniczkowego''', lecz '''z zasady zachowania energii'''. Jest to przykład tego, jak potężna jest metoda energii w mechanice analitycznej — pozwala ona uzyskać pełne rozwiązanie ruchu bez konieczności rozwiązywania równania różniczkowego drugiego rzędu. === Określenie położenia maksymalnego na podstawie okresu drgań === W tym podrozdziale zajmiemy się jednym z najbardziej eleganckich i głębokich wyników klasycznej teorii drgań: zależnością między okresem drgań T(E) a maksymalnym położeniem ciała x(E) w jednowymiarowym potencjale U(x). Jest to zagadnienie o fundamentalnym znaczeniu, ponieważ pozwala odwrócić typowy sposób myślenia o ruchu drgającym. Zwykle bowiem zakładamy, że znamy potencjał U(x), a następnie wyznaczamy okres drgań T(E). Tutaj natomiast pokażemy, że można wykonać operację odwrotną: znając okres drgań jako funkcję energii, możemy odtworzyć maksymalne położenie x(E), a tym samym strukturę potencjału. Jest to niezwykle potężne narzędzie, wykorzystywane w fizyce klasycznej, kwantowej, w teorii oscylatorów, w analizie ruchu planetarnego, a także w metodach odwrotnych w mechanice analitycznej. Zależność ta pokazuje, że informacja o czasie ruchu zawiera w sobie pełną informację o geometrii potencjału. Innymi słowy — czas jest nośnikiem struktury przestrzennej. Weźmy pod uwagę różniczkę czasu określoną na podstawie jego zależności od różniczki położenia, daną wzorem {{LinkWzór|1.51}}. Różniczka ta jest kluczowa, ponieważ pozwala wyrazić czas jako całkę z odwrotności prędkości. Prędkość natomiast zależy od różnicy między energią całkowitą E a potencjałem U(x). Dzięki temu możemy powiązać czas ruchu z geometrią potencjału. Okres drgań możemy określić jako podwojoną wartość czasu, w jakim nasze badane ciało przechodzi z jednego maksymalnego położenia do drugiego. Jest to naturalne, ponieważ ruch w potencjale jednowymiarowym jest odwracalny: ciało wraca dokładnie tą samą drogą, z tą samą prędkością, lecz w przeciwnym kierunku. Dlatego całka od x₁(E) do x₂(E) opisuje tylko połowę ruchu — drugą połowę otrzymujemy przez symetrię. {{CentrujWzór|<MATH>T(E)=2\int_{x_1(E)}^{x_2(E)}{{dx}\over{\sqrt{{{2}\over{m}}\left(E-U(x)\right)} }}=\sqrt{2m}\int_{x_1(E)}^{x_2(E)}{{dx}\over{\sqrt{E-U(x)}}}\;</MATH>|1.55}} Wzór {{LinkWzór|1.55}} jest jednym z najważniejszych wzorów w teorii drgań. Pokazuje on, że okres drgań zależy od całki z odwrotności prędkości, a prędkość zależy od różnicy między energią całkowitą E a potencjałem U(x). Im większa energia, tym dalej ciało dociera, a tym samym okres drgań może się zmieniać. W przypadku potencjałów niesymetrycznych zależność ta może być bardzo złożona, lecz nadal pozostaje w pełni deterministyczna. Patrząc na wzór {{LinkWzór|1.55}}, okres drgań możemy zapisać, całkując po energii od {{Formuła|<MATH>0</MATH>}} do {{Formuła|<MATH>E</MATH>}} i od {{Formuła|<MATH>E</MATH>}} do {{Formuła|<MATH>0</MATH>}}. Po podziale całki na dwa składniki otrzymujemy: {{CentrujWzór|<MATH> T(E)=\sqrt{2m}\int_0^E{{dx_2(U)}\over{dU}}{{dU}\over{\sqrt{E-U}}} +\sqrt{2m}\int_E^0{{dx_1(U)}\over{dU}}{{dU}\over{\sqrt{E-U}}} =\sqrt{2m}\int_0^E\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]{{dU}\over{\sqrt{E-U}}} \;</MATH>|1.56}} Wzór {{LinkWzór|1.56}} jest kluczowy: pokazuje, że okres drgań można wyrazić jako całkę po energii, w której pojawia się różnica pochodnych położenia granicznego x₂(U) i x₁(U). Ta różnica jest niczym innym jak szerokością dostępnego obszaru ruchu dla danej energii. Innymi słowy, okres drgań zależy od tego, jak szeroki jest „przedział ruchu” przy danej energii. Dzielimy obie strony równości {{LinkWzór|1.56}} przez wyrażenie zależne od {{Formuła|<MATH>\alpha</MATH>}} i energii całkowitej {{Formuła|<MATH>E</MATH>}}: {{Formuła|<MATH>\sqrt{\alpha-E}</MATH>}} i całkujemy względem {{Formuła|<MATH>E</MATH>}} od {{Formuła|<MATH>0</MATH>}} do {{Formuła|<MATH>\alpha</MATH>}}: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\sqrt{2m}\int_0^{\alpha}\int_0^E\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]{{dU\,dE}\over{\sqrt{(\alpha-E)(E-U)}}} \;</MATH>|1.57}} Wzór {{LinkWzór|1.57}} jest przykładem zastosowania całkowania iterowanego. Zmieniamy kolejność całkowania, co jest klasyczną techniką w analizie matematycznej, pozwalającą uprościć złożone wyrażenia. We wzorze {{LinkWzór|1.57}} zmieniamy kolejność całkowania w całce podwójnej: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\sqrt{2m}\int_0^{\alpha}\left[{{dx_2}\over{dU}}-{{dx_1}\over{dU}}\right]dU \int_U^{\alpha}{{dE}\over{\sqrt{(\alpha-E)(E-U)}}} \;</MATH>|1.58}} Teraz kluczowym krokiem jest wyznaczenie całki wewnętrznej. Jest to całka o bardzo charakterystycznej strukturze: pod pierwiastkiem występuje iloczyn dwóch wyrażeń liniowych w E. Po odpowiednich przekształceniach sprowadzamy ją do postaci znanej z całki arcsin. Wyznaczmy teraz całkę występującą we wzorze {{LinkWzór|1.58}}. Korzystając z przekształceń równania kwadratowego i znanej całki: {{Formuła|<MATH>\int{{dx}\over{\sqrt{1-x^2}}}=\operatorname{arcsin}x</MATH>}}, otrzymujemy: {{CentrujWzór|<MATH> \int_U^{\alpha}{{dE}\over{\sqrt{(\alpha-E)(E-U)}}} =\pi \;</MATH>|1.59}} Wynik ten jest niezwykle elegancki: cała złożona struktura całki sprowadza się do stałej π. Jest to przykład tego, jak geometria ruchu w potencjale jednowymiarowym prowadzi do prostych i pięknych zależności matematycznych. Wzór na całkę {{LinkWzór|1.59}} podstawiamy do {{LinkWzór|1.58}} i całkujemy względem {{Formuła|<MATH>U</MATH>}}. Ostatecznie otrzymujemy: {{CentrujWzór|<MATH> \int_0^{\alpha}{{T(E)\,dE}\over{\sqrt{\alpha-E}}} =\pi\sqrt{2m}\,[x_2(\alpha)-x_1(\alpha)] \;</MATH>|1.60}} Uwzględniając przypadek {{Formuła|<MATH>x_2(0)=x_1(0)=0</MATH>}} dla stanu równowagi, to dla {{Formuła|<MATH>\alpha=U</MATH>}} możemy jednocześnie zapisać: {{Formuła|<MATH>x_1(U)=-x_2(U)=x(U)</MATH>}}. Wtedy maksymalne położenie: {{CentrujWzór|<MATH> x(U)={{1}\over{2\pi\sqrt{2m}}}\int_0^U{{T(E)\,dE}\over{\sqrt{U-E}}} \;</MATH>|1.61}} <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> r01feyvl6eut1z2pq2fy8rhizg2v500 Mechanika teoretyczna/Kinematyka i dynamika klasyczna opisu punktu materialnego/Zasady zachowania 0 64138 559477 559151 2026-10-16T22:01:59Z Persino 2851 /* Zasada zachowania energii */ 559477 wikitext text/x-wiki <noinclude><!-- -->{{SkomplikowanaStronaStart<!-- -->| stopka strony = {{Kreska nawigacja|{{AktualnaKsiążka}}|{{NastępnyArtykuł}}|{{PoprzedniArtykuł}}}}<!-- -->}}</noinclude> == Zasada zachowania pędu, momentu pędu i energii == W tym podrozdziale przechodzimy do jednego z najbardziej fundamentalnych i uniwersalnych zagadnień całej mechaniki klasycznej: zasad zachowania wielkości fizycznych. Są to prawa, które nie tylko opisują ruch, lecz także ujawniają głęboką strukturę fizyczną świata. Zasady zachowania pędu, momentu pędu i energii są absolutnymi filarami dynamiki — obowiązują w ruchu liniowym, obrotowym, w układach izolowanych, w zderzeniach, w oddziaływaniach sprężystych i niesprężystych, w ruchu planet, w mechanice kwantowej, a nawet w teorii względności. Każda z tych zasad wynika bezpośrednio z drugiej zasady dynamiki Newtona, lecz ich znaczenie wykracza daleko poza proste równania ruchu. Są one powiązane z symetriami przestrzeni i czasu: zachowanie pędu wynika z jednorodności przestrzeni, zachowanie momentu pędu z izotropii przestrzeni, a zachowanie energii z jednorodności czasu. W ten sposób mechanika klasyczna łączy geometrię świata z dynamiką ruchu. Równanie na drugą zasadę dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} można zapisać przy pomocy definicji '''pędu''', który jest iloczynem masy ciała i jego prędkości: {{CentrujWzór|<MATH>\vec{p}=m\vec{v}\;</MATH>|1.62}} Definicja ta jest niezwykle ważna: pęd jest wielkością wektorową, która łączy masę i prędkość w jedną całość. Pęd nie jest tylko „masą razy prędkość” — jest to wielkość, która określa zdolność ciała do oddziaływania dynamicznego. Ciało o dużym pędzie trudno zatrzymać, trudno zmienić jego kierunek, trudno zmienić jego stan ruchu. Pęd jest miarą „ilości ruchu”. Zatem druga zasada dynamiki Newtona przy definicji pędu określonej wzorem {{LinkWzór|1.62}} przyjmuje postać: {{CentrujWzór|<MATH>\vec{F}={{d\vec{p}}\over{dt}}\;</MATH>|1.63}} Wzór {{LinkWzór|1.63}} jest najbardziej ogólną postacią drugiej zasady Newtona. Jest to forma, która obowiązuje: * dla ruchu liniowego, * dla ruchu obrotowego (gdzie pęd zastępuje moment pędu), * dla układów o zmiennej masie (np. rakiety), * w analizach relatywistycznych, gdzie pęd nie jest proporcjonalny do prędkości, * w zderzeniach sprężystych i niesprężystych, * w ruchu planetarnym, * w dynamice układów wielu ciał. W tej postaci druga zasada Newtona ujawnia swoją pełną moc: siła jest niczym innym jak szybkością zmiany pędu. Jeśli pęd się nie zmienia, siła jest równa zero. Jeśli pęd zmienia się szybko, siła jest duża. W ten sposób pęd staje się centralną wielkością opisującą dynamikę. Z równania {{LinkWzór|1.63}} wynika natychmiast zasada zachowania pędu: jeśli siła wypadkowa działająca na układ jest równa zero, to pęd całkowity układu jest stały. Jest to jedna z najważniejszych zasad w fizyce — pozwala analizować zderzenia, ruchy odrzutowe, dynamikę układów izolowanych, a także ruch ciał w przestrzeni kosmicznej. Analogicznie, jeśli zamiast pędu liniowego rozpatrujemy moment pędu, otrzymujemy zasadę zachowania momentu pędu. Jest to zasada, która opisuje ruch obrotowy, rotacje planet, ruch wirujący, dynamikę brył sztywnych, a także zjawiska kwantowe, takie jak spin elektronów. Wreszcie, z równania energii — które wynika z pracy wykonanej przez siły — otrzymujemy zasadę zachowania energii. Energia nie powstaje z niczego i nie znika — może jedynie zmieniać formę. W ruchu mechanicznie izolowanym energia kinetyczna i potencjalna wymieniają się, lecz ich suma pozostaje stała. Wszystkie te zasady — pędu, momentu pędu i energii — są ze sobą głęboko powiązane. Stanowią fundament całej mechaniki klasycznej i są niezbędne do analizy każdego ruchu, od najprostszych po najbardziej złożone. === Zasada zachowania pędu === W tym podrozdziale przechodzimy do jednego z najbardziej fundamentalnych praw mechaniki klasycznej: zasady zachowania pędu. Jest to zasada o ogromnym znaczeniu, ponieważ opisuje zachowanie układów zarówno prostych, jak i niezwykle złożonych — od ruchu pojedynczej cząstki, przez zderzenia atomów, aż po dynamikę planet i galaktyk. Pęd jest wielkością, która nie tylko opisuje ruch, lecz także ujawnia głęboką strukturę oddziaływań między ciałami. Zasada zachowania pędu jest jednym z filarów fizyki, obowiązującym w mechanice klasycznej, kwantowej, relatywistycznej, a także w teorii pól. Równanie {{LinkWzór|1.63}} opisuje ruch pojedynczej cząstki. Jest to równanie, które mówi, że siła działająca na cząstkę jest równa szybkości zmiany jej pędu. Pęd jest wielkością wektorową, dlatego równanie to opisuje zarówno zmianę wartości pędu, jak i jego kierunku. Jest to najbardziej ogólna postać drugiej zasady Newtona. Możemy jednak dodać poszczególne równania ruchu wszystkich cząstek układu stronami. Jest to krok niezwykle ważny, ponieważ pozwala przejść od dynamiki pojedynczej cząstki do dynamiki całego układu. Układ może składać się z dwóch cząstek, dziesięciu cząstek, miliardów cząstek — zasada zachowania pędu obowiązuje zawsze, niezależnie od liczby elementów. Korzystając z '''trzeciej zasady dynamiki Newtona''', otrzymujemy, że: * siły wewnętrzne działające między cząstkami '''wzajemnie się równoważą''', **Oznacza to, że każda siła działająca jednej cząstki na drugą ma swoją dokładną przeciwną odpowiedniczkę. ** Siły te są równe co do wartości i przeciwne co do zwrotu. W efekcie, gdy dodamy wszystkie siły wewnętrzne, ich suma wynosi zero. * zatem nie mają wpływu na zmianę pędu całego układu jako całości, ** Siły wewnętrzne mogą zmieniać pędy poszczególnych cząstek, lecz nie zmieniają pędu całkowitego. ** Oznacza to, że układ może „przekazywać” pęd między swoimi elementami, ale nie może go tworzyć ani niszczyć. * jedynie '''siły zewnętrzne''' mogą zmieniać pęd układu. ** Jeśli na układ działa siła zewnętrzna, pęd całkowity może się zmieniać. ** Jeśli siła zewnętrzna jest równa zero, pęd całkowity pozostaje stały. Jeśli na układ '''nie działa żadna niezrównoważona siła zewnętrzna''', to całkowity pęd układu jest wielkością stałą w czasie — jest zachowany. Jest to kluczowy wniosek: '''pęd całkowity układu izolowanego nie zmienia się'''. Układ izolowany to taki, na który nie działają siły zewnętrzne lub ich suma jest równa zero. Pęd układu złożonego z '''n''' cząstek zapisujemy jako sumę pędów wszystkich cząstek: {{CentrujWzór|<MATH>\vec{p}=\sum_i \vec{p}_i\;</MATH>|1.64}} Wzór {{LinkWzór|1.64}} jest matematycznym wyrażeniem '''zasady zachowania pędu'''. Pokazuje on, że pęd całkowity jest sumą pędów wszystkich elementów układu. Jeśli suma sił zewnętrznych jest równa zero, ta suma pozostaje niezmienna. Zasada ta obowiązuje zarówno w układach izolowanych, jak i w wielu procesach zderzeń, ruchu orbitalnego, dynamiki układów wielociałowych oraz w fizyce relatywistycznej. W zderzeniach sprężystych pęd jest zachowany. W zderzeniach niesprężystych pęd również jest zachowany, choć energia kinetyczna może się zmieniać. W ruchu planetarnym pęd orbitalny jest zachowany, jeśli nie działają siły zewnętrzne. W fizyce relatywistycznej pęd jest częścią czterowektora pędu-energii, który również podlega zasadzie zachowania. Zasada zachowania pędu jest jednym z najgłębszych praw natury — wynika z jednorodności przestrzeni, czyli z faktu, że prawa fizyki są takie same w każdym miejscu. W ten sposób mechanika klasyczna łączy geometrię świata z dynamiką ruchu. === Zasada zachowania momentu pędu === W tym podrozdziale przechodzimy do jednej z najgłębszych i najbardziej fundamentalnych zasad mechaniki klasycznej: zasady zachowania momentu pędu. Jest to zasada, która opisuje nie tylko ruch obrotowy pojedynczych cząstek, lecz także dynamikę brył sztywnych, ruch planet, gwiazd, galaktyk, a nawet zjawiska kwantowe, takie jak spin elektronów. Moment pędu jest wielkością, która ujawnia geometryczną strukturę przestrzeni — jego zachowanie wynika z izotropii przestrzeni, czyli z faktu, że prawa fizyki są takie same niezależnie od kierunku. Zdefiniujmy moment pędu jako iloczyn wektorowy wektora wodzącego i pędu, a moment siły jako iloczyn wektorowy wektora wodzącego i siły działającej na dany punkt ciała: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>\vec{K}=\vec{r}\times\vec{p}\;</MATH>|1.65}} | 2 = {{CentrujWzór|<MATH>\vec{N}=\vec{r}\times\vec{F}\;</MATH>|1.66}} }} Wzór {{LinkWzór|1.65}} definiuje moment pędu jako iloczyn wektorowy wektora położenia i pędu. Jest to wielkość wektorowa, która opisuje „ilość ruchu obrotowego”. Moment pędu zależy zarówno od tego, jak szybko ciało się porusza, jak i od tego, jak daleko znajduje się od osi obrotu. Wzór {{LinkWzór|1.66}} definiuje moment siły — wielkość, która określa zdolność siły do zmiany momentu pędu. Moment siły jest odpowiednikiem siły w ruchu obrotowym: tak jak siła zmienia pęd, tak moment siły zmienia moment pędu. Wyznaczając pochodną zupełną czasową momentu pędu zdefiniowanego w punkcie {{LinkWzór|1.65}} i korzystając z drugiej zasady dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}}, otrzymujemy: {{CentrujWzór|<MATH> {{d\vec{K}}\over{dt}} ={{d}\over{dt}}\left(\vec{r}\times\vec{p}\right) =\vec{v}\times\vec{p}+\vec{r}\times{{d\vec{p}}\over{dt}} =\vec{r}\times\vec{F} =\vec{N} \;</MATH>|1.67}} Każdy krok tego wyprowadzenia ma głębokie znaczenie: * Pochodna iloczynu wektorowego daje dwa składniki: {{Formuła|<MATH>\vec{v}\times\vec{p}\;</MATH>}} oraz {{Formuła|<MATH>\vec{r}\times \frac{d\vec{p}}{dt}\;</MATH>}}. ** Pierwszy składnik znika, ponieważ prędkość i pęd są równoległe (pęd jest masą razy prędkość). ** Drugi składnik pozostaje i prowadzi do momentu siły. * Korzystamy z równania {{Formuła|<MATH>\frac{d\vec{p}}{dt}=\vec{F}\;</MATH>}}, które jest ogólną postacią drugiej zasady Newtona. ** Dzięki temu otrzymujemy zależność między zmianą momentu pędu a momentem siły. Na podstawie obliczeń przeprowadzonych w punkcie {{LinkWzór|1.67}} możemy napisać, że infinitesymalna zmiana momentu pędu względem czasu jest równa momentowi siły: {{CentrujWzór|<MATH>\vec{N}={{d\vec{K}}\over{dt}}\;</MATH>|1.68}} Równanie {{LinkWzór|1.68}} opisuje ruch jednej cząstki, ale można je uogólnić na przypadek wielu cząstek, sumując ten wzór dla każdej z nich. W układzie wielu cząstek moment pędu całkowity jest sumą momentów pędu wszystkich elementów układu. * Wiedząc, że: ** moment siły działający na ciało A ze strony ciała B ** oraz moment siły działający na ciało B ze strony ciała A sumują się do zera (działają wzdłuż tego samego kierunku i spełniają trzecią zasadę dynamiki Newtona), otrzymujemy, że: * '''momenty sił wewnętrznych''' znoszą się w całkowitej sumie, ** Układ może przekazywać moment pędu między swoimi elementami, lecz nie może go tworzyć ani niszczyć. * pozostają tylko '''momenty sił zewnętrznych'''. ** Jeśli moment sił zewnętrznych jest równy zero, moment pędu całkowity nie zmienia się. Jeśli całkowity moment sił zewnętrznych jest równy zero, to całkowity moment pędu układu jest wielkością stałą w czasie — obowiązuje '''zasada zachowania momentu pędu'''. Zasada ta jest jednym z najważniejszych praw fizyki. Wyjaśnia: * dlaczego łyżwiarz obracający się szybciej po zbliżeniu rąk do ciała zwiększa prędkość obrotu, * dlaczego planety poruszają się szybciej, gdy są bliżej Słońca, * dlaczego wir wodny zwęża się i przyspiesza, * dlaczego gwiazdy zapadające się w supernowe obracają się coraz szybciej. Moment pędu jest wielkością, która ujawnia głęboką symetrię przestrzeni — jego zachowanie wynika z faktu, że przestrzeń nie wyróżnia żadnego kierunku. W ten sposób mechanika klasyczna łączy geometrię świata z dynamiką ruchu. === Energia potencjalna === W tym podrozdziale wprowadzamy jedno z najbardziej fundamentalnych pojęć mechaniki klasycznej: energię potencjalną. Jest to wielkość, która opisuje zdolność układu do wykonania pracy wskutek działania sił zależnych od położenia. Energia potencjalna nie jest energią ruchu — jest energią „ukrytą” w konfiguracji układu, wynikającą z oddziaływań, które mogą zmieniać położenie ciała. Aby jednak można było mówić o energii potencjalnej, siła musi spełniać określone warunki matematyczne, które zapewniają, że praca tej siły nie zależy od drogi, lecz wyłącznie od punktów początkowego i końcowego. Wprowadźmy definicję '''siły potencjalnej''' w taki sposób, że praca tej siły nie zależy od konturu, lecz wyłącznie od punktu początkowego i końcowego ruchu ciała. W takim przypadku praca siły po '''dowolnym zamkniętym konturze''' jest równa zero: {{CentrujWzór|<MATH>\oint_L \vec{F}\,d\vec{r}=0\;</MATH>|1.74}} Równanie {{LinkWzór|1.74}} jest jednym z najważniejszych warunków w teorii pól wektorowych. Oznacza ono, że siła nie wykonuje żadnej „cyrkulacji” wokół zamkniętej krzywej. Jeśli praca po zamkniętym konturze jest równa zero, to siła jest polem bezwirowym — jej działanie nie zależy od tego, jaką drogą porusza się ciało, lecz tylko od punktów początkowego i końcowego. Korzystając z twierdzenia Stokesa i definicji '''rotacji''' pola wektorowego, równanie {{LinkWzór|1.74}} możemy zapisać jako: {{CentrujWzór|<MATH> 0=\oint_L \vec{F}\,d\vec{r} =\int_S \operatorname{rot}\vec{F}\,d\vec{S} \;</MATH>|1.75}} Twierdzenie Stokesa jest jednym z najważniejszych twierdzeń analizy wektorowej. Łączy ono całkę po konturze z całką po powierzchni, ujawniając głęboką strukturę pola wektorowego. Jeśli rotacja pola jest równa zero, to całka po dowolnym konturze również jest równa zero. Na podstawie wniosku z {{LinkWzór|1.75}} otrzymujemy warunek konieczny i wystarczający na istnienie potencjału: {{CentrujWzór|<MATH>\operatorname{rot}\vec{F}=0\;</MATH>|1.76}} Warunek ten jest absolutnie fundamentalny: tylko pola o zerowej rotacji mogą być polami potencjalnymi. Oznacza to, że siła musi być „bezwirowa”, aby można było przypisać jej energię potencjalną. ---- * '''Niezależność pracy od drogi''' Udowodnijmy teraz, korzystając z równania {{LinkWzór|1.74}}, że całka pracy siły potencjalnej między punktami A i B jest niezależna od krzywej łączącej te punkty: {{CentrujWzór|<MATH> 0=\oint \vec{F}\,d\vec{r} =\int_{A(1)}^B \vec{F}\,d\vec{r} +\int_{B(2)}^A \vec{F}\,d\vec{r} =\int_{A(1)}^B \vec{F}\,d\vec{r} -\int_{A(2)}^B \vec{F}\,d\vec{r} \Rightarrow \int_{A(1)}^B \vec{F}\,d\vec{r} =\int_{A(2)}^B \vec{F}\,d\vec{r} \;</MATH>|1.77}} Widzimy zatem, że dla sił spełniających warunek {{LinkWzór|1.74}} lub równoważny {{LinkWzór|1.76}}, praca między punktami A i B '''nie zależy od drogi'''. Jest to definicja siły potencjalnej: siła taka „pamięta” tylko punkty początkowy i końcowy, a nie drogę, którą ciało przebyło. ---- * '''Definicja energii potencjalnej''' Jeśli ustaliliśmy, że dana siła jest siłą potencjalną, to energię potencjalną definiujemy jako: {{CentrujWzór|<MATH> U(\vec{r})=-\int_{\vec{r}_0}^{\vec{r}} \vec{F}\,d\vec{r} \Rightarrow dU=-\vec{F}\,d\vec{r} \Rightarrow \operatorname{grad}U\,d\vec{r}=-\vec{F}\,d\vec{r} \Rightarrow \vec{F}=-\operatorname{grad}U \;</MATH>|1.78}} Otrzymujemy więc fundamentalną zależność: * '''siła potencjalna jest gradientem energii potencjalnej ze znakiem minus''', * kierunek siły jest przeciwny do kierunku wzrostu energii potencjalnej. Jest to jedno z najważniejszych równań w mechanice klasycznej — łączy ono siłę z energią w sposób całkowicie ogólny. ---- * '''Klasyfikacja sił''' ** '''Siły potencjalne''' — siły posiadające potencjał, spełniające warunek {{Formuła|<MATH>\operatorname{rot}\vec{F}=0</MATH>}}. ** '''Siły konserwatywne''' — siły potencjalne '''niezależne od czasu'''; energia potencjalna jest zachowana. ** '''Siły niepotencjalne''' — siły, które '''nie posiadają potencjału''', np. siły tarcia; ich praca zależy od drogi. W ten sposób otrzymujemy pełną i spójną definicję energii potencjalnej oraz warunki, jakie musi spełniać siła, aby można było przypisać jej potencjał. ==== Energia potencjalna ciała w polu sił ciężkości ==== W tym fragmencie analizujemy jeden z najbardziej klasycznych i fundamentalnych przypadków energii potencjalnej: energię potencjalną ciała znajdującego się w jednorodnym polu sił ciężkości. Jest to sytuacja, która pojawia się w niezliczonych kontekstach fizycznych — od ruchu spadających ciał, przez dynamikę wahadeł, aż po energię potencjalną obiektów w polu grawitacyjnym Ziemi. Jednorodne pole grawitacyjne jest idealizacją, która doskonale opisuje warunki w pobliżu powierzchni Ziemi, gdzie przyspieszenie grawitacyjne można uznać za stałe. Niech naszym wektorem siły ciężkości będzie siła zależna od przyspieszenia ziemskiego {{Formuła|<MATH>\vec{g}</MATH>}}, lecz o zwrocie przeciwnym do kierunku osi pionowej rosnącej ku górze. Wektor siły ciężkości zapisujemy więc jako: {{CentrujWzór|<MATH>\vec{F}=-m\vec{g}\;</MATH>|1.79}} Wzór {{LinkWzór|1.79}} jest klasyczną definicją siły ciężkości: siła ta jest skierowana pionowo w dół, ma wartość równą iloczynowi masy i przyspieszenia ziemskiego, a jej kierunek jest przeciwny do osi z rosnącej ku górze. Jest to siła potencjalna, ponieważ jej praca zależy wyłącznie od różnicy wysokości, a nie od drogi, którą ciało przebyło. Zatem energia potencjalna według pierwszej równości {{LinkWzór|1.78}} wynosi: {{CentrujWzór|<MATH> U=-\int(-m\vec{g})\,d\vec{r} =m\int_0^{\vec{r}} \vec{g}\,d\vec{r} =mgz \;</MATH>|1.80}} Każdy krok tego wyprowadzenia ma głębokie znaczenie: * Całka z siły ciężkości jest całką z wektora stałego — przyspieszenie grawitacyjne nie zależy od położenia. * Całkowanie sprowadza się do obliczenia iloczynu masy, przyspieszenia ziemskiego i wysokości. * Otrzymujemy energię potencjalną proporcjonalną do wysokości — jest to najprostsza możliwa forma energii potencjalnej. Wynik {{LinkWzór|1.80}} oznacza, że: * energia potencjalna w polu grawitacyjnym zależy wyłącznie od wysokości {{Formuła|<MATH>z</MATH>}}, * jest proporcjonalna do masy ciała i przyspieszenia ziemskiego, * przyjmujemy konwencję, że energia potencjalna rośnie wraz z wysokością. Interpretacja fizyczna jest niezwykle intuicyjna: im wyżej znajduje się ciało, tym większą pracę trzeba wykonać, aby je tam umieścić, a więc tym większą energię potencjalną posiada. Energia ta jest „zmagazynowana” w konfiguracji układu i może zostać uwolniona, gdy ciało zacznie spadać. Jest to klasyczna postać energii potencjalnej w jednorodnym polu grawitacyjnym — jedna z najważniejszych zależności w całej mechanice klasycznej. Wynik ten stanowi fundament dla analizy ruchu w polu grawitacyjnym, dynamiki wahadeł, ruchu balistycznego, a także dla wielu zagadnień związanych z energią mechaniczną. ==== Energia potencjalna oscylatora harmonicznego tłumionego ==== W tym podrozdziale analizujemy energetyczny opis jednego z najważniejszych układów w fizyce klasycznej: oscylatora harmonicznego tłumionego. Jest to układ, który pojawia się w niezliczonych zastosowaniach — od drgań mechanicznych, przez układy elektroniczne, aż po modele atomowe i molekularne. Tłumienie jest zjawiskiem nieodłącznym w rzeczywistych układach: żadna sprężyna nie drga wiecznie, żadna konstrukcja nie wykonuje drgań bez strat, żadna fala nie propaguje się bez rozpraszania energii. Dlatego analiza energetyczna oscylatora tłumionego jest kluczowa dla zrozumienia dynamiki układów fizycznych. Równanie różniczkowe oscylatora harmonicznego {{LinkWzór|1.42|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika/Przykłady}} możemy pomnożyć przez pochodną współrzędnej położenia {{Formuła|<MATH>x\;</MATH>}}, czyli przez {{Formuła|<MATH>\dot{x}\;</MATH>}}. Wykonując to działanie, otrzymujemy zależność energetyczną: {{CentrujWzór|<MATH> \frac{d}{dt}\left(\frac{m\dot{x}^2}{2}+\frac{kx^2}{2}\right) =-2m\beta\,\dot{x}^2 \;</MATH>|1.81}} Wyrażenie po lewej stronie równania {{LinkWzór|1.81}}: {{Formuła|<MATH>\frac{d}{dt}\left(\frac{m\dot{x}^2}{2}+\frac{kx^2}{2}\right)</MATH>}} jest '''czasową pochodną energii całkowitej układu'''. Energia ta składa się z dwóch części: * energii kinetycznej: {{Formuła|<MATH>\frac{m\dot{x}^2}{2}</MATH>}}, * energii potencjalnej sprężyny: {{Formuła|<MATH>\frac{kx^2}{2}</MATH>}}. Suma tych dwóch składników jest energią mechaniczną oscylatora. Pochodna tej sumy względem czasu mówi nam, jak szybko energia mechaniczna zmienia się w czasie. Wyrażenie po prawej stronie równania: {{Formuła|<MATH>-2m\beta\,\dot{x}^2</MATH>}} jest '''mocą sił dysypatywnych''', czyli szybkością, z jaką energia mechaniczna jest tracona wskutek tłumienia. Ponieważ: * współczynnik tłumienia {{Formuła|<MATH>\beta</MATH>}} jest dodatni, * kwadrat prędkości {{Formuła|<MATH>\dot{x}^2</MATH>}} jest zawsze dodatni, całe wyrażenie jest '''ujemne'''. Oznacza to, że tłumienie '''zawsze''' zmniejsza energię układu — nigdy jej nie zwiększa. Jest to fundamentalna cecha sił dysypatywnych: działają one jak „opór energetyczny”, który odbiera układowi energię i zamienia ją na ciepło lub inne formy energii nieodwracalnej. ---- * Interpretacja fizyczna ** Energia całkowita oscylatora harmonicznego tłumionego '''nie jest zachowana'''. ** Tłumienie działa jak „opór energetyczny”, który systematycznie redukuje amplitudę drgań. ** Im większa prędkość {{Formuła|<MATH>\dot{x}</MATH>}}, tym większa moc tracona na skutek tłumienia — energia „ucieka” szybciej, gdy układ porusza się szybciej. ** Równanie {{LinkWzór|1.81}} jest energetycznym odpowiednikiem równania ruchu {{LinkWzór|1.42|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika/Przykłady}}. W ten sposób otrzymujemy pełny opis energetyczny oscylatora harmonicznego tłumionego — pokazujący, jak energia kinetyczna i potencjalna zmieniają się w czasie pod wpływem sił dysypatywnych. Jest to jeden z najważniejszych wyników w analizie układów drgających: tłumienie nie tylko zmienia równanie ruchu, lecz także wpływa na przepływ energii w układzie, prowadząc do stopniowego zaniku drgań. ==== Trójwymiarowy oscylator harmoniczny ==== W tym podrozdziale analizujemy pełną, trójwymiarową wersję oscylatora harmonicznego — jednego z najbardziej fundamentalnych układów w całej fizyce klasycznej i kwantowej. Oscylator harmoniczny w trzech wymiarach jest naturalnym uogólnieniem oscylatora jednowymiarowego, lecz jego struktura matematyczna i fizyczna jest znacznie bogatsza. Układ taki pojawia się w niezliczonych zastosowaniach: w drganiach atomów w cząsteczkach, w modelach kryształów, w dynamice pól kwantowych, w analizie ruchu w potencjałach centralnych, a także w wielu zagadnieniach związanych z symetrią przestrzeni. Siłę harmoniczną w trójwymiarowym układzie współrzędnych definiujemy jako iloczyn stałej sprężystości {{Formuła|<MATH>k\;</MATH>}} i wektora przemieszczenia od położenia równowagi {{Formuła|<MATH>\vec{r}\;</MATH>}}, wzięty z minusem: {{CentrujWzór|<MATH>\vec{F}=-k\vec{r}\;</MATH>|1.82}} Wzór {{LinkWzór|1.82}} jest naturalnym uogólnieniem prawa Hooke’a na trzy wymiary. Siła sprężystości jest zawsze skierowana przeciwnie do wektora przemieszczenia, a jej wartość rośnie proporcjonalnie do odległości od położenia równowagi. Oznacza to, że układ jest '''centralny''' — siła zawsze wskazuje na środek, niezależnie od kierunku wychylenia. Energię potencjalną zgodnie z definicją {{LinkWzór|1.78}} otrzymujemy jako całkę siły względem infinitezymalnego przesunięcia, również z minusem. Ponieważ siła jest proporcjonalna do wektora {{Formuła|<MATH>\vec{r}\;</MATH>}}, całkowanie wykonujemy składowo: {{CentrujWzór|<MATH> U =-\int_{\vec{0}}^{\vec{r}} \vec{F}\,d\vec{r} =k\int_{\vec{0}}^{\vec{r}} \vec{r}\,d\vec{r} =k\left(\int_0^x x\,dx + \int_0^y y\,dy + \int_0^z z\,dz\right) \;</MATH>}} Każdy składnik całki odpowiada energii potencjalnej wzdłuż jednej osi współrzędnych. Ponieważ siła jest liniowa i niezależna w każdej osi, całkowanie sprowadza się do trzech niezależnych całek jednowymiarowych. Po wykonaniu całkowania: {{CentrujWzór|<MATH> U =k\left(\frac{1}{2}x^2 + \frac{1}{2}y^2 + \frac{1}{2}z^2\right) =\frac{1}{2}k(x^2+y^2+z^2) =\frac{1}{2}k\,\vec{r}^{\,2} \;</MATH>|1.83}} Otrzymujemy energię potencjalną zależną wyłącznie od kwadratu odległości od położenia równowagi. Jest to niezwykle ważny wynik: energia potencjalna trójwymiarowego oscylatora harmonicznego jest funkcją radialną, zależną tylko od długości wektora {{Formuła|<MATH>\vec{r}</MATH>}}, a nie od kierunku. ---- * '''Interpretacja fizyczna''' ** Energia potencjalna trójwymiarowego oscylatora harmonicznego zależy wyłącznie od odległości od położenia równowagi. ** Powierzchnie stałej energii są '''sferami''' o promieniu {{Formuła|<MATH>r=\sqrt{\frac{2U}{k}}\;</MATH>}}. ** Układ zachowuje pełną symetrię izotropową — sprężyna „ciągnie” ciało zawsze w stronę środka, niezależnie od kierunku wychylenia. Interpretacja ta ma ogromne znaczenie fizyczne: * układ jest '''centralny''', * siła zależy tylko od odległości od środka, * energia potencjalna jest funkcją radialną, * ruch w takim potencjale jest naturalnym modelem dla wielu układów fizycznych, w tym dla oscylacji atomów w cząsteczkach i dla potencjałów kwantowych. Wynik {{LinkWzór|1.83}} jest naturalnym trójwymiarowym uogólnieniem energii potencjalnej oscylatora harmonicznego w jednym wymiarze. Pokazuje on, że struktura matematyczna oscylatora harmonicznego jest niezwykle elegancka: w każdym wymiarze energia potencjalna ma tę samą postać kwadratową, a w trzech wymiarach sumuje się do funkcji radialnej. Układ ten jest jednym z najważniejszych modeli w fizyce — jego symetria, prostota i uniwersalność sprawiają, że stanowi fundament dla wielu teorii, od klasycznej dynamiki po mechanikę kwantową. === Zasada zachowania energii === W tym podrozdziale przechodzimy do jednego z najważniejszych i najbardziej uniwersalnych praw fizyki: zasady zachowania energii. Jest to zasada, która przenika całą mechanikę klasyczną, mechanikę kwantową, teorię pól, termodynamikę, a nawet ogólną teorię względności. Energia jest wielkością, która nie powstaje z niczego i nie znika — może jedynie zmieniać formę. Aby jednak zrozumieć, skąd ta zasada wynika w mechanice Newtonowskiej, musimy przeanalizować równanie ruchu dla układu wielu cząstek i rozdzielić siły działające na układ na różne typy. Napiszmy drugą zasadę dynamiki Newtona {{LinkWzór|1.31|Kinematyka i dynamika klasyczna opisu punktu materialnego/Dynamika}} dla układu cząstek i rozdzielmy siły działające na układ na: * '''siły potencjalne''' ** działające '''wewnętrznie''': {{Formuła|<MATH>\vec F_{pij}</MATH>}} ** działające '''zewnętrznie''': {{Formuła|<MATH>\vec F_{pik}'</MATH>}} * '''siły dysypatywne''' ** działające '''wewnętrznie''': {{Formuła|<MATH>\vec F_{zij}</MATH>}} ** działające '''zewnętrznie''': {{Formuła|<MATH>\vec F_{zik}'</MATH>}} Podział ten jest kluczowy: siły potencjalne są siłami, które posiadają energię potencjalną, natomiast siły dysypatywne są siłami, które rozpraszają energię (np. tarcie, opór lepki). Siły wewnętrzne działają między cząstkami układu, natomiast siły zewnętrzne pochodzą spoza układu. Równanie ruchu dla cząstki {{Formuła|<MATH>i</MATH>}} ma postać: {{CentrujWzór|<MATH> m_i\dot{\vec{v}}_i =\sum_j\vec{F}_{zij} +\sum_j\vec{F}_{pij} +\sum_k\vec{F}_{zik}' +\sum_k\vec{F}_{pik}' \;</MATH>|1.69}} Równanie to mówi, że przyspieszenie cząstki wynika ze wszystkich sił działających na nią — zarówno potencjalnych, jak i dysypatywnych, wewnętrznych i zewnętrznych. ---- * '''Przejście do opisu energetycznego''' Pomnóżmy równanie {{LinkWzór|1.69}} przez {{Formuła|<MATH>\vec{v}_i\,dt\;</MATH>}}: {{CentrujWzór|<MATH> m_i\dot{\vec{v}}_i\,\vec{v}_i\,dt =\sum_j\vec{F}_{zij}d\vec{r}_i +\sum_j\vec{F}_{pij}d\vec{r}_i +\sum_k\vec{F}_{zik}'d\vec{r}_i +\sum_k\vec{F}_{pik}'d\vec{r}_i \Rightarrow </MATH>{{Br}}<MATH> \Rightarrow d\left(\frac{m_iv_i^2}{2}\right) =\sum_j\vec{F}_{zij}d\vec{r}_i +\sum_j\vec{F}_{pij}d\vec{r}_i +\sum_k\vec{F}_{zik}'d\vec{r}_i +\sum_k\vec{F}_{pik}'d\vec{r}_i \;</MATH>|1.70}} Wyrażenie po lewej stronie jest różniczką energii kinetycznej cząstki. Wyrażenia po prawej stronie są pracami wykonywanymi przez różne typy sił. Równanie {{LinkWzór|1.70}} dotyczy jednej cząstki. Sumując je po wszystkich cząstkach układu i korzystając z definicji różniczki energii potencjalnej {{LinkWzór|1.78|Kinematyka i dynamika klasyczna opisu punktu materialnego/Zasady zachowania}}, otrzymujemy: {{CentrujWzór|<MATH> dT =\underbrace{\sum_{ij,i\neq j}\vec{F}_{zij}d\vec{r}_i}_{dW_1} +\sum_{ij,i\neq j}\vec{F}_{pij}d\vec{r}_i +\underbrace{\sum_{ki}\vec{F}_{zik}'d\vec{r}_i}_{dW_2} +\underbrace{\sum_{ki}\vec{F}_{pik}'d\vec{r}_i}_{-dU_2} =dW_1+\sum_{ij,i\neq j}\vec{F}_{pij}d\vec{r}_i+dW_2-dU_2 </MATH>{{Br}}<MATH> =dW+\sum_{ij,i\neq j}\vec{F}_{pij}d\vec{r}_i-dU_2 \;</MATH>|1.71}} W równaniu tym: * {{Formuła|<MATH>dT</MATH>}} — zmiana energii kinetycznej, * {{Formuła|<MATH>dW</MATH>}} — praca sił dysypatywnych, * {{Formuła|<MATH>dU_1</MATH>}} — zmiana energii potencjalnej sił wewnętrznych, * {{Formuła|<MATH>dU_2</MATH>}} — zmiana energii potencjalnej sił zewnętrznych. ---- * '''Siły potencjalne wewnętrzne''' Rozpatrzmy teraz siły potencjalne działające między cząstkami: {{CentrujWzór|<MATH> \sum_{ij,i\neq j}\vec{F}_{pij}d\vec{r}_i =\sum_{i,j,i<j}\left(\vec{F}_{pij}d\vec{r}_i+\vec{F}_{pji}d\vec{r}_j\right) =\sum_{i,j,i<j}\left(\vec{F}_{pij}d\vec{r}_i-\vec{F}_{pij}d\vec{r}_j\right) </MATH>{{Br}}<MATH> =\sum_{i,j,i<j}\vec{F}_{pij}d(\vec{r}_i-\vec{r}_j) =\sum_{i,j,i<j}\vec{F}_{pij}d\vec{r}_{ij} =-\sum_{i,j,i<j}dU_{ij} =-dU_1 \;</MATH>|1.72}} W powyższym obliczeniu użyliśmy definicji różniczki zupełnej energii potencjalnej. Siły wewnętrzne potencjalne nie zmieniają energii całkowitej — jedynie zamieniają energię kinetyczną na potencjalną i odwrotnie. ---- * '''Końcowy wynik: równanie energii''' Podstawiając wynik {{LinkWzór|1.72}} do równania {{LinkWzór|1.71}}, otrzymujemy: {{CentrujWzór|<MATH> dT=dW-dU_1-dU_2 \Rightarrow dT+d(U_1+U_2)=dW \Rightarrow dT+dU=dW \Rightarrow d(T+U)=dW \Rightarrow dE=dW \;</MATH>|1.73}} Otrzymujemy fundamentalne równanie energii: * energia całkowita układu: {{Formuła|<MATH>E=T+U</MATH>}}, * jej zmiana jest równa pracy sił zewnętrznych: {{Formuła|<MATH>dE=dW</MATH>}}. ---- * '''Interpretacja fizyczna''' ** {{Formuła|<MATH>E=T+U\;</MATH>}} — energia całkowita układu. ** {{Formuła|<MATH>dE=dW\;</MATH>}} — zmiana energii układu jest równa pracy sił zewnętrznych. ** Jeśli siły zewnętrzne nie wykonują pracy (układ izolowany), to: {{Formuła|<MATH>dW=0 \Rightarrow dE=0</MATH>}}. co oznacza, że '''energia całkowita układu jest zachowana'''. ---- * '''Wniosek: zasada zachowania energii''' Zasada zachowania energii jest bezpośrednim skutkiem: * drugiej zasady Newtona, * trzeciej zasady Newtona, * definicji sił potencjalnych, * oraz własności sił dysypatywnych. W układzie izolowanym energia całkowita pozostaje stała — jest to jedno z najważniejszych praw fizyki klasycznej. == Wykorzystanie zasad zachowania do rozwiązywania równań ruchu == W tym podrozdziale pokazujemy, jak zasady zachowania — momentu pędu i energii — pozwalają sprowadzić pełny problem ruchu w polu centralnym do znacznie prostszego zagadnienia ruchu jednowymiarowego. Jest to jedna z najważniejszych technik w mechanice klasycznej: zamiast rozwiązywać pełne równania ruchu w dwóch lub trzech wymiarach, wykorzystujemy symetrie układu, aby zredukować liczbę stopni swobody. Załóżmy, że ciało porusza się w jednej płaszczyźnie. Z zasady zachowania '''momentu pędu''' i '''energii''', oraz z definicji prędkości w układzie współrzędnych radialnych, mamy: {{ElastycznyWiersz | 1 = {{CentrujWzór|<MATH>mr^2\dot{\phi}=L=\operatorname{const}\;</MATH>|1.84}} | 2 = {{CentrujWzór|<MATH>\frac{m}{2}\left(\dot{r}^2+r^2\dot{\phi}^2\right)+U(r)=E=\operatorname{const}\;</MATH>|1.85}} }} Wzór {{LinkWzór|1.84}} jest wyrazem zasady zachowania momentu pędu: jeśli siła działająca na ciało jest centralna (skierowana wzdłuż promienia), to moment pędu jest stały. Wzór {{LinkWzór|1.85}} jest wyrazem zasady zachowania energii: suma energii kinetycznej (radialnej i kątowej) oraz potencjalnej jest stała. Ze wzoru {{LinkWzór|1.84}} wyznaczamy {{Formuła|<MATH>\dot{\phi}\;</MATH>}} i podstawiamy do równania energii {{LinkWzór|1.85}}: {{CentrujWzór|<MATH> \frac{m\dot{r}^2}{2}+\frac{L^2}{2mr^2}+U(r)=E \;</MATH>|1.86}} Otrzymujemy równanie ruchu w kierunku radialnym. Jest to równanie jednowymiarowe, w którym efekty ruchu kątowego zostały „wbudowane” w dodatkowy składnik: {{Formuła|<MATH>\frac{L^2}{2mr^2}</MATH>}} zwany '''barierą odśrodkową'''. To równanie można rozwiązać metodą '''rozdzielenia zmiennych''', otrzymując: {{CentrujWzór|<MATH> dt=\pm\frac{dr}{\sqrt{\frac{2}{m}\left(E-U(r)-\frac{L^2}{2mr^2}\right)}} \;</MATH>|1.87}} Zatem czas przejścia z {{Formuła|<MATH>r_0\;</MATH>}} do {{Formuła|<MATH>r\;</MATH>}}: {{CentrujWzór|<MATH> t-t_0=\pm\int_{r_0}^r \frac{dr}{\sqrt{\frac{2}{m}\left(E-U(r)-\frac{L^2}{2mr^2}\right)}} \;</MATH>|1.88}} To równanie opisuje pełną dynamikę radialną — bez konieczności rozwiązywania równania dla kąta. ---- * Kąt obrotu jako funkcja położenia radialnego Z równania momentu pędu {{LinkWzór|1.84}}: {{CentrujWzór|<MATH> d\theta=\frac{L}{mr^2}\,dt \;</MATH>|1.89}} Podstawiając {{Formuła|<MATH>dt\;</MATH>}} z {{LinkWzór|1.87}} i całkując: {{CentrujWzór|<MATH> \theta-\theta_0 =\pm\int_{r_0}^r \frac{L\,dr}{r^2\sqrt{2m\left[E-U(r)-\frac{L^2}{2mr^2}\right]}} \;</MATH>|1.90}} Otrzymujemy pełną zależność kąta od promienia. W ten sposób rozwiązujemy ruch w polu centralnym '''bez rozwiązywania równań różniczkowych drugiego rzędu''' — jedynie całkując równania wynikające z zasad zachowania. ---- * Energia efektywna Wzory {{LinkWzór|1.88}} i {{LinkWzór|1.90}} można zapisać z użyciem '''energii efektywnej''': {{CentrujWzór|<MATH> U_{ef}(r)=U(r)+\frac{L^2}{2mr^2} \;</MATH>|1.91}} Wtedy równanie radialne ma postać: {{CentrujWzór|<MATH> \frac{m\dot{r}^2}{2}+U_{ef}(r)=E \;</MATH>}} co odpowiada ruchowi '''jednowymiarowemu''' w potencjale {{Formuła|<MATH>U_{ef}(r)</MATH>}}. Składnik {{Formuła|<MATH>\frac{L^2}{2mr^2}</MATH>}} jest barierą „odśrodkową” wynikającą z zachowania momentu pędu. Im większy moment pędu, tym większa bariera — ciało nie może zbliżyć się do środka poniżej pewnej minimalnej wartosci {{Formuła|<MATH>r</MATH>}}. Energia efektywna zależy więc: * od energii potencjalnej {{Formuła|<MATH>U(r)</MATH>}} w polu centralnym, * oraz od momentu pędu {{Formuła|<MATH>L</MATH>}}. Dzięki temu: * minimum {{Formuła|<MATH>U_{ef}(r)\;</MATH>}} wyznacza możliwe promienie orbit kołowych, * kształt {{Formuła|<MATH>U_{ef}(r)\;</MATH>}} decyduje o tym, czy ruch jest związany (oscylacje radialne), czy rozbiegający (ucieczka do {{Formuła|<MATH>r\to\infty\;</MATH>}}, * ruch w polu centralnym sprowadza się do analizy jednego wykresu — wykresu energii efektywnej. To jest główny sens „wykorzystania zasad zachowania” do rozwiązywania równań ruchu: * symetria układu pozwala zredukować pełny problem dwuwymiarowy do jednowymiarowego, a równania ruchu sprowadzają się do prostych całek. <noinclude>{{SkomplikowanaStronaKoniec}}</noinclude> p3kof3ljb0sv1ypykhibercdv8zhghk Szablon:OpisParametrów 10 64146 559490 559349 2026-10-17T05:11:22Z Persino 2851 559490 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {{#invoke:Ramka|Rozwiń|{{((}}GridTabela{{!}}pozycja{{=}}brak{{!}}klasa op{{=}}OpisParametrów-grid-op{{!}}klasa{{=}}gridtable OpisParametrów-grid {{(((}}klasa{{!}}{{)))}}{{!}}styl{{=}}width:auto;{{(((}}styl{{!}}{{)))}} {{!}} liczba kolumn {{=}} 3 {{!}} liczba wierszy {{=}} {{#expr:{{#invoke:Ramka|Powtarzaj|nie rozwiń=|1+}}+0}} {{!}} nagłówek 1 {{=}} Lp. {{!}} nagłówek 2 {{=}} Parametr {{!}} klasa 2 {{=}} {{(((}}klasa parametru{{!}}{{)))}} {{!}} styl 2 {{=}} {{(((}}styl parametru{{!}}{{)))}} {{!}} nagłówek 3 {{=}} Opis {{!}} klasa 3 {{=}} {{(((}}klasa opisu{{!}}{{)))}} {{!}} styl 3 {{=}} {{(((}}styl opisu{{!}}{{)))}} {{#invoke:Ramka|Powtarzaj|nie rozwiń=|warunkowe=tak|warunkowe ze zmiennymi=tak| {{!}} klasa wiersza {{((}}_{{))}} {{=}} {{(((}}klasa wiersza{{((}}_{{))}}{{!}}{{)))}} {{!}} styl wiersza {{((}}_{{))}} {{=}} {{(((}}styl wiersza{{((}}_{{))}}{{!}}{{)))}} {{!}} komórka {{((}}_{{))}}_1 {{=}} <div>{{((}}_{{))}}</div> {{!}} komórka {{((}}_{{))}}_2 {{=}} <div> {{(((}}{{((}}_{{))}}{{)))}}</div> {{!}} klasa {{((}}_{{))}}_2 {{=}} {{((}}#if:{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}OpisParametrów-komórka{{!}}{{))}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}OpisParametrów-nagłówek{{!}}{{))}} {{(((}}klasa parametru{{{((}}_{{))}}{{!}}{{)))}} {{!}} styl {{((}}_{{))}}_2 {{=}} {{(((}}styl parametru{{((}}_{{))}}{{!}}{{)))}} {{!}} kolumny {{((}}_{{))}}_2 {{=}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}2{{!}}1{{))}} {{!}} nagłówek {{((}}_{{))}}_2 {{=}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}tak{{))}} __((__#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}__!____!__ {{((}}!{{))}} komórka {{((}}_{{))}}_3 {{=}} <div> {{((}}((({{))}}_{{((}}_{{))}}{{((}}))){{))}}</div> {{((}}!{{))}} klasa {{((}}_{{))}}_3 {{=}} {{((}}((({{))}}klasa wartości{{((}}_{{))}}{{((}}!{{))}}{{((}}))){{))}} {{((}}!{{))}} styl {{((}}_{{))}}_3 {{=}} {{((}}((({{))}}styl wartości{{((}}_{{))}}{{((}}!{{))}}{{((}}))){{))}} __))__ }}{{))}}}}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}klasa parametru{{=}}{{!}}styl parametru{{=}}{{!}}klasa opisu{{=}}{{!}}styl opisu{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}styl parametru{{((}}_{{))}}{{=}}{{!}}klasa parametru{{((}}_{{))}}{{=}}{{!}}styl wartości{{((}}_{{))}}{{=}}{{!}}klasa wartości{{((}}_{{))}}{{=}}{{!}}styl wiersza{{((}}_{{))}}{{=}}{{!}}klasa wiersza{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 6n5xi0fn340qmupwzit4gpizk7txdm2 559491 559490 2026-10-17T05:12:09Z Persino 2851 Anulowano wersję [[Special:Diff/559490|559490]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 559491 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {{#invoke:Ramka|Rozwiń|{{((}}GridTabela{{!}}pozycja{{=}}brak{{!}}klasa op{{=}}OpisParametrów-grid-op{{!}}klasa{{=}}gridtable OpisParametrów-grid {{(((}}klasa{{!}}{{)))}}{{!}}styl{{=}}{{(((}}styl{{!}}{{)))}} {{!}} liczba kolumn {{=}} 3 {{!}} liczba wierszy {{=}} {{#expr:{{#invoke:Ramka|Powtarzaj|nie rozwiń=|1+}}+0}} {{!}} nagłówek 1 {{=}} Lp. {{!}} nagłówek 2 {{=}} Parametr {{!}} klasa 2 {{=}} {{(((}}klasa parametru{{!}}{{)))}} {{!}} styl 2 {{=}} {{(((}}styl parametru{{!}}{{)))}} {{!}} nagłówek 3 {{=}} Opis {{!}} klasa 3 {{=}} {{(((}}klasa opisu{{!}}{{)))}} {{!}} styl 3 {{=}} {{(((}}styl opisu{{!}}{{)))}} {{#invoke:Ramka|Powtarzaj|nie rozwiń=|warunkowe=tak|warunkowe ze zmiennymi=tak| {{!}} klasa wiersza {{((}}_{{))}} {{=}} {{(((}}klasa wiersza{{((}}_{{))}}{{!}}{{)))}} {{!}} styl wiersza {{((}}_{{))}} {{=}} {{(((}}styl wiersza{{((}}_{{))}}{{!}}{{)))}} {{!}} komórka {{((}}_{{))}}_1 {{=}} <div>{{((}}_{{))}}</div> {{!}} komórka {{((}}_{{))}}_2 {{=}} <div> {{(((}}{{((}}_{{))}}{{)))}}</div> {{!}} klasa {{((}}_{{))}}_2 {{=}} {{((}}#if:{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}OpisParametrów-komórka{{!}}{{))}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}OpisParametrów-nagłówek{{!}}{{))}} {{(((}}klasa parametru{{{((}}_{{))}}{{!}}{{)))}} {{!}} styl {{((}}_{{))}}_2 {{=}} {{(((}}styl parametru{{((}}_{{))}}{{!}}{{)))}} {{!}} kolumny {{((}}_{{))}}_2 {{=}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}2{{!}}1{{))}} {{!}} nagłówek {{((}}_{{))}}_2 {{=}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}tak{{))}} __((__#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}__!____!__ {{((}}!{{))}} komórka {{((}}_{{))}}_3 {{=}} <div> {{((}}((({{))}}_{{((}}_{{))}}{{((}}))){{))}}</div> {{((}}!{{))}} klasa {{((}}_{{))}}_3 {{=}} {{((}}((({{))}}klasa wartości{{((}}_{{))}}{{((}}!{{))}}{{((}}))){{))}} {{((}}!{{))}} styl {{((}}_{{))}}_3 {{=}} {{((}}((({{))}}styl wartości{{((}}_{{))}}{{((}}!{{))}}{{((}}))){{))}} __))__ }}{{))}}}}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}klasa parametru{{=}}{{!}}styl parametru{{=}}{{!}}klasa opisu{{=}}{{!}}styl opisu{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}styl parametru{{((}}_{{))}}{{=}}{{!}}klasa parametru{{((}}_{{))}}{{=}}{{!}}styl wartości{{((}}_{{))}}{{=}}{{!}}klasa wartości{{((}}_{{))}}{{=}}{{!}}styl wiersza{{((}}_{{))}}{{=}}{{!}}klasa wiersza{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> ebr0hnr7qbaneu0z7uledgzjp0g0pwg Moduł:GridTabela 828 64408 559464 559413 2026-10-16T12:59:58Z Persino 2851 559464 Scribunto text/plain local p={}; function p.GridTabela(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local tab_parametry={} local pozycja=args["pozycja"];tab_parametry["pozycja"]="^prawo$|^lewo$|^centruj$|^brak$"; local styl=args["styl"];tab_parametry["styl"]=""; local klasa=args["klasa"];tab_parametry["klasa"]=""; local czy_klasa=parametry_modul.CzyTak(klasa); klasa="gridtabela-moduł "..(czy_klasa and klasa or ""); local id=args["id"];tab_parametry["id"]=""; local atrybuty=args["atrybuty"];tab_parametry["atrybuty"]=""; local czy_id=parametry_modul.CzyTak(id); local czy_atrybuty=parametry_modul.CzyTak(atrybuty); local kol=tonumber(args["liczba kolumn"]) or 1; local liczba_kolumn=(kol>0)and kol or 0; tab_parametry["liczba kolumn"]="^%d+$!"; local wier=tonumber(args["liczba wierszy"]) or 1; local liczba_wierszy=(wier>0)and wier or 0; tab_parametry["liczba wierszy"]="^%d+$!"; --- --- local function TempFunc(atrybuty,zmienna) if(not parametry_modul.CzyTak(atrybuty))then return atrybuty;end; atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\""," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'"," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*"," "); return atrybuty; end; local function TempFunc2(atrybuty,zmienna) local wartosc=atrybuty and (mw.ustring.match(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\"") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*") ) or nil; return wartosc; end; local cellspacing=TempFunc2(atrybuty,"cellspacing"); cellspacing=tonumber(cellspacing) or nil; local cellpadding=TempFunc2(atrybuty,"cellpadding"); local border=TempFunc2(atrybuty,"border"); --- atrybuty=TempFunc(atrybuty,"cellspacing"); atrybuty=TempFunc(atrybuty,"cellpadding"); atrybuty=TempFunc(atrybuty,"border"); local str=""; -- local id_tytulu=args["id tytułu"];local czy_id_tytulu=parametry_modul.CzyTak(id_tytulu); local klasa_tytulu=args["klasa tytułu"];local czy_klasa_tytulu=parametry_modul.CzyTak(klasa_tytulu); local styl_tytulu=args["styl tytułu"];local czy_styl_tytulu=parametry_modul.CzyTak(styl_tytulu); local opcje_tytulu=args["opcje tytułu"];local czy_opcje_tytulu=parametry_modul.CzyTak(opcje_tytulu); local tytul=args["tytuł"]; local str_tytul; if(tytul)then str_tytul="<div"..((czy_id_tytulu) and(" style=\""..id_tytulu.."\"") or "") .." class=\"tytuł "..(czy_klasa_tytulu and klasa_tytulu or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "").."grid-area:_0;"..(czy_styl_tytulu and styl_tytulu or "")..";\"" ..((czy_opcje_tytulu) and (" "..opcje_tytulu) or "")..">" .."<div class=\"gridtabela-dziecko\">"..(tytul and (mw.ustring.match(tytul,"^{|") or mw.ustring.match(tytul,"^[%*#:;]")) and ("\n"..tytul) or tytul) .."</div>" .."</div>"; if(str_tytul)then tab_parametry["id tytułu"]="";tab_parametry["klasa tytułu"]="";tab_parametry["styl tytułu"]="";tab_parametry["opcje tytułu"]=""; end; tab_parametry["tytuł"]="!"; end; --- local str_grid=""; local str_grid_tytul=""; --- if(str_tytul)then for numer_kolumny=1,liczba_kolumn,1 do str_grid_tytul=((numer_kolumny==1)and "'" or "")..str_grid_tytul.."_0"..((numer_kolumny==liczba_kolumn)and "'\n" or " "); end; end; local czy_naglowki=false; for i=1,liczba_kolumn,1 do if(args["nagłówek "..i])then czy_naglowki=true;break;end;end; if(czy_naglowki)then local id_naglowka=args["id nagłówka"];tab_parametry["id nagłówka"]=""; local klasa_naglowka=args["klasa nagłówka"];tab_parametry["klasa nagłówka"]=""; local styl_naglowka=args["styl nagłówka"];tab_parametry["styl nagłówka"]=""; local opcje_naglowka=args["opcje nagłówka"];tab_parametry["opcje nagłówka"]=""; --[[str=str.."|-"..(parametry_modul.CzyTak(id_naglowka)and " class=\""..id_naglowka.."\"" or "") ..(parametry_modul.CzyTak(klasa_naglowka)and " class=\""..klasa_naglowka.."\"" or "") ..(parametry_modul.CzyTak(styl_naglowka)and " style=\""..styl_naglowka.."\"" or "") ..(parametry_modul.CzyTak(opcje_naglowka)and " "..opcje_naglowka or "") .."\n";]] local function ColSpanNaglowka(tabnaglowka,numer_kolumny) for k=1,#tabnaglowka,1 do local tabnaglowka2=tabnaglowka[k]; if(tabnaglowka2[1]<=numer_kolumny)and(tabnaglowka2[2]>=numer_kolumny)then return true,tabnaglowka2[3]; end; end; return false; end; local tabnaglowka={}; for numer_kolumny=1,liczba_kolumn,1 do local wynik,str_grid2=ColSpanNaglowka(tabnaglowka,numer_kolumny); str_grid=((numer_kolumny==1)and "'" or "")..str_grid..(str_grid2 or ("_"..numer_kolumny))..((numer_kolumny==liczba_kolumn) and "'\n" or " "); if(not wynik)then local opcje=args["opcje "..numer_kolumny]; tab_parametry["opcje "..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan"); opcje=TempFunc(opcje,"colspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local colspan=colspan2 or args["kolumny "..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; local naglowek=args["nagłówek "..numer_kolumny]; tab_parametry["kolumny "..numer_kolumny]="^%d+$"; local col=colspan and tonumber(colspan) or 1; colspan=(col>1) and col or 1; if(colspan>1)then table.insert(tabnaglowka,{numer_kolumny,numer_kolumny+colspan-1,"_"..numer_kolumny}) end; local czy_id=parametry_modul.CzyTak(args["id "..numer_kolumny]); local czy_klasa=parametry_modul.CzyTak(args["klasa "..numer_kolumny]); local czy_styl=parametry_modul.CzyTak(args["styl "..numer_kolumny]); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); str=str.."<div" ..(czy_id and " id=\""..args["id "..numer_kolumny].."\"" or "") .." class=\"nagłówek nagłówek-tytuł kolumna-"..numer_kolumny.." "..(args["klasa "..numer_kolumny] or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "").."grid-area:".."_"..numer_kolumny..";"..(width and ("width:"..width..";") or "")..(height and ("height:"..height..";") or "")..(args["styl "..numer_kolumny] or "").."\"" ..">" ..(czy_opcje and " "..args["opcje "..numer_kolumny] or "") --..((kolumny and not colspan2) and " colspan=\""..kolumny.."\"" or "") --..((czy_opcje or czy_styl or czy_klasa or kolumny) and " | " or " ") .."<div class=\"gridtabela-dziecko\">"..((naglowek and (mw.ustring.match(naglowek,"^{|") or mw.ustring.match(naglowek,"^[%*#:;]")) and ("\n"..naglowek) or naglowek) or "{{{nagłówek "..numer_kolumny.."}}}") .."</div>" .."</div>"; tab_parametry["id "..numer_kolumny]=""; tab_parametry["klasa "..numer_kolumny]=""; tab_parametry["styl "..numer_kolumny]=""; tab_parametry["opcje "..numer_kolumny]=""; tab_parametry["nagłówek "..numer_kolumny]="!"; end; end; end; local function ColAndRowSpan(tab,numer_wiersza,numer_kolumny) for k=1,#tab,1 do local tab2=tab[k]; if(tab2[1]<=numer_wiersza)and(tab2[2]<=numer_kolumny)and(tab2[3]>=numer_wiersza)and(tab2[4]>=numer_kolumny)then return true,tab2[5]; end; end; return false; end; local tab={}; for numer_wiersza=1,liczba_wierszy,1 do --local id_wiersza=args["id wiersza "..numer_wiersza]; local klasa_wiersza=args["klasa wiersza "..numer_wiersza]; local styl_wiersza=args["styl wiersza "..numer_wiersza]; local opcje_wiersza=args["opcje wiersza "..numer_wiersza]; --tab_parametry["id wiersza "..numer_wiersza]=""; tab_parametry["klasa wiersza "..numer_wiersza]=""; tab_parametry["styl wiersza "..numer_wiersza]=""; tab_parametry["opcje wiersza "..numer_wiersza]=""; --local czy_id=parametry_modul.CzyTak(id_wiersza); local czy_klasa_wiersza=parametry_modul.CzyTak(klasa_wiersza); local czy_styl_wiersza=parametry_modul.CzyTak(styl_wiersza); local czy_opcje_wiersza=parametry_modul.CzyTak(opcje_wiersza); local str_grid2=""; for numer_kolumny=1,liczba_kolumn,1 do local czypominac,grid_area=ColAndRowSpan(tab,numer_wiersza,numer_kolumny); str_grid2=""..str_grid2..(grid_area or ("_"..numer_wiersza.."_"..numer_kolumny)).." "; if(not czypominac)then local opcje=args["opcje "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["opcje "..numer_wiersza.."_"..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan"); opcje=TempFunc(opcje,"colspan"); local colspan=colspan2 or args["kolumny "..numer_wiersza.."_"..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; --- local rowspan2=TempFunc2(opcje,"rowspan"); opcje=TempFunc(opcje,"rowspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local rowspan=rowspan2 or args["wiersze "..numer_wiersza.."_"..numer_kolumny]; local wiersze=parametry_modul.CzyTak(rowspan) and rowspan or nil; ---- if(not colspan2)then tab_parametry["kolumny "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if(not rowspan2)then tab_parametry["wiersze "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if((not wiersze)and(not kolumny))then local scal=args["scal "..numer_wiersza.."_"..numer_kolumny]; if(parametry_modul.CzyTak(scal))then wiersze,kolumny=mw.ustring.match(scal,"^(%d+)%s+(%d+)$"); end; tab_parametry["scal "..numer_wiersza.."_"..numer_kolumny]="^%d+%s+%d+$"; end; local col=kolumny and tonumber(kolumny) or 1; local row=wiersze and tonumber(wiersze) or 1; colspan=(col>1)and col or 1; rowspan=(row>1) and row or 1; if(((colspan>1)and(rowspan>1))or((colspan>1)and(rowspan==1))or((colspan==1)and(rowspan>1)))then table.insert(tab,{numer_wiersza,numer_kolumny,numer_wiersza+rowspan-1,numer_kolumny+colspan-1,"_"..numer_wiersza.."_"..numer_kolumny}) end; opcje=parametry_modul.CzyTak(opcje)and opcje or nil; local komorka=args["komórka "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["komórka "..numer_wiersza.."_"..numer_kolumny]="!"; tab_parametry["nagłówek "..numer_wiersza.."_"..numer_kolumny]=""; local jaka_komorki; if(parametry_modul.CzyTak(args["nagłówek "..numer_wiersza.."_"..numer_kolumny]))then jaka_komorki="nagłówek"; else jaka_komorki="komórka"; end; local id_komorki=args["id "..numer_wiersza.."_"..numer_kolumny]; local klasa_komorki=args["klasa "..numer_wiersza.."_"..numer_kolumny]; local styl_komorki=args["styl "..numer_wiersza.."_"..numer_kolumny]; local bez_pionu=args["bez pionu "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["id "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["klasa "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["styl "..numer_wiersza.."_"..numer_kolumny]="" tab_parametry["bez pionu "..numer_wiersza.."_"..numer_kolumny]=""; local czy_id_komorki=parametry_modul.CzyTak(id_komorki); local czy_klasa_komorki=parametry_modul.CzyTak(klasa_komorki); local czy_styl_komorki=parametry_modul.CzyTak(styl_komorki); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); local czy_bez_pionu=parametry_modul.CzyTak(bez_pionu); str=str.."<div" ..((czy_id_komorki) and " id=\""..id_komorki.."\"" or "") .." class=\""..(czy_klasa_wiersza and klasa_wiersza or "").." "..jaka_komorki.." ".."wiersz-"..numer_wiersza.." kolumna-"..numer_kolumny.." "..(klasa_komorki or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "")..(czy_styl_wiersza and styl_wiersza or "")..";grid-area:_"..numer_wiersza.."_"..numer_kolumny..";"..(width and ("width:"..width..";") or "")..(height and ("height:"..height..";") or "")..(styl_komorki or "").."\"" ..(czy_opcje_wiersza and opcje_wiersza or "").." "..(czy_opcje and opcje or "")..">" --..((czy_opcje or czy_styl_komorki or czy_klasa_komorki or wiersze or kolumny) and ((not czy_bez_pionu) and " | " or " ") or " ") .."<div class=\"gridtabela-dziecko\">"..((komorka and (mw.ustring.match(komorka,"^{|") or mw.ustring.match(komorka,"^[%*#:;]")) and ("\n"..komorka) or komorka) or "{{{komórka "..numer_wiersza.."_"..numer_kolumny.."}}}") .."</div>" .."</div>"; end; end; str_grid=str_grid.."'"..str_grid2.."'\n"; end; local grid_rozmiar_template="grid-template-columns:"; for numer_kolumny=1,liczba_kolumn,1 do grid_rozmiar_template=grid_rozmiar_template.." auto"; end; local str_tabela="<div"..(czy_id and (" id=\""..id.."\"") or "") .." class=\""..(((tonumber(cellspacing)or 0) > 0)and "cellspacing " or "")..klasa.."\"" .." style=\"display:grid;grid-template-areas:"..(str_grid_tytul or "")..str_grid..";"..grid_rozmiar_template..";"..";gap:"..(cellspacing or 0).."px;" ..(((cellspacing or 0)>0) and "margin:0;" or "")..(border and ("border-width:"..border.."px;") or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "")..(czy_styl and (styl..";") or "").."\"" ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "") ..">"..(str_tytul or "")..str.."</div>"; if(parametry_modul.CzyTak(pozycja))then local nazwa_klasy="";local tak=false; if(pozycja=="prawo")then nazwa_klasy="tabela-prawo"; tak=true; elseif(pozycja=="lewo")then nazwa_klasy="tabela-lewo"; tak=true; elseif(pozycja=="centruj")then nazwa_klasy="tabela-centruj"; tak=true; elseif(pozycja=="brak")then nazwa_klasy="tabela-brak"; tak=true; end; if(tak)then tab_parametry["id op"]=""; tab_parametry["klasa op"]=""; tab_parametry["styl op"]=""; local id_op=args["id op"]; local klasa_op=args["klasa op"]; local styl_op=args["styl op"]; local czy_id_op=parametry_modul.CzyTak(id_op); local czy_klasa_op=parametry_modul.CzyTak(klasa_op); local czy_styl_op=parametry_modul.CzyTak(styl_op); str_tabela="<div "..((czy_id_op)and("id=\""..id_op.."\"")or("")).." class=\"gridtabela-moduł-op "..nazwa_klasy.." "..((czy_klasa_op) and (klasa_op) or "").."\" "..((czy_styl_op)and("style=\""..styl_op.."\"") or "")..">\n"..str_tabela.."\n</div>"; end; end; local sprawdz_modul=require("Module:Sprawdź"); tab_parametry[""]="problemy-w-szablonie-%s {{Kategoria|Szablon %s do sprawdzenia}}"; local frame2=frame:getParent():newChild{args=tab_parametry,}; local fun_parametry=sprawdz_modul.Parametry(frame2) or ""; return str_tabela..(((fun_parametry)and(fun_parametry~="")) and ("\n"..fun_parametry) or ""); end; return p; s3hkw1ldh1j2da8poybj55lr0rok2gh 559465 559464 2026-10-16T13:06:57Z Persino 2851 559465 Scribunto text/plain local p={}; function p.GridTabela(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local tab_parametry={} local pozycja=args["pozycja"];tab_parametry["pozycja"]="^prawo$|^lewo$|^centruj$|^brak$"; local styl=args["styl"];tab_parametry["styl"]=""; local czy_styl=parametry_modulk.CzyTak(styl); local klasa=args["klasa"];tab_parametry["klasa"]=""; local czy_klasa=parametry_modul.CzyTak(klasa); klasa="gridtabela-moduł "..(czy_klasa and klasa or ""); local id=args["id"];tab_parametry["id"]=""; local atrybuty=args["atrybuty"];tab_parametry["atrybuty"]=""; local czy_id=parametry_modul.CzyTak(id); local czy_atrybuty=parametry_modul.CzyTak(atrybuty); local kol=tonumber(args["liczba kolumn"]) or 1; local liczba_kolumn=(kol>0)and kol or 0; tab_parametry["liczba kolumn"]="^%d+$!"; local wier=tonumber(args["liczba wierszy"]) or 1; local liczba_wierszy=(wier>0)and wier or 0; tab_parametry["liczba wierszy"]="^%d+$!"; --- --- local function TempFunc(atrybuty,zmienna) if(not parametry_modul.CzyTak(atrybuty))then return atrybuty;end; atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\""," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'"," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*"," "); return atrybuty; end; local function TempFunc2(atrybuty,zmienna) local wartosc=atrybuty and (mw.ustring.match(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\"") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*") ) or nil; return wartosc; end; local cellspacing=TempFunc2(atrybuty,"cellspacing"); cellspacing=tonumber(cellspacing) or nil; local cellpadding=TempFunc2(atrybuty,"cellpadding"); local border=TempFunc2(atrybuty,"border"); --- atrybuty=TempFunc(atrybuty,"cellspacing"); atrybuty=TempFunc(atrybuty,"cellpadding"); atrybuty=TempFunc(atrybuty,"border"); local str=""; -- local id_tytulu=args["id tytułu"];local czy_id_tytulu=parametry_modul.CzyTak(id_tytulu); local klasa_tytulu=args["klasa tytułu"];local czy_klasa_tytulu=parametry_modul.CzyTak(klasa_tytulu); local styl_tytulu=args["styl tytułu"];local czy_styl_tytulu=parametry_modul.CzyTak(styl_tytulu); local opcje_tytulu=args["opcje tytułu"];local czy_opcje_tytulu=parametry_modul.CzyTak(opcje_tytulu); local tytul=args["tytuł"]; local str_tytul; if(tytul)then str_tytul="<div"..((czy_id_tytulu) and(" style=\""..id_tytulu.."\"") or "") .." class=\"tytuł "..(czy_klasa_tytulu and klasa_tytulu or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "").."grid-area:_0;"..(czy_styl_tytulu and styl_tytulu or "")..";\"" ..((czy_opcje_tytulu) and (" "..opcje_tytulu) or "")..">" .."<div class=\"gridtabela-dziecko\">"..(tytul and (mw.ustring.match(tytul,"^{|") or mw.ustring.match(tytul,"^[%*#:;]")) and ("\n"..tytul) or tytul) .."</div>" .."</div>"; if(str_tytul)then tab_parametry["id tytułu"]="";tab_parametry["klasa tytułu"]="";tab_parametry["styl tytułu"]="";tab_parametry["opcje tytułu"]=""; end; tab_parametry["tytuł"]="!"; end; --- local str_grid=""; local str_grid_tytul=""; --- if(str_tytul)then for numer_kolumny=1,liczba_kolumn,1 do str_grid_tytul=((numer_kolumny==1)and "'" or "")..str_grid_tytul.."_0"..((numer_kolumny==liczba_kolumn)and "'\n" or " "); end; end; local czy_naglowki=false; for i=1,liczba_kolumn,1 do if(args["nagłówek "..i])then czy_naglowki=true;break;end;end; if(czy_naglowki)then local id_naglowka=args["id nagłówka"];tab_parametry["id nagłówka"]=""; local klasa_naglowka=args["klasa nagłówka"];tab_parametry["klasa nagłówka"]=""; local styl_naglowka=args["styl nagłówka"];tab_parametry["styl nagłówka"]=""; local opcje_naglowka=args["opcje nagłówka"];tab_parametry["opcje nagłówka"]=""; --[[str=str.."|-"..(parametry_modul.CzyTak(id_naglowka)and " class=\""..id_naglowka.."\"" or "") ..(parametry_modul.CzyTak(klasa_naglowka)and " class=\""..klasa_naglowka.."\"" or "") ..(parametry_modul.CzyTak(styl_naglowka)and " style=\""..styl_naglowka.."\"" or "") ..(parametry_modul.CzyTak(opcje_naglowka)and " "..opcje_naglowka or "") .."\n";]] local function ColSpanNaglowka(tabnaglowka,numer_kolumny) for k=1,#tabnaglowka,1 do local tabnaglowka2=tabnaglowka[k]; if(tabnaglowka2[1]<=numer_kolumny)and(tabnaglowka2[2]>=numer_kolumny)then return true,tabnaglowka2[3]; end; end; return false; end; local tabnaglowka={}; for numer_kolumny=1,liczba_kolumn,1 do local wynik,str_grid2=ColSpanNaglowka(tabnaglowka,numer_kolumny); str_grid=((numer_kolumny==1)and "'" or "")..str_grid..(str_grid2 or ("_"..numer_kolumny))..((numer_kolumny==liczba_kolumn) and "'\n" or " "); if(not wynik)then local opcje=args["opcje "..numer_kolumny]; tab_parametry["opcje "..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan"); opcje=TempFunc(opcje,"colspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local colspan=colspan2 or args["kolumny "..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; local naglowek=args["nagłówek "..numer_kolumny]; tab_parametry["kolumny "..numer_kolumny]="^%d+$"; local col=colspan and tonumber(colspan) or 1; colspan=(col>1) and col or 1; if(colspan>1)then table.insert(tabnaglowka,{numer_kolumny,numer_kolumny+colspan-1,"_"..numer_kolumny}) end; local czy_id=parametry_modul.CzyTak(args["id "..numer_kolumny]); local czy_klasa=parametry_modul.CzyTak(args["klasa "..numer_kolumny]); local czy_styl=parametry_modul.CzyTak(args["styl "..numer_kolumny]); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); str=str.."<div" ..(czy_id and " id=\""..args["id "..numer_kolumny].."\"" or "") .." class=\"nagłówek nagłówek-tytuł kolumna-"..numer_kolumny.." "..(args["klasa "..numer_kolumny] or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "").."grid-area:".."_"..numer_kolumny..";"..(width and ("width:"..width..";") or "")..(height and ("height:"..height..";") or "")..(args["styl "..numer_kolumny] or "").."\"" ..">" ..(czy_opcje and " "..args["opcje "..numer_kolumny] or "") --..((kolumny and not colspan2) and " colspan=\""..kolumny.."\"" or "") --..((czy_opcje or czy_styl or czy_klasa or kolumny) and " | " or " ") .."<div class=\"gridtabela-dziecko\">"..((naglowek and (mw.ustring.match(naglowek,"^{|") or mw.ustring.match(naglowek,"^[%*#:;]")) and ("\n"..naglowek) or naglowek) or "{{{nagłówek "..numer_kolumny.."}}}") .."</div>" .."</div>"; tab_parametry["id "..numer_kolumny]=""; tab_parametry["klasa "..numer_kolumny]=""; tab_parametry["styl "..numer_kolumny]=""; tab_parametry["opcje "..numer_kolumny]=""; tab_parametry["nagłówek "..numer_kolumny]="!"; end; end; end; local function ColAndRowSpan(tab,numer_wiersza,numer_kolumny) for k=1,#tab,1 do local tab2=tab[k]; if(tab2[1]<=numer_wiersza)and(tab2[2]<=numer_kolumny)and(tab2[3]>=numer_wiersza)and(tab2[4]>=numer_kolumny)then return true,tab2[5]; end; end; return false; end; local tab={}; for numer_wiersza=1,liczba_wierszy,1 do --local id_wiersza=args["id wiersza "..numer_wiersza]; local klasa_wiersza=args["klasa wiersza "..numer_wiersza]; local styl_wiersza=args["styl wiersza "..numer_wiersza]; local opcje_wiersza=args["opcje wiersza "..numer_wiersza]; --tab_parametry["id wiersza "..numer_wiersza]=""; tab_parametry["klasa wiersza "..numer_wiersza]=""; tab_parametry["styl wiersza "..numer_wiersza]=""; tab_parametry["opcje wiersza "..numer_wiersza]=""; --local czy_id=parametry_modul.CzyTak(id_wiersza); local czy_klasa_wiersza=parametry_modul.CzyTak(klasa_wiersza); local czy_styl_wiersza=parametry_modul.CzyTak(styl_wiersza); local czy_opcje_wiersza=parametry_modul.CzyTak(opcje_wiersza); local str_grid2=""; for numer_kolumny=1,liczba_kolumn,1 do local czypominac,grid_area=ColAndRowSpan(tab,numer_wiersza,numer_kolumny); str_grid2=""..str_grid2..(grid_area or ("_"..numer_wiersza.."_"..numer_kolumny)).." "; if(not czypominac)then local opcje=args["opcje "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["opcje "..numer_wiersza.."_"..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan"); opcje=TempFunc(opcje,"colspan"); local colspan=colspan2 or args["kolumny "..numer_wiersza.."_"..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; --- local rowspan2=TempFunc2(opcje,"rowspan"); opcje=TempFunc(opcje,"rowspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local rowspan=rowspan2 or args["wiersze "..numer_wiersza.."_"..numer_kolumny]; local wiersze=parametry_modul.CzyTak(rowspan) and rowspan or nil; ---- if(not colspan2)then tab_parametry["kolumny "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if(not rowspan2)then tab_parametry["wiersze "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if((not wiersze)and(not kolumny))then local scal=args["scal "..numer_wiersza.."_"..numer_kolumny]; if(parametry_modul.CzyTak(scal))then wiersze,kolumny=mw.ustring.match(scal,"^(%d+)%s+(%d+)$"); end; tab_parametry["scal "..numer_wiersza.."_"..numer_kolumny]="^%d+%s+%d+$"; end; local col=kolumny and tonumber(kolumny) or 1; local row=wiersze and tonumber(wiersze) or 1; colspan=(col>1)and col or 1; rowspan=(row>1) and row or 1; if(((colspan>1)and(rowspan>1))or((colspan>1)and(rowspan==1))or((colspan==1)and(rowspan>1)))then table.insert(tab,{numer_wiersza,numer_kolumny,numer_wiersza+rowspan-1,numer_kolumny+colspan-1,"_"..numer_wiersza.."_"..numer_kolumny}) end; opcje=parametry_modul.CzyTak(opcje)and opcje or nil; local komorka=args["komórka "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["komórka "..numer_wiersza.."_"..numer_kolumny]="!"; tab_parametry["nagłówek "..numer_wiersza.."_"..numer_kolumny]=""; local jaka_komorki; if(parametry_modul.CzyTak(args["nagłówek "..numer_wiersza.."_"..numer_kolumny]))then jaka_komorki="nagłówek"; else jaka_komorki="komórka"; end; local id_komorki=args["id "..numer_wiersza.."_"..numer_kolumny]; local klasa_komorki=args["klasa "..numer_wiersza.."_"..numer_kolumny]; local styl_komorki=args["styl "..numer_wiersza.."_"..numer_kolumny]; local bez_pionu=args["bez pionu "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["id "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["klasa "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["styl "..numer_wiersza.."_"..numer_kolumny]="" tab_parametry["bez pionu "..numer_wiersza.."_"..numer_kolumny]=""; local czy_id_komorki=parametry_modul.CzyTak(id_komorki); local czy_klasa_komorki=parametry_modul.CzyTak(klasa_komorki); local czy_styl_komorki=parametry_modul.CzyTak(styl_komorki); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); local czy_bez_pionu=parametry_modul.CzyTak(bez_pionu); str=str.."<div" ..((czy_id_komorki) and " id=\""..id_komorki.."\"" or "") .." class=\""..(czy_klasa_wiersza and klasa_wiersza or "").." "..jaka_komorki.." ".."wiersz-"..numer_wiersza.." kolumna-"..numer_kolumny.." "..(klasa_komorki or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "")..(czy_styl_wiersza and styl_wiersza or "")..";grid-area:_"..numer_wiersza.."_"..numer_kolumny..";"..(width and ("width:"..width..";") or "")..(height and ("height:"..height..";") or "")..(styl_komorki or "").."\"" ..(czy_opcje_wiersza and opcje_wiersza or "").." "..(czy_opcje and opcje or "")..">" --..((czy_opcje or czy_styl_komorki or czy_klasa_komorki or wiersze or kolumny) and ((not czy_bez_pionu) and " | " or " ") or " ") .."<div class=\"gridtabela-dziecko\">"..((komorka and (mw.ustring.match(komorka,"^{|") or mw.ustring.match(komorka,"^[%*#:;]")) and ("\n"..komorka) or komorka) or "{{{komórka "..numer_wiersza.."_"..numer_kolumny.."}}}") .."</div>" .."</div>"; end; end; str_grid=str_grid.."'"..str_grid2.."'\n"; end; local grid_rozmiar_template="grid-template-columns:"; for numer_kolumny=1,liczba_kolumn,1 do grid_rozmiar_template=grid_rozmiar_template.." auto"; end; local str_tabela="<div"..(czy_id and (" id=\""..id.."\"") or "") .." class=\""..(((tonumber(cellspacing)or 0) > 0)and "cellspacing " or "")..klasa.."\"" .." style=\"display:grid;grid-template-areas:"..(str_grid_tytul or "")..str_grid..";"..grid_rozmiar_template..";"..";gap:"..(cellspacing or 0).."px;" ..(((cellspacing or 0)>0) and "margin:0;" or "")..(border and ("border-width:"..border.."px;") or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "")..(czy_styl and (styl..";") or "").."\"" ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "") ..">"..(str_tytul or "")..str.."</div>"; if(parametry_modul.CzyTak(pozycja))then local nazwa_klasy="";local tak=false; if(pozycja=="prawo")then nazwa_klasy="tabela-prawo"; tak=true; elseif(pozycja=="lewo")then nazwa_klasy="tabela-lewo"; tak=true; elseif(pozycja=="centruj")then nazwa_klasy="tabela-centruj"; tak=true; elseif(pozycja=="brak")then nazwa_klasy="tabela-brak"; tak=true; end; if(tak)then tab_parametry["id op"]=""; tab_parametry["klasa op"]=""; tab_parametry["styl op"]=""; local id_op=args["id op"]; local klasa_op=args["klasa op"]; local styl_op=args["styl op"]; local czy_id_op=parametry_modul.CzyTak(id_op); local czy_klasa_op=parametry_modul.CzyTak(klasa_op); local czy_styl_op=parametry_modul.CzyTak(styl_op); str_tabela="<div "..((czy_id_op)and("id=\""..id_op.."\"")or("")).." class=\"gridtabela-moduł-op "..nazwa_klasy.." "..((czy_klasa_op) and (klasa_op) or "").."\" "..((czy_styl_op)and("style=\""..styl_op.."\"") or "")..">\n"..str_tabela.."\n</div>"; end; end; local sprawdz_modul=require("Module:Sprawdź"); tab_parametry[""]="problemy-w-szablonie-%s {{Kategoria|Szablon %s do sprawdzenia}}"; local frame2=frame:getParent():newChild{args=tab_parametry,}; local fun_parametry=sprawdz_modul.Parametry(frame2) or ""; return str_tabela..(((fun_parametry)and(fun_parametry~="")) and ("\n"..fun_parametry) or ""); end; return p; 6y79i94m9lep660jnn2jssojlvpjp35 559466 559465 2026-10-16T13:07:23Z Persino 2851 559466 Scribunto text/plain local p={}; function p.GridTabela(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local tab_parametry={} local pozycja=args["pozycja"];tab_parametry["pozycja"]="^prawo$|^lewo$|^centruj$|^brak$"; local styl=args["styl"];tab_parametry["styl"]=""; local czy_styl=parametry_modul.CzyTak(styl); local klasa=args["klasa"];tab_parametry["klasa"]=""; local czy_klasa=parametry_modul.CzyTak(klasa); klasa="gridtabela-moduł "..(czy_klasa and klasa or ""); local id=args["id"];tab_parametry["id"]=""; local atrybuty=args["atrybuty"];tab_parametry["atrybuty"]=""; local czy_id=parametry_modul.CzyTak(id); local czy_atrybuty=parametry_modul.CzyTak(atrybuty); local kol=tonumber(args["liczba kolumn"]) or 1; local liczba_kolumn=(kol>0)and kol or 0; tab_parametry["liczba kolumn"]="^%d+$!"; local wier=tonumber(args["liczba wierszy"]) or 1; local liczba_wierszy=(wier>0)and wier or 0; tab_parametry["liczba wierszy"]="^%d+$!"; --- --- local function TempFunc(atrybuty,zmienna) if(not parametry_modul.CzyTak(atrybuty))then return atrybuty;end; atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\""," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'"," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*"," "); return atrybuty; end; local function TempFunc2(atrybuty,zmienna) local wartosc=atrybuty and (mw.ustring.match(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\"") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*") ) or nil; return wartosc; end; local cellspacing=TempFunc2(atrybuty,"cellspacing"); cellspacing=tonumber(cellspacing) or nil; local cellpadding=TempFunc2(atrybuty,"cellpadding"); local border=TempFunc2(atrybuty,"border"); --- atrybuty=TempFunc(atrybuty,"cellspacing"); atrybuty=TempFunc(atrybuty,"cellpadding"); atrybuty=TempFunc(atrybuty,"border"); local str=""; -- local id_tytulu=args["id tytułu"];local czy_id_tytulu=parametry_modul.CzyTak(id_tytulu); local klasa_tytulu=args["klasa tytułu"];local czy_klasa_tytulu=parametry_modul.CzyTak(klasa_tytulu); local styl_tytulu=args["styl tytułu"];local czy_styl_tytulu=parametry_modul.CzyTak(styl_tytulu); local opcje_tytulu=args["opcje tytułu"];local czy_opcje_tytulu=parametry_modul.CzyTak(opcje_tytulu); local tytul=args["tytuł"]; local str_tytul; if(tytul)then str_tytul="<div"..((czy_id_tytulu) and(" style=\""..id_tytulu.."\"") or "") .." class=\"tytuł "..(czy_klasa_tytulu and klasa_tytulu or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "").."grid-area:_0;"..(czy_styl_tytulu and styl_tytulu or "")..";\"" ..((czy_opcje_tytulu) and (" "..opcje_tytulu) or "")..">" .."<div class=\"gridtabela-dziecko\">"..(tytul and (mw.ustring.match(tytul,"^{|") or mw.ustring.match(tytul,"^[%*#:;]")) and ("\n"..tytul) or tytul) .."</div>" .."</div>"; if(str_tytul)then tab_parametry["id tytułu"]="";tab_parametry["klasa tytułu"]="";tab_parametry["styl tytułu"]="";tab_parametry["opcje tytułu"]=""; end; tab_parametry["tytuł"]="!"; end; --- local str_grid=""; local str_grid_tytul=""; --- if(str_tytul)then for numer_kolumny=1,liczba_kolumn,1 do str_grid_tytul=((numer_kolumny==1)and "'" or "")..str_grid_tytul.."_0"..((numer_kolumny==liczba_kolumn)and "'\n" or " "); end; end; local czy_naglowki=false; for i=1,liczba_kolumn,1 do if(args["nagłówek "..i])then czy_naglowki=true;break;end;end; if(czy_naglowki)then local id_naglowka=args["id nagłówka"];tab_parametry["id nagłówka"]=""; local klasa_naglowka=args["klasa nagłówka"];tab_parametry["klasa nagłówka"]=""; local styl_naglowka=args["styl nagłówka"];tab_parametry["styl nagłówka"]=""; local opcje_naglowka=args["opcje nagłówka"];tab_parametry["opcje nagłówka"]=""; --[[str=str.."|-"..(parametry_modul.CzyTak(id_naglowka)and " class=\""..id_naglowka.."\"" or "") ..(parametry_modul.CzyTak(klasa_naglowka)and " class=\""..klasa_naglowka.."\"" or "") ..(parametry_modul.CzyTak(styl_naglowka)and " style=\""..styl_naglowka.."\"" or "") ..(parametry_modul.CzyTak(opcje_naglowka)and " "..opcje_naglowka or "") .."\n";]] local function ColSpanNaglowka(tabnaglowka,numer_kolumny) for k=1,#tabnaglowka,1 do local tabnaglowka2=tabnaglowka[k]; if(tabnaglowka2[1]<=numer_kolumny)and(tabnaglowka2[2]>=numer_kolumny)then return true,tabnaglowka2[3]; end; end; return false; end; local tabnaglowka={}; for numer_kolumny=1,liczba_kolumn,1 do local wynik,str_grid2=ColSpanNaglowka(tabnaglowka,numer_kolumny); str_grid=((numer_kolumny==1)and "'" or "")..str_grid..(str_grid2 or ("_"..numer_kolumny))..((numer_kolumny==liczba_kolumn) and "'\n" or " "); if(not wynik)then local opcje=args["opcje "..numer_kolumny]; tab_parametry["opcje "..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan"); opcje=TempFunc(opcje,"colspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local colspan=colspan2 or args["kolumny "..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; local naglowek=args["nagłówek "..numer_kolumny]; tab_parametry["kolumny "..numer_kolumny]="^%d+$"; local col=colspan and tonumber(colspan) or 1; colspan=(col>1) and col or 1; if(colspan>1)then table.insert(tabnaglowka,{numer_kolumny,numer_kolumny+colspan-1,"_"..numer_kolumny}) end; local czy_id=parametry_modul.CzyTak(args["id "..numer_kolumny]); local czy_klasa=parametry_modul.CzyTak(args["klasa "..numer_kolumny]); local czy_styl=parametry_modul.CzyTak(args["styl "..numer_kolumny]); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); str=str.."<div" ..(czy_id and " id=\""..args["id "..numer_kolumny].."\"" or "") .." class=\"nagłówek nagłówek-tytuł kolumna-"..numer_kolumny.." "..(args["klasa "..numer_kolumny] or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "").."grid-area:".."_"..numer_kolumny..";"..(width and ("width:"..width..";") or "")..(height and ("height:"..height..";") or "")..(args["styl "..numer_kolumny] or "").."\"" ..">" ..(czy_opcje and " "..args["opcje "..numer_kolumny] or "") --..((kolumny and not colspan2) and " colspan=\""..kolumny.."\"" or "") --..((czy_opcje or czy_styl or czy_klasa or kolumny) and " | " or " ") .."<div class=\"gridtabela-dziecko\">"..((naglowek and (mw.ustring.match(naglowek,"^{|") or mw.ustring.match(naglowek,"^[%*#:;]")) and ("\n"..naglowek) or naglowek) or "{{{nagłówek "..numer_kolumny.."}}}") .."</div>" .."</div>"; tab_parametry["id "..numer_kolumny]=""; tab_parametry["klasa "..numer_kolumny]=""; tab_parametry["styl "..numer_kolumny]=""; tab_parametry["opcje "..numer_kolumny]=""; tab_parametry["nagłówek "..numer_kolumny]="!"; end; end; end; local function ColAndRowSpan(tab,numer_wiersza,numer_kolumny) for k=1,#tab,1 do local tab2=tab[k]; if(tab2[1]<=numer_wiersza)and(tab2[2]<=numer_kolumny)and(tab2[3]>=numer_wiersza)and(tab2[4]>=numer_kolumny)then return true,tab2[5]; end; end; return false; end; local tab={}; for numer_wiersza=1,liczba_wierszy,1 do --local id_wiersza=args["id wiersza "..numer_wiersza]; local klasa_wiersza=args["klasa wiersza "..numer_wiersza]; local styl_wiersza=args["styl wiersza "..numer_wiersza]; local opcje_wiersza=args["opcje wiersza "..numer_wiersza]; --tab_parametry["id wiersza "..numer_wiersza]=""; tab_parametry["klasa wiersza "..numer_wiersza]=""; tab_parametry["styl wiersza "..numer_wiersza]=""; tab_parametry["opcje wiersza "..numer_wiersza]=""; --local czy_id=parametry_modul.CzyTak(id_wiersza); local czy_klasa_wiersza=parametry_modul.CzyTak(klasa_wiersza); local czy_styl_wiersza=parametry_modul.CzyTak(styl_wiersza); local czy_opcje_wiersza=parametry_modul.CzyTak(opcje_wiersza); local str_grid2=""; for numer_kolumny=1,liczba_kolumn,1 do local czypominac,grid_area=ColAndRowSpan(tab,numer_wiersza,numer_kolumny); str_grid2=""..str_grid2..(grid_area or ("_"..numer_wiersza.."_"..numer_kolumny)).." "; if(not czypominac)then local opcje=args["opcje "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["opcje "..numer_wiersza.."_"..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan"); opcje=TempFunc(opcje,"colspan"); local colspan=colspan2 or args["kolumny "..numer_wiersza.."_"..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; --- local rowspan2=TempFunc2(opcje,"rowspan"); opcje=TempFunc(opcje,"rowspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local rowspan=rowspan2 or args["wiersze "..numer_wiersza.."_"..numer_kolumny]; local wiersze=parametry_modul.CzyTak(rowspan) and rowspan or nil; ---- if(not colspan2)then tab_parametry["kolumny "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if(not rowspan2)then tab_parametry["wiersze "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if((not wiersze)and(not kolumny))then local scal=args["scal "..numer_wiersza.."_"..numer_kolumny]; if(parametry_modul.CzyTak(scal))then wiersze,kolumny=mw.ustring.match(scal,"^(%d+)%s+(%d+)$"); end; tab_parametry["scal "..numer_wiersza.."_"..numer_kolumny]="^%d+%s+%d+$"; end; local col=kolumny and tonumber(kolumny) or 1; local row=wiersze and tonumber(wiersze) or 1; colspan=(col>1)and col or 1; rowspan=(row>1) and row or 1; if(((colspan>1)and(rowspan>1))or((colspan>1)and(rowspan==1))or((colspan==1)and(rowspan>1)))then table.insert(tab,{numer_wiersza,numer_kolumny,numer_wiersza+rowspan-1,numer_kolumny+colspan-1,"_"..numer_wiersza.."_"..numer_kolumny}) end; opcje=parametry_modul.CzyTak(opcje)and opcje or nil; local komorka=args["komórka "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["komórka "..numer_wiersza.."_"..numer_kolumny]="!"; tab_parametry["nagłówek "..numer_wiersza.."_"..numer_kolumny]=""; local jaka_komorki; if(parametry_modul.CzyTak(args["nagłówek "..numer_wiersza.."_"..numer_kolumny]))then jaka_komorki="nagłówek"; else jaka_komorki="komórka"; end; local id_komorki=args["id "..numer_wiersza.."_"..numer_kolumny]; local klasa_komorki=args["klasa "..numer_wiersza.."_"..numer_kolumny]; local styl_komorki=args["styl "..numer_wiersza.."_"..numer_kolumny]; local bez_pionu=args["bez pionu "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["id "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["klasa "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["styl "..numer_wiersza.."_"..numer_kolumny]="" tab_parametry["bez pionu "..numer_wiersza.."_"..numer_kolumny]=""; local czy_id_komorki=parametry_modul.CzyTak(id_komorki); local czy_klasa_komorki=parametry_modul.CzyTak(klasa_komorki); local czy_styl_komorki=parametry_modul.CzyTak(styl_komorki); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); local czy_bez_pionu=parametry_modul.CzyTak(bez_pionu); str=str.."<div" ..((czy_id_komorki) and " id=\""..id_komorki.."\"" or "") .." class=\""..(czy_klasa_wiersza and klasa_wiersza or "").." "..jaka_komorki.." ".."wiersz-"..numer_wiersza.." kolumna-"..numer_kolumny.." "..(klasa_komorki or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "")..(czy_styl_wiersza and styl_wiersza or "")..";grid-area:_"..numer_wiersza.."_"..numer_kolumny..";"..(width and ("width:"..width..";") or "")..(height and ("height:"..height..";") or "")..(styl_komorki or "").."\"" ..(czy_opcje_wiersza and opcje_wiersza or "").." "..(czy_opcje and opcje or "")..">" --..((czy_opcje or czy_styl_komorki or czy_klasa_komorki or wiersze or kolumny) and ((not czy_bez_pionu) and " | " or " ") or " ") .."<div class=\"gridtabela-dziecko\">"..((komorka and (mw.ustring.match(komorka,"^{|") or mw.ustring.match(komorka,"^[%*#:;]")) and ("\n"..komorka) or komorka) or "{{{komórka "..numer_wiersza.."_"..numer_kolumny.."}}}") .."</div>" .."</div>"; end; end; str_grid=str_grid.."'"..str_grid2.."'\n"; end; local grid_rozmiar_template="grid-template-columns:"; for numer_kolumny=1,liczba_kolumn,1 do grid_rozmiar_template=grid_rozmiar_template.." auto"; end; local str_tabela="<div"..(czy_id and (" id=\""..id.."\"") or "") .." class=\""..(((tonumber(cellspacing)or 0) > 0)and "cellspacing " or "")..klasa.."\"" .." style=\"display:grid;grid-template-areas:"..(str_grid_tytul or "")..str_grid..";"..grid_rozmiar_template..";"..";gap:"..(cellspacing or 0).."px;" ..(((cellspacing or 0)>0) and "margin:0;" or "")..(border and ("border-width:"..border.."px;") or "")..(cellpadding and ("padding:"..cellpadding.."px;") or "")..(czy_styl and (styl..";") or "").."\"" ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "") ..">"..(str_tytul or "")..str.."</div>"; if(parametry_modul.CzyTak(pozycja))then local nazwa_klasy="";local tak=false; if(pozycja=="prawo")then nazwa_klasy="tabela-prawo"; tak=true; elseif(pozycja=="lewo")then nazwa_klasy="tabela-lewo"; tak=true; elseif(pozycja=="centruj")then nazwa_klasy="tabela-centruj"; tak=true; elseif(pozycja=="brak")then nazwa_klasy="tabela-brak"; tak=true; end; if(tak)then tab_parametry["id op"]=""; tab_parametry["klasa op"]=""; tab_parametry["styl op"]=""; local id_op=args["id op"]; local klasa_op=args["klasa op"]; local styl_op=args["styl op"]; local czy_id_op=parametry_modul.CzyTak(id_op); local czy_klasa_op=parametry_modul.CzyTak(klasa_op); local czy_styl_op=parametry_modul.CzyTak(styl_op); str_tabela="<div "..((czy_id_op)and("id=\""..id_op.."\"")or("")).." class=\"gridtabela-moduł-op "..nazwa_klasy.." "..((czy_klasa_op) and (klasa_op) or "").."\" "..((czy_styl_op)and("style=\""..styl_op.."\"") or "")..">\n"..str_tabela.."\n</div>"; end; end; local sprawdz_modul=require("Module:Sprawdź"); tab_parametry[""]="problemy-w-szablonie-%s {{Kategoria|Szablon %s do sprawdzenia}}"; local frame2=frame:getParent():newChild{args=tab_parametry,}; local fun_parametry=sprawdz_modul.Parametry(frame2) or ""; return str_tabela..(((fun_parametry)and(fun_parametry~="")) and ("\n"..fun_parametry) or ""); end; return p; lw2ydsg8jssdwx8ixfxk4s3zq0rxtks 559467 559466 2026-10-16T13:42:50Z Persino 2851 559467 Scribunto text/plain local p={}; function p.GridTabela(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local tab_parametry={} local pozycja=args["pozycja"];tab_parametry["pozycja"]="^prawo$|^lewo$|^centruj$|^brak$"; local styl=args["styl"];tab_parametry["styl"]=""; local czy_styl=parametry_modul.CzyTak(styl); local klasa=args["klasa"];tab_parametry["klasa"]=""; local czy_klasa=parametry_modul.CzyTak(klasa); klasa="gridtabela-moduł "..(czy_klasa and klasa or ""); local id=args["id"];tab_parametry["id"]=""; local atrybuty=args["atrybuty"];tab_parametry["atrybuty"]=""; local czy_id=parametry_modul.CzyTak(id); local czy_atrybuty=parametry_modul.CzyTak(atrybuty); local kol=tonumber(args["liczba kolumn"]) or 1; local liczba_kolumn=(kol>0)and kol or 0; tab_parametry["liczba kolumn"]="^%d+$!"; local wier=tonumber(args["liczba wierszy"]) or 1; local liczba_wierszy=(wier>0)and wier or 0; tab_parametry["liczba wierszy"]="^%d+$!"; --- --- local function TempFunc(atrybuty,zmienna) if(not parametry_modul.CzyTak(atrybuty))then return atrybuty;end; atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\""," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'"," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*"," "); return atrybuty; end; local function TempFunc2(atrybuty,zmienna,czy_bez_mian) local wartosc=atrybuty and (mw.ustring.match(atrybuty,zmienna.."%s*=%s*\"%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*\"") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*'%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*'") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*") ) or nil; if(czy_bez_mian)then return wartosc;end; local wartosc_liczba=tonumber(wartosc) or nil; wartosc=(wartosc_liczba and (wartosc_liczba.."px") or wartosc); return wartosc,wartosc_liczba; end; local cellspacing,cellspacing_wartosc=TempFunc2(atrybuty,"cellspacing"); local cellpadding=TempFunc2(atrybuty,"cellpadding"); local border=TempFunc2(atrybuty,"border"); --- atrybuty=TempFunc(atrybuty,"cellspacing"); atrybuty=TempFunc(atrybuty,"cellpadding"); atrybuty=TempFunc(atrybuty,"border"); local str=""; -- local id_tytulu=args["id tytułu"];local czy_id_tytulu=parametry_modul.CzyTak(id_tytulu); local klasa_tytulu=args["klasa tytułu"];local czy_klasa_tytulu=parametry_modul.CzyTak(klasa_tytulu); local styl_tytulu=args["styl tytułu"];local czy_styl_tytulu=parametry_modul.CzyTak(styl_tytulu); local opcje_tytulu=args["opcje tytułu"];local czy_opcje_tytulu=parametry_modul.CzyTak(opcje_tytulu); local tytul=args["tytuł"]; local str_tytul; if(tytul)then str_tytul="<div"..((czy_id_tytulu) and(" style=\""..id_tytulu.."\"") or "") .." class=\"tytuł "..(czy_klasa_tytulu and klasa_tytulu or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding..";") or "").."grid-area:_0;"..(czy_styl_tytulu and styl_tytulu or "")..";\"" ..((czy_opcje_tytulu) and (" "..opcje_tytulu) or "")..">" .."<div class=\"gridtabela-dziecko\">"..(tytul and (mw.ustring.match(tytul,"^{|") or mw.ustring.match(tytul,"^[%*#:;]")) and ("\n"..tytul) or tytul) .."</div>" .."</div>"; if(str_tytul)then tab_parametry["id tytułu"]="";tab_parametry["klasa tytułu"]="";tab_parametry["styl tytułu"]="";tab_parametry["opcje tytułu"]=""; end; tab_parametry["tytuł"]="!"; end; --- local str_grid=""; local str_grid_tytul=""; --- if(str_tytul)then for numer_kolumny=1,liczba_kolumn,1 do str_grid_tytul=((numer_kolumny==1)and "'" or "")..str_grid_tytul.."_0"..((numer_kolumny==liczba_kolumn)and "'\n" or " "); end; end; local czy_naglowki=false; for i=1,liczba_kolumn,1 do if(args["nagłówek "..i])then czy_naglowki=true;break;end;end; if(czy_naglowki)then local id_naglowka=args["id nagłówka"];tab_parametry["id nagłówka"]=""; local klasa_naglowka=args["klasa nagłówka"];tab_parametry["klasa nagłówka"]=""; local styl_naglowka=args["styl nagłówka"];tab_parametry["styl nagłówka"]=""; local opcje_naglowka=args["opcje nagłówka"];tab_parametry["opcje nagłówka"]=""; --[[str=str.."|-"..(parametry_modul.CzyTak(id_naglowka)and " class=\""..id_naglowka.."\"" or "") ..(parametry_modul.CzyTak(klasa_naglowka)and " class=\""..klasa_naglowka.."\"" or "") ..(parametry_modul.CzyTak(styl_naglowka)and " style=\""..styl_naglowka.."\"" or "") ..(parametry_modul.CzyTak(opcje_naglowka)and " "..opcje_naglowka or "") .."\n";]] local function ColSpanNaglowka(tabnaglowka,numer_kolumny) for k=1,#tabnaglowka,1 do local tabnaglowka2=tabnaglowka[k]; if(tabnaglowka2[1]<=numer_kolumny)and(tabnaglowka2[2]>=numer_kolumny)then return true,tabnaglowka2[3]; end; end; return false; end; local tabnaglowka={}; for numer_kolumny=1,liczba_kolumn,1 do local wynik,str_grid2=ColSpanNaglowka(tabnaglowka,numer_kolumny); str_grid=((numer_kolumny==1)and "'" or "")..str_grid..(str_grid2 or ("_"..numer_kolumny))..((numer_kolumny==liczba_kolumn) and "'\n" or " "); if(not wynik)then local opcje=args["opcje "..numer_kolumny]; tab_parametry["opcje "..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan",true); opcje=TempFunc(opcje,"colspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local colspan=colspan2 or args["kolumny "..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; local naglowek=args["nagłówek "..numer_kolumny]; tab_parametry["kolumny "..numer_kolumny]="^%d+$"; local col=colspan and tonumber(colspan) or 1; colspan=(col>1) and col or 1; if(colspan>1)then table.insert(tabnaglowka,{numer_kolumny,numer_kolumny+colspan-1,"_"..numer_kolumny}) end; local czy_id=parametry_modul.CzyTak(args["id "..numer_kolumny]); local czy_klasa=parametry_modul.CzyTak(args["klasa "..numer_kolumny]); local czy_styl=parametry_modul.CzyTak(args["styl "..numer_kolumny]); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); str=str.."<div" ..(czy_id and " id=\""..args["id "..numer_kolumny].."\"" or "") .." class=\"nagłówek nagłówek-tytuł kolumna-"..numer_kolumny.." "..(args["klasa "..numer_kolumny] or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding..";") or "").."grid-area:".."_"..numer_kolumny..";"..(width and ("width:"..width..";") or "")..(height and ("height:"..height..";") or "")..(args["styl "..numer_kolumny] or "").."\"" ..">" ..(czy_opcje and " "..args["opcje "..numer_kolumny] or "") --..((kolumny and not colspan2) and " colspan=\""..kolumny.."\"" or "") --..((czy_opcje or czy_styl or czy_klasa or kolumny) and " | " or " ") .."<div class=\"gridtabela-dziecko\">"..((naglowek and (mw.ustring.match(naglowek,"^{|") or mw.ustring.match(naglowek,"^[%*#:;]")) and ("\n"..naglowek) or naglowek) or "{{{nagłówek "..numer_kolumny.."}}}") .."</div>" .."</div>"; tab_parametry["id "..numer_kolumny]=""; tab_parametry["klasa "..numer_kolumny]=""; tab_parametry["styl "..numer_kolumny]=""; tab_parametry["opcje "..numer_kolumny]=""; tab_parametry["nagłówek "..numer_kolumny]="!"; end; end; end; local function ColAndRowSpan(tab,numer_wiersza,numer_kolumny) for k=1,#tab,1 do local tab2=tab[k]; if(tab2[1]<=numer_wiersza)and(tab2[2]<=numer_kolumny)and(tab2[3]>=numer_wiersza)and(tab2[4]>=numer_kolumny)then return true,tab2[5]; end; end; return false; end; local tab={}; for numer_wiersza=1,liczba_wierszy,1 do --local id_wiersza=args["id wiersza "..numer_wiersza]; local klasa_wiersza=args["klasa wiersza "..numer_wiersza]; local styl_wiersza=args["styl wiersza "..numer_wiersza]; local opcje_wiersza=args["opcje wiersza "..numer_wiersza]; --tab_parametry["id wiersza "..numer_wiersza]=""; tab_parametry["klasa wiersza "..numer_wiersza]=""; tab_parametry["styl wiersza "..numer_wiersza]=""; tab_parametry["opcje wiersza "..numer_wiersza]=""; --local czy_id=parametry_modul.CzyTak(id_wiersza); local czy_klasa_wiersza=parametry_modul.CzyTak(klasa_wiersza); local czy_styl_wiersza=parametry_modul.CzyTak(styl_wiersza); local czy_opcje_wiersza=parametry_modul.CzyTak(opcje_wiersza); local str_grid2=""; for numer_kolumny=1,liczba_kolumn,1 do local czypominac,grid_area=ColAndRowSpan(tab,numer_wiersza,numer_kolumny); str_grid2=""..str_grid2..(grid_area or ("_"..numer_wiersza.."_"..numer_kolumny)).." "; if(not czypominac)then local opcje=args["opcje "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["opcje "..numer_wiersza.."_"..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan",true); opcje=TempFunc(opcje,"colspan"); local colspan=colspan2 or args["kolumny "..numer_wiersza.."_"..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; --- local rowspan2=TempFunc2(opcje,"rowspan",true); opcje=TempFunc(opcje,"rowspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local rowspan=rowspan2 or args["wiersze "..numer_wiersza.."_"..numer_kolumny]; local wiersze=parametry_modul.CzyTak(rowspan) and rowspan or nil; ---- if(not colspan2)then tab_parametry["kolumny "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if(not rowspan2)then tab_parametry["wiersze "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if((not wiersze)and(not kolumny))then local scal=args["scal "..numer_wiersza.."_"..numer_kolumny]; if(parametry_modul.CzyTak(scal))then wiersze,kolumny=mw.ustring.match(scal,"^(%d+)%s+(%d+)$"); end; tab_parametry["scal "..numer_wiersza.."_"..numer_kolumny]="^%d+%s+%d+$"; end; local col=kolumny and tonumber(kolumny) or 1; local row=wiersze and tonumber(wiersze) or 1; colspan=(col>1)and col or 1; rowspan=(row>1) and row or 1; if(((colspan>1)and(rowspan>1))or((colspan>1)and(rowspan==1))or((colspan==1)and(rowspan>1)))then table.insert(tab,{numer_wiersza,numer_kolumny,numer_wiersza+rowspan-1,numer_kolumny+colspan-1,"_"..numer_wiersza.."_"..numer_kolumny}) end; opcje=parametry_modul.CzyTak(opcje)and opcje or nil; local komorka=args["komórka "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["komórka "..numer_wiersza.."_"..numer_kolumny]="!"; tab_parametry["nagłówek "..numer_wiersza.."_"..numer_kolumny]=""; local jaka_komorki; if(parametry_modul.CzyTak(args["nagłówek "..numer_wiersza.."_"..numer_kolumny]))then jaka_komorki="nagłówek"; else jaka_komorki="komórka"; end; local id_komorki=args["id "..numer_wiersza.."_"..numer_kolumny]; local klasa_komorki=args["klasa "..numer_wiersza.."_"..numer_kolumny]; local styl_komorki=args["styl "..numer_wiersza.."_"..numer_kolumny]; local bez_pionu=args["bez pionu "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["id "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["klasa "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["styl "..numer_wiersza.."_"..numer_kolumny]="" tab_parametry["bez pionu "..numer_wiersza.."_"..numer_kolumny]=""; local czy_id_komorki=parametry_modul.CzyTak(id_komorki); local czy_klasa_komorki=parametry_modul.CzyTak(klasa_komorki); local czy_styl_komorki=parametry_modul.CzyTak(styl_komorki); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); local czy_bez_pionu=parametry_modul.CzyTak(bez_pionu); str=str.."<div" ..((czy_id_komorki) and " id=\""..id_komorki.."\"" or "") .." class=\""..(czy_klasa_wiersza and klasa_wiersza or "").." "..jaka_komorki.." ".."wiersz-"..numer_wiersza.." kolumna-"..numer_kolumny.." "..(klasa_komorki or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding..";") or "")..(czy_styl_wiersza and styl_wiersza or "")..";grid-area:_"..numer_wiersza.."_"..numer_kolumny..";"..(width and ("width:"..width..";") or "")..(height and ("height:"..height..";") or "")..(styl_komorki or "").."\"" ..(czy_opcje_wiersza and opcje_wiersza or "").." "..(czy_opcje and opcje or "")..">" --..((czy_opcje or czy_styl_komorki or czy_klasa_komorki or wiersze or kolumny) and ((not czy_bez_pionu) and " | " or " ") or " ") .."<div class=\"gridtabela-dziecko\">"..((komorka and (mw.ustring.match(komorka,"^{|") or mw.ustring.match(komorka,"^[%*#:;]")) and ("\n"..komorka) or komorka) or "{{{komórka "..numer_wiersza.."_"..numer_kolumny.."}}}") .."</div>" .."</div>"; end; end; str_grid=str_grid.."'"..str_grid2.."'\n"; end; local grid_rozmiar_template="grid-template-columns:"; for numer_kolumny=1,liczba_kolumn,1 do grid_rozmiar_template=grid_rozmiar_template.." auto"; end; local str_tabela="<div"..(czy_id and (" id=\""..id.."\"") or "") .." class=\""..(((cellspacing_wartosc or 0) > 0)and "cellspacing " or "")..klasa.."\"" .." style=\"display:grid;grid-template-areas:"..(str_grid_tytul or "")..str_grid..";"..grid_rozmiar_template..";"..";"..(cellspacing and ("gap:"..cellspacing..";") or "")..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "")..(border and ("border-width:"..border..";") or "")..(cellpadding and ("padding:"..cellpadding..";") or "")..(czy_styl and (styl..";") or "").."\"" ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "") ..">"..(str_tytul or "")..str.."</div>"; if(parametry_modul.CzyTak(pozycja))then local nazwa_klasy="";local tak=false; if(pozycja=="prawo")then nazwa_klasy="tabela-prawo"; tak=true; elseif(pozycja=="lewo")then nazwa_klasy="tabela-lewo"; tak=true; elseif(pozycja=="centruj")then nazwa_klasy="tabela-centruj"; tak=true; elseif(pozycja=="brak")then nazwa_klasy="tabela-brak"; tak=true; end; if(tak)then tab_parametry["id op"]=""; tab_parametry["klasa op"]=""; tab_parametry["styl op"]=""; local id_op=args["id op"]; local klasa_op=args["klasa op"]; local styl_op=args["styl op"]; local czy_id_op=parametry_modul.CzyTak(id_op); local czy_klasa_op=parametry_modul.CzyTak(klasa_op); local czy_styl_op=parametry_modul.CzyTak(styl_op); str_tabela="<div "..((czy_id_op)and("id=\""..id_op.."\"")or("")).." class=\"gridtabela-moduł-op "..nazwa_klasy.." "..((czy_klasa_op) and (klasa_op) or "").."\" "..((czy_styl_op)and("style=\""..styl_op.."\"") or "")..">\n"..str_tabela.."\n</div>"; end; end; local sprawdz_modul=require("Module:Sprawdź"); tab_parametry[""]="problemy-w-szablonie-%s {{Kategoria|Szablon %s do sprawdzenia}}"; local frame2=frame:getParent():newChild{args=tab_parametry,}; local fun_parametry=sprawdz_modul.Parametry(frame2) or ""; return str_tabela..(((fun_parametry)and(fun_parametry~="")) and ("\n"..fun_parametry) or ""); end; return p; 4icj87zynuktgpo2dg1hsxeuqatseme 559468 559467 2026-10-16T14:15:52Z Persino 2851 559468 Scribunto text/plain local p={}; function p.GridTabela(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local tab_parametry={} local pozycja=args["pozycja"];tab_parametry["pozycja"]="^prawo$|^lewo$|^centruj$|^brak$"; local styl=args["styl"];tab_parametry["styl"]=""; local czy_styl=parametry_modul.CzyTak(styl); local klasa=args["klasa"];tab_parametry["klasa"]=""; local czy_klasa=parametry_modul.CzyTak(klasa); klasa="gridtabela-moduł "..(czy_klasa and klasa or ""); local id=args["id"];tab_parametry["id"]=""; local atrybuty=args["atrybuty"];tab_parametry["atrybuty"]=""; local czy_id=parametry_modul.CzyTak(id); local czy_atrybuty=parametry_modul.CzyTak(atrybuty); local kol=tonumber(args["liczba kolumn"]) or 1; local liczba_kolumn=(kol>0)and kol or 0; tab_parametry["liczba kolumn"]="^%d+$!"; local wier=tonumber(args["liczba wierszy"]) or 1; local liczba_wierszy=(wier>0)and wier or 0; tab_parametry["liczba wierszy"]="^%d+$!"; --- --- local function TempFunc(atrybuty,zmienna) if(not parametry_modul.CzyTak(atrybuty))then return atrybuty;end; atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\""," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'"," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*"," "); return atrybuty; end; local function TempFunc2(atrybuty,zmienna,czy_bez_mian) local wartosc=atrybuty and (mw.ustring.match(atrybuty,zmienna.."%s*=%s*\"%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*\"") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*'%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*'") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*") ) or nil; if(czy_bez_mian)then return wartosc;end; local wartosc_liczba=tonumber(wartosc) or nil; wartosc=(wartosc_liczba and (wartosc_liczba.."px") or wartosc); return wartosc,wartosc_liczba; end; local cellspacing,cellspacing_wartosc=TempFunc2(atrybuty,"cellspacing"); local cellpadding=TempFunc2(atrybuty,"cellpadding"); local border=TempFunc2(atrybuty,"border"); --- atrybuty=TempFunc(atrybuty,"cellspacing"); atrybuty=TempFunc(atrybuty,"cellpadding"); atrybuty=TempFunc(atrybuty,"border"); local str=""; -- local id_tytulu=args["id tytułu"];local czy_id_tytulu=parametry_modul.CzyTak(id_tytulu); local klasa_tytulu=args["klasa tytułu"];local czy_klasa_tytulu=parametry_modul.CzyTak(klasa_tytulu); local styl_tytulu=args["styl tytułu"];local czy_styl_tytulu=parametry_modul.CzyTak(styl_tytulu); local opcje_tytulu=args["opcje tytułu"];local czy_opcje_tytulu=parametry_modul.CzyTak(opcje_tytulu); local tytul=args["tytuł"]; local str_tytul; if(tytul)then str_tytul="<div"..((czy_id_tytulu) and(" style=\""..id_tytulu.."\"") or "") .." class=\"tytuł "..(czy_klasa_tytulu and klasa_tytulu or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "")..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding..";") or "").."grid-area:_0;"..(czy_styl_tytulu and styl_tytulu or "")..";\"" ..((czy_opcje_tytulu) and (" "..opcje_tytulu) or "")..">" .."<div class=\"gridtabela-dziecko\">"..(tytul and (mw.ustring.match(tytul,"^{|") or mw.ustring.match(tytul,"^[%*#:;]")) and ("\n"..tytul) or tytul) .."</div>" .."</div>"; if(str_tytul)then tab_parametry["id tytułu"]="";tab_parametry["klasa tytułu"]="";tab_parametry["styl tytułu"]="";tab_parametry["opcje tytułu"]=""; end; tab_parametry["tytuł"]="!"; end; --- local str_grid=""; local str_grid_tytul=""; --- if(str_tytul)then for numer_kolumny=1,liczba_kolumn,1 do str_grid_tytul=((numer_kolumny==1)and "'" or "")..str_grid_tytul.."_0"..((numer_kolumny==liczba_kolumn)and "'\n" or " "); end; end; local czy_naglowki=false; for i=1,liczba_kolumn,1 do if(args["nagłówek "..i])then czy_naglowki=true;break;end;end; if(czy_naglowki)then local id_naglowka=args["id nagłówka"];tab_parametry["id nagłówka"]=""; local klasa_naglowka=args["klasa nagłówka"];tab_parametry["klasa nagłówka"]=""; local styl_naglowka=args["styl nagłówka"];tab_parametry["styl nagłówka"]=""; local opcje_naglowka=args["opcje nagłówka"];tab_parametry["opcje nagłówka"]=""; --[[str=str.."|-"..(parametry_modul.CzyTak(id_naglowka)and " class=\""..id_naglowka.."\"" or "") ..(parametry_modul.CzyTak(klasa_naglowka)and " class=\""..klasa_naglowka.."\"" or "") ..(parametry_modul.CzyTak(styl_naglowka)and " style=\""..styl_naglowka.."\"" or "") ..(parametry_modul.CzyTak(opcje_naglowka)and " "..opcje_naglowka or "") .."\n";]] local function ColSpanNaglowka(tabnaglowka,numer_kolumny) for k=1,#tabnaglowka,1 do local tabnaglowka2=tabnaglowka[k]; if(tabnaglowka2[1]<=numer_kolumny)and(tabnaglowka2[2]>=numer_kolumny)then return true,tabnaglowka2[3]; end; end; return false; end; local tabnaglowka={}; for numer_kolumny=1,liczba_kolumn,1 do local wynik,str_grid2=ColSpanNaglowka(tabnaglowka,numer_kolumny); str_grid=((numer_kolumny==1)and "'" or "")..str_grid..(str_grid2 or ("_"..numer_kolumny))..((numer_kolumny==liczba_kolumn) and "'\n" or " "); if(not wynik)then local opcje=args["opcje "..numer_kolumny]; tab_parametry["opcje "..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan",true); opcje=TempFunc(opcje,"colspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local colspan=colspan2 or args["kolumny "..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; local naglowek=args["nagłówek "..numer_kolumny]; tab_parametry["kolumny "..numer_kolumny]="^%d+$"; local col=colspan and tonumber(colspan) or 1; colspan=(col>1) and col or 1; if(colspan>1)then table.insert(tabnaglowka,{numer_kolumny,numer_kolumny+colspan-1,"_"..numer_kolumny}) end; local id=args["id "..numer_kolumny]; local klasa=args["klasa "..numer_kolumny]; local styl=args["styl "..numer_kolumny]; local czy_id=parametry_modul.CzyTak(id); local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); str=str.."<div" ..(czy_id and " id=\""..id.."\"" or "") .." class=\"nagłówek nagłówek-tytuł kolumna-"..numer_kolumny.." " ..(czy_klasa and klasa or "").."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "") ..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "") ..(cellpadding and ("padding:"..cellpadding..";") or "") .."grid-area:".."_"..numer_kolumny..";" ..(width and ("width:"..width..";") or "") ..(height and ("height:"..height..";") or "") ..(czy_styl and (styl..";") or "") .."\"" ..(czy_opcje and " "..opcje or "") .."><div class=\"gridtabela-dziecko\">"..((naglowek and (mw.ustring.match(naglowek,"^{|") or mw.ustring.match(naglowek,"^[%*#:;]")) and ("\n"..naglowek) or naglowek) or "{{{nagłówek "..numer_kolumny.."}}}") .."</div>" .."</div>"; tab_parametry["id "..numer_kolumny]=""; tab_parametry["klasa "..numer_kolumny]=""; tab_parametry["styl "..numer_kolumny]=""; tab_parametry["opcje "..numer_kolumny]=""; tab_parametry["nagłówek "..numer_kolumny]="!"; end; end; end; local function ColAndRowSpan(tab,numer_wiersza,numer_kolumny) for k=1,#tab,1 do local tab2=tab[k]; if(tab2[1]<=numer_wiersza)and(tab2[2]<=numer_kolumny)and(tab2[3]>=numer_wiersza)and(tab2[4]>=numer_kolumny)then return true,tab2[5]; end; end; return false; end; local tab={}; for numer_wiersza=1,liczba_wierszy,1 do --local id_wiersza=args["id wiersza "..numer_wiersza]; local klasa_wiersza=args["klasa wiersza "..numer_wiersza]; local styl_wiersza=args["styl wiersza "..numer_wiersza]; local opcje_wiersza=args["opcje wiersza "..numer_wiersza]; --tab_parametry["id wiersza "..numer_wiersza]=""; tab_parametry["klasa wiersza "..numer_wiersza]=""; tab_parametry["styl wiersza "..numer_wiersza]=""; tab_parametry["opcje wiersza "..numer_wiersza]=""; --local czy_id=parametry_modul.CzyTak(id_wiersza); local czy_klasa_wiersza=parametry_modul.CzyTak(klasa_wiersza); local czy_styl_wiersza=parametry_modul.CzyTak(styl_wiersza); local czy_opcje_wiersza=parametry_modul.CzyTak(opcje_wiersza); local str_grid2=""; for numer_kolumny=1,liczba_kolumn,1 do local czypominac,grid_area=ColAndRowSpan(tab,numer_wiersza,numer_kolumny); str_grid2=""..str_grid2..(grid_area or ("_"..numer_wiersza.."_"..numer_kolumny)).." "; if(not czypominac)then local opcje=args["opcje "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["opcje "..numer_wiersza.."_"..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan",true); opcje=TempFunc(opcje,"colspan"); local colspan=colspan2 or args["kolumny "..numer_wiersza.."_"..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; --- local rowspan2=TempFunc2(opcje,"rowspan",true); opcje=TempFunc(opcje,"rowspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local rowspan=rowspan2 or args["wiersze "..numer_wiersza.."_"..numer_kolumny]; local wiersze=parametry_modul.CzyTak(rowspan) and rowspan or nil; ---- if(not colspan2)then tab_parametry["kolumny "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if(not rowspan2)then tab_parametry["wiersze "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if((not wiersze)and(not kolumny))then local scal=args["scal "..numer_wiersza.."_"..numer_kolumny]; if(parametry_modul.CzyTak(scal))then wiersze,kolumny=mw.ustring.match(scal,"^(%d+)%s+(%d+)$"); end; tab_parametry["scal "..numer_wiersza.."_"..numer_kolumny]="^%d+%s+%d+$"; end; local col=kolumny and tonumber(kolumny) or 1; local row=wiersze and tonumber(wiersze) or 1; colspan=(col>1)and col or 1; rowspan=(row>1) and row or 1; if(((colspan>1)and(rowspan>1))or((colspan>1)and(rowspan==1))or((colspan==1)and(rowspan>1)))then table.insert(tab,{numer_wiersza,numer_kolumny,numer_wiersza+rowspan-1,numer_kolumny+colspan-1,"_"..numer_wiersza.."_"..numer_kolumny}) end; opcje=parametry_modul.CzyTak(opcje)and opcje or nil; local komorka=args["komórka "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["komórka "..numer_wiersza.."_"..numer_kolumny]="!"; tab_parametry["nagłówek "..numer_wiersza.."_"..numer_kolumny]=""; local jaka_komorki; if(parametry_modul.CzyTak(args["nagłówek "..numer_wiersza.."_"..numer_kolumny]))then jaka_komorki="nagłówek"; else jaka_komorki="komórka"; end; local id_komorki=args["id "..numer_wiersza.."_"..numer_kolumny]; local klasa_komorki=args["klasa "..numer_wiersza.."_"..numer_kolumny]; local styl_komorki=args["styl "..numer_wiersza.."_"..numer_kolumny]; local bez_pionu=args["bez pionu "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["id "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["klasa "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["styl "..numer_wiersza.."_"..numer_kolumny]="" tab_parametry["bez pionu "..numer_wiersza.."_"..numer_kolumny]=""; local czy_id_komorki=parametry_modul.CzyTak(id_komorki); local czy_klasa_komorki=parametry_modul.CzyTak(klasa_komorki); local czy_styl_komorki=parametry_modul.CzyTak(styl_komorki); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); local czy_bez_pionu=parametry_modul.CzyTak(bez_pionu); str=str.."<div" ..((czy_id_komorki) and " id=\""..id_komorki.."\"" or "") .." class=\""..(czy_klasa_wiersza and klasa_wiersza or "") .." "..jaka_komorki.." ".."wiersz-"..numer_wiersza.." kolumna-"..numer_kolumny.." " ..(klasa_komorki or "") .."\"" .." style=\""..(border and ("border-width:"..border.."px;") or "") ..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "") ..(cellpadding and ("padding:"..cellpadding..";") or "") ..(czy_styl_wiersza and styl_wiersza or "") ..";grid-area:_"..numer_wiersza.."_"..numer_kolumny..";" ..(width and ("width:"..width..";") or "") ..(height and ("height:"..height..";") or "") ..(styl_komorki or "") .."\"" ..(czy_opcje_wiersza and (" "..opcje_wiersza) or "") ..(czy_opcje and (" "..opcje) or "") ..">" .."<div class=\"gridtabela-dziecko\">"..((komorka and (mw.ustring.match(komorka,"^{|") or mw.ustring.match(komorka,"^[%*#:;]")) and ("\n"..komorka) or komorka) or "{{{komórka "..numer_wiersza.."_"..numer_kolumny.."}}}") .."</div>" .."</div>"; end; end; str_grid=str_grid.."'"..str_grid2.."'\n"; end; local grid_rozmiar_template="grid-template-columns:"; for numer_kolumny=1,liczba_kolumn,1 do grid_rozmiar_template=grid_rozmiar_template.." auto"; end; local str_tabela="<div"..(czy_id and (" id=\""..id.."\"") or "") .." class=\""..(((cellspacing_wartosc or 0) > 0)and "cellspacing " or "")..klasa.."\"" .." style=\"display:grid;grid-template-areas:"..(str_grid_tytul or "")..str_grid..";"..grid_rozmiar_template..";"..";"..(cellspacing and ("gap:"..cellspacing..";") or "")..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "")..(border and ("border-width:"..border..";") or "")..(cellpadding and ("padding:"..cellpadding..";") or "")..(czy_styl and (styl..";") or "").."\"" ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "") ..">"..(str_tytul or "")..str.."</div>"; if(parametry_modul.CzyTak(pozycja))then local nazwa_klasy="";local tak=false; if(pozycja=="prawo")then nazwa_klasy="tabela-prawo"; tak=true; elseif(pozycja=="lewo")then nazwa_klasy="tabela-lewo"; tak=true; elseif(pozycja=="centruj")then nazwa_klasy="tabela-centruj"; tak=true; elseif(pozycja=="brak")then nazwa_klasy="tabela-brak"; tak=true; end; if(tak)then tab_parametry["id op"]=""; tab_parametry["klasa op"]=""; tab_parametry["styl op"]=""; local id_op=args["id op"]; local klasa_op=args["klasa op"]; local styl_op=args["styl op"]; local czy_id_op=parametry_modul.CzyTak(id_op); local czy_klasa_op=parametry_modul.CzyTak(klasa_op); local czy_styl_op=parametry_modul.CzyTak(styl_op); str_tabela="<div "..((czy_id_op)and("id=\""..id_op.."\"")or("")).." class=\"gridtabela-moduł-op "..nazwa_klasy.." "..((czy_klasa_op) and (klasa_op) or "").."\" "..((czy_styl_op)and("style=\""..styl_op.."\"") or "")..">\n"..str_tabela.."\n</div>"; end; end; local sprawdz_modul=require("Module:Sprawdź"); tab_parametry[""]="problemy-w-szablonie-%s {{Kategoria|Szablon %s do sprawdzenia}}"; local frame2=frame:getParent():newChild{args=tab_parametry,}; local fun_parametry=sprawdz_modul.Parametry(frame2) or ""; return str_tabela..(((fun_parametry)and(fun_parametry~="")) and ("\n"..fun_parametry) or ""); end; return p; k10cl0k578ngdjnm28jwjjkawtutrsc 559473 559468 2026-10-16T18:56:57Z Persino 2851 559473 Scribunto text/plain local p={}; function p.GridTabela(frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local tab_parametry={} local pozycja=args["pozycja"];tab_parametry["pozycja"]="^prawo$|^lewo$|^centruj$|^brak$"; local styl=args["styl"];tab_parametry["styl"]=""; local czy_styl=parametry_modul.CzyTak(styl); local klasa=args["klasa"];tab_parametry["klasa"]=""; local czy_klasa=parametry_modul.CzyTak(klasa); klasa="gridtabela-moduł "..(czy_klasa and klasa or ""); local id=args["id"];tab_parametry["id"]=""; local atrybuty=args["atrybuty"];tab_parametry["atrybuty"]=""; local czy_id=parametry_modul.CzyTak(id); local czy_atrybuty=parametry_modul.CzyTak(atrybuty); local kol=tonumber(args["liczba kolumn"]) or 1; local liczba_kolumn=(kol>0)and kol or 0; tab_parametry["liczba kolumn"]="^%d+$!"; local wier=tonumber(args["liczba wierszy"]) or 1; local liczba_wierszy=(wier>0)and wier or 0; tab_parametry["liczba wierszy"]="^%d+$!"; --- --- local function TempFunc(atrybuty,zmienna) if(not parametry_modul.CzyTak(atrybuty))then return atrybuty;end; atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*\"%s*(%d+[%a%%]*)%s*\""," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*'%s*(%d+[%a%%]*)%s*'"," "); atrybuty=mw.ustring.gsub(atrybuty,zmienna.."%s*=%s*%s*(%d+[%a%%]*)%s*"," "); return atrybuty; end; local function TempFunc2(atrybuty,zmienna,czy_bez_mian) local wartosc=atrybuty and (mw.ustring.match(atrybuty,zmienna.."%s*=%s*\"%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*\"") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*'%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*'") or mw.ustring.match(atrybuty,zmienna.."%s*=%s*%s*(%d+"..((not czy_bez_mian) and( "[%a%%]*") or "")..")%s*") ) or nil; if(czy_bez_mian)then return wartosc;end; local wartosc_liczba=tonumber(wartosc) or nil; wartosc=(wartosc_liczba and (wartosc_liczba.."px") or wartosc); return wartosc,wartosc_liczba; end; local cellspacing,cellspacing_wartosc=TempFunc2(atrybuty,"cellspacing"); local cellpadding=TempFunc2(atrybuty,"cellpadding"); local border=TempFunc2(atrybuty,"border"); --- atrybuty=TempFunc(atrybuty,"cellspacing"); atrybuty=TempFunc(atrybuty,"cellpadding"); atrybuty=TempFunc(atrybuty,"border"); local str=""; -- local id_tytulu=args["id tytułu"];local czy_id_tytulu=parametry_modul.CzyTak(id_tytulu); local klasa_tytulu=args["klasa tytułu"];local czy_klasa_tytulu=parametry_modul.CzyTak(klasa_tytulu); local styl_tytulu=args["styl tytułu"];local czy_styl_tytulu=parametry_modul.CzyTak(styl_tytulu); local opcje_tytulu=args["opcje tytułu"];local czy_opcje_tytulu=parametry_modul.CzyTak(opcje_tytulu); local tytul=args["tytuł"]; local str_tytul; if(tytul)then str_tytul="<div"..((czy_id_tytulu) and(" style=\""..id_tytulu.."\"") or "") .." class=\"tytuł "..(czy_klasa_tytulu and klasa_tytulu or "").."\"" .." style=\""..(border and ("border-width:"..border..";") or "")..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "")..(cellpadding and ("padding:"..cellpadding..";") or "").."grid-area:_0;"..(czy_styl_tytulu and styl_tytulu or "")..";\"" ..((czy_opcje_tytulu) and (" "..opcje_tytulu) or "")..">" .."<div class=\"gridtabela-dziecko\">"..(tytul and (mw.ustring.match(tytul,"^{|") or mw.ustring.match(tytul,"^[%*#:;]")) and ("\n"..tytul) or tytul) .."</div>" .."</div>"; if(str_tytul)then tab_parametry["id tytułu"]="";tab_parametry["klasa tytułu"]="";tab_parametry["styl tytułu"]="";tab_parametry["opcje tytułu"]=""; end; tab_parametry["tytuł"]="!"; end; --- local str_grid=""; local str_grid_tytul=""; --- if(str_tytul)then for numer_kolumny=1,liczba_kolumn,1 do str_grid_tytul=((numer_kolumny==1)and "'" or "")..str_grid_tytul.."_0"..((numer_kolumny==liczba_kolumn)and "'\n" or " "); end; end; local czy_naglowki=false; for i=1,liczba_kolumn,1 do if(args["nagłówek "..i])then czy_naglowki=true;break;end;end; if(czy_naglowki)then local id_naglowka=args["id nagłówka"];tab_parametry["id nagłówka"]=""; local klasa_naglowka=args["klasa nagłówka"];tab_parametry["klasa nagłówka"]=""; local styl_naglowka=args["styl nagłówka"];tab_parametry["styl nagłówka"]=""; local opcje_naglowka=args["opcje nagłówka"];tab_parametry["opcje nagłówka"]=""; --[[str=str.."|-"..(parametry_modul.CzyTak(id_naglowka)and " class=\""..id_naglowka.."\"" or "") ..(parametry_modul.CzyTak(klasa_naglowka)and " class=\""..klasa_naglowka.."\"" or "") ..(parametry_modul.CzyTak(styl_naglowka)and " style=\""..styl_naglowka.."\"" or "") ..(parametry_modul.CzyTak(opcje_naglowka)and " "..opcje_naglowka or "") .."\n";]] local function ColSpanNaglowka(tabnaglowka,numer_kolumny) for k=1,#tabnaglowka,1 do local tabnaglowka2=tabnaglowka[k]; if(tabnaglowka2[1]<=numer_kolumny)and(tabnaglowka2[2]>=numer_kolumny)then return true,tabnaglowka2[3]; end; end; return false; end; local tabnaglowka={}; for numer_kolumny=1,liczba_kolumn,1 do local wynik,str_grid2=ColSpanNaglowka(tabnaglowka,numer_kolumny); str_grid=((numer_kolumny==1)and "'" or "")..str_grid..(str_grid2 or ("_"..numer_kolumny))..((numer_kolumny==liczba_kolumn) and "'\n" or " "); if(not wynik)then local opcje=args["opcje "..numer_kolumny]; tab_parametry["opcje "..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan",true); opcje=TempFunc(opcje,"colspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local colspan=colspan2 or args["kolumny "..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; local naglowek=args["nagłówek "..numer_kolumny]; tab_parametry["kolumny "..numer_kolumny]="^%d+$"; local col=colspan and tonumber(colspan) or 1; colspan=(col>1) and col or 1; if(colspan>1)then table.insert(tabnaglowka,{numer_kolumny,numer_kolumny+colspan-1,"_"..numer_kolumny}) end; local id=args["id "..numer_kolumny]; local klasa=args["klasa "..numer_kolumny]; local styl=args["styl "..numer_kolumny]; local czy_id=parametry_modul.CzyTak(id); local czy_klasa=parametry_modul.CzyTak(klasa); local czy_styl=parametry_modul.CzyTak(styl); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); str=str.."<div" ..(czy_id and " id=\""..id.."\"" or "") .." class=\"nagłówek nagłówek-tytuł kolumna-"..numer_kolumny.." " ..(czy_klasa and klasa or "").."\"" .." style=\""..(border and ("border-width:"..border..";") or "") ..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "") ..(cellpadding and ("padding:"..cellpadding..";") or "") .."grid-area:".."_"..numer_kolumny..";" ..(width and ("width:"..width..";") or "") ..(height and ("height:"..height..";") or "") ..(czy_styl and (styl..";") or "") .."\"" ..(czy_opcje and " "..opcje or "") .."><div class=\"gridtabela-dziecko\">"..((naglowek and (mw.ustring.match(naglowek,"^{|") or mw.ustring.match(naglowek,"^[%*#:;]")) and ("\n"..naglowek) or naglowek) or "{{{nagłówek "..numer_kolumny.."}}}") .."</div>" .."</div>"; tab_parametry["id "..numer_kolumny]=""; tab_parametry["klasa "..numer_kolumny]=""; tab_parametry["styl "..numer_kolumny]=""; tab_parametry["opcje "..numer_kolumny]=""; tab_parametry["nagłówek "..numer_kolumny]="!"; end; end; end; local function ColAndRowSpan(tab,numer_wiersza,numer_kolumny) for k=1,#tab,1 do local tab2=tab[k]; if(tab2[1]<=numer_wiersza)and(tab2[2]<=numer_kolumny)and(tab2[3]>=numer_wiersza)and(tab2[4]>=numer_kolumny)then return true,tab2[5]; end; end; return false; end; local tab={}; for numer_wiersza=1,liczba_wierszy,1 do --local id_wiersza=args["id wiersza "..numer_wiersza]; local klasa_wiersza=args["klasa wiersza "..numer_wiersza]; local styl_wiersza=args["styl wiersza "..numer_wiersza]; local opcje_wiersza=args["opcje wiersza "..numer_wiersza]; --tab_parametry["id wiersza "..numer_wiersza]=""; tab_parametry["klasa wiersza "..numer_wiersza]=""; tab_parametry["styl wiersza "..numer_wiersza]=""; tab_parametry["opcje wiersza "..numer_wiersza]=""; --local czy_id=parametry_modul.CzyTak(id_wiersza); local czy_klasa_wiersza=parametry_modul.CzyTak(klasa_wiersza); local czy_styl_wiersza=parametry_modul.CzyTak(styl_wiersza); local czy_opcje_wiersza=parametry_modul.CzyTak(opcje_wiersza); local str_grid2=""; for numer_kolumny=1,liczba_kolumn,1 do local czypominac,grid_area=ColAndRowSpan(tab,numer_wiersza,numer_kolumny); str_grid2=""..str_grid2..(grid_area or ("_"..numer_wiersza.."_"..numer_kolumny)).." "; if(not czypominac)then local opcje=args["opcje "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["opcje "..numer_wiersza.."_"..numer_kolumny]=""; local colspan2=TempFunc2(opcje,"colspan",true); opcje=TempFunc(opcje,"colspan"); local colspan=colspan2 or args["kolumny "..numer_wiersza.."_"..numer_kolumny]; local kolumny=parametry_modul.CzyTak(colspan) and colspan or nil; --- local rowspan2=TempFunc2(opcje,"rowspan",true); opcje=TempFunc(opcje,"rowspan"); local width=TempFunc2(opcje,"width"); opcje=TempFunc(opcje,"width"); local height=TempFunc2(opcje,"height"); opcje=TempFunc(opcje,"height"); local rowspan=rowspan2 or args["wiersze "..numer_wiersza.."_"..numer_kolumny]; local wiersze=parametry_modul.CzyTak(rowspan) and rowspan or nil; ---- if(not colspan2)then tab_parametry["kolumny "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if(not rowspan2)then tab_parametry["wiersze "..numer_wiersza.."_"..numer_kolumny]="^%d+$";end; if((not wiersze)and(not kolumny))then local scal=args["scal "..numer_wiersza.."_"..numer_kolumny]; if(parametry_modul.CzyTak(scal))then wiersze,kolumny=mw.ustring.match(scal,"^(%d+)%s+(%d+)$"); end; tab_parametry["scal "..numer_wiersza.."_"..numer_kolumny]="^%d+%s+%d+$"; end; local col=kolumny and tonumber(kolumny) or 1; local row=wiersze and tonumber(wiersze) or 1; colspan=(col>1)and col or 1; rowspan=(row>1) and row or 1; if(((colspan>1)and(rowspan>1))or((colspan>1)and(rowspan==1))or((colspan==1)and(rowspan>1)))then table.insert(tab,{numer_wiersza,numer_kolumny,numer_wiersza+rowspan-1,numer_kolumny+colspan-1,"_"..numer_wiersza.."_"..numer_kolumny}) end; opcje=parametry_modul.CzyTak(opcje)and opcje or nil; local komorka=args["komórka "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["komórka "..numer_wiersza.."_"..numer_kolumny]="!"; tab_parametry["nagłówek "..numer_wiersza.."_"..numer_kolumny]=""; local jaka_komorki; if(parametry_modul.CzyTak(args["nagłówek "..numer_wiersza.."_"..numer_kolumny]))then jaka_komorki="nagłówek"; else jaka_komorki="komórka"; end; local id_komorki=args["id "..numer_wiersza.."_"..numer_kolumny]; local klasa_komorki=args["klasa "..numer_wiersza.."_"..numer_kolumny]; local styl_komorki=args["styl "..numer_wiersza.."_"..numer_kolumny]; local bez_pionu=args["bez pionu "..numer_wiersza.."_"..numer_kolumny]; tab_parametry["id "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["klasa "..numer_wiersza.."_"..numer_kolumny]=""; tab_parametry["styl "..numer_wiersza.."_"..numer_kolumny]="" tab_parametry["bez pionu "..numer_wiersza.."_"..numer_kolumny]=""; local czy_id_komorki=parametry_modul.CzyTak(id_komorki); local czy_klasa_komorki=parametry_modul.CzyTak(klasa_komorki); local czy_styl_komorki=parametry_modul.CzyTak(styl_komorki); local czy_opcje=parametry_modul["CzyTakCiąg"](opcje); local czy_bez_pionu=parametry_modul.CzyTak(bez_pionu); str=str.."<div" ..((czy_id_komorki) and " id=\""..id_komorki.."\"" or "") .." class=\""..(czy_klasa_wiersza and klasa_wiersza or "") .." "..jaka_komorki.." ".."wiersz-"..numer_wiersza.." kolumna-"..numer_kolumny.." " ..(klasa_komorki or "") .."\"" .." style=\""..(border and ("border-width:"..border..";") or "") ..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "") ..(cellpadding and ("padding:"..cellpadding..";") or "") ..(czy_styl_wiersza and styl_wiersza or "") ..";grid-area:_"..numer_wiersza.."_"..numer_kolumny..";" ..(width and ("width:"..width..";") or "") ..(height and ("height:"..height..";") or "") ..(styl_komorki or "") .."\"" ..(czy_opcje_wiersza and (" "..opcje_wiersza) or "") ..(czy_opcje and (" "..opcje) or "") ..">" .."<div class=\"gridtabela-dziecko\">"..((komorka and (mw.ustring.match(komorka,"^{|") or mw.ustring.match(komorka,"^[%*#:;]")) and ("\n"..komorka) or komorka) or "{{{komórka "..numer_wiersza.."_"..numer_kolumny.."}}}") .."</div>" .."</div>"; end; end; str_grid=str_grid.."'"..str_grid2.."'\n"; end; local grid_rozmiar_template="grid-template-columns:"; for numer_kolumny=1,liczba_kolumn,1 do grid_rozmiar_template=grid_rozmiar_template.." auto"; end; local str_tabela="<div"..(czy_id and (" id=\""..id.."\"") or "") .." class=\""..(((cellspacing_wartosc or 0) > 0)and "cellspacing " or "")..klasa.."\"" .." style=\"display:grid;grid-template-areas:"..(str_grid_tytul or "")..str_grid..";"..grid_rozmiar_template..";"..";"..(cellspacing and ("gap:"..cellspacing..";") or "")..(((cellspacing_wartosc or 0)>0) and "margin:0;" or "")..(border and ("border-width:"..border..";") or "")..(cellpadding and ("padding:"..cellpadding..";") or "")..(czy_styl and (styl..";") or "").."\"" ..(parametry_modul.CzyTak(atrybuty)and " "..atrybuty or "") ..">"..(str_tytul or "")..str.."</div>"; if(parametry_modul.CzyTak(pozycja))then local nazwa_klasy="";local tak=false; if(pozycja=="prawo")then nazwa_klasy="tabela-prawo"; tak=true; elseif(pozycja=="lewo")then nazwa_klasy="tabela-lewo"; tak=true; elseif(pozycja=="centruj")then nazwa_klasy="tabela-centruj"; tak=true; elseif(pozycja=="brak")then nazwa_klasy="tabela-brak"; tak=true; end; if(tak)then tab_parametry["id op"]=""; tab_parametry["klasa op"]=""; tab_parametry["styl op"]=""; local id_op=args["id op"]; local klasa_op=args["klasa op"]; local styl_op=args["styl op"]; local czy_id_op=parametry_modul.CzyTak(id_op); local czy_klasa_op=parametry_modul.CzyTak(klasa_op); local czy_styl_op=parametry_modul.CzyTak(styl_op); str_tabela="<div "..((czy_id_op)and("id=\""..id_op.."\"")or("")).." class=\"gridtabela-moduł-op "..nazwa_klasy.." "..((czy_klasa_op) and (klasa_op) or "").."\" "..((czy_styl_op)and("style=\""..styl_op.."\"") or "")..">\n"..str_tabela.."\n</div>"; end; end; local sprawdz_modul=require("Module:Sprawdź"); tab_parametry[""]="problemy-w-szablonie-%s {{Kategoria|Szablon %s do sprawdzenia}}"; local frame2=frame:getParent():newChild{args=tab_parametry,}; local fun_parametry=sprawdz_modul.Parametry(frame2) or ""; return str_tabela..(((fun_parametry)and(fun_parametry~="")) and ("\n"..fun_parametry) or ""); end; return p; 9f748by3syqre917sm4zmty639tne9j Moduł:GridTabela/styles.css 828 64410 559489 559398 2026-10-17T05:09:43Z Persino 2851 559489 sanitized-css text/css div.gridtabela-moduł.gridtable{ width:fit-content; } div.gridtabela-moduł.gridtable.cellspacing{ border: 1px #aaaaaa solid; } div.gridtabela-moduł.gridtable > div.nagłówek, div.gridtabela-moduł.gridtable > div.komórka{ border: 1px #aaaaaa solid; padding: 0.2em; } div.gridtabela-moduł.gridtable > div.nagłówek, div.gridtabela-moduł.gridtable > div.komórka{ display:flex; flex-direction:column; align-items: stretch; justify-content: center; } div.gridtabela-moduł.gridtable, div.gridtabela-moduł.gridtable > div.tytuł, div.gridtabela-moduł.gridtable > div.nagłówek, div.gridtabela-moduł.gridtable > div.komórka{ box-sizing:border-box; } div.gridtabela-moduł.gridtable > div.tytuł{ display:flex; flex-direction:column; align-items: stretch; justify-content: center; text-align: center; } div.gridtabela-moduł.gridtable > div.tytuł > div.gridtabela-dziecko{ font-weight:bold; font-size:inherit; line-height:inherit; } div.gridtabela-moduł.gridtable > div.nagłówek{ background: #f2f2f2; text-align: center; } div.gridtabela-moduł.gridtable > div.komórka{ background: white; color:black; } div.gridtabela-moduł.gridtable > div.nagłówek.nagłówek-tytuł{ margin-bottom:-1px; } div.gridtabela-moduł.gridtable > div.nagłówek.nagłówek-tytuł:not(.kolumna-1), div.gridtabela-moduł.gridtable > div.komórka.nagłówek-tytuł:not(.kolumna-1){ margin-left:-1px; } div.gridtabela-moduł.gridtable > div.nagłówek:not(.nagłówek-tytuł):not(.wiersz-1), div.gridtabela-moduł.gridtable > div.komórka:not(.nagłówek-tytuł):not(.wiersz-1){ margin-top:-1px; } div.gridtabela-moduł.gridtable > div.nagłówek:not(.nagłówek-tytuł):not(.kolumna-1), div.gridtabela-moduł.gridtable > div.komórka:not(.nagłówek-tytuł):not(.kolumna-1){ margin-left:-1px; } div.gridtabela-moduł.gridtable > div.nagłówek.nagłówek-tytuł > div.gridtabela-dziecko{ font-weight:bolder; } div.gridtabela-moduł.gridtable > div.nagłówek:not(.nagłówek-tytuł) > div.gridtabela-dziecko{ font-weight:lighter; } div.gridtabela-moduł.gridtable > div.nagłówek > div.gridtabela-dziecko, div.gridtabela-moduł.gridtable > div.komórka > div.gridtabela-dziecko{ word-wrap: break-word; word-break: normal; hyphens: auto; } /*{{Kategoria|Szablony - arkusze stylów}}*/ m6fz9rkp960ennez79axleow9nbw2jd Szablon:GridTabela/opis 10 64415 559470 559392 2026-10-16T14:27:42Z Persino 2851 559470 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon generuje grid-tabelkę na podstawie jego parametrów. Szablon znacznie ułatwia tworzenie grid-tabel za pomocą wysokopoziomowego interfejsu, czyli tego szablonu. On tworzy niskopoziomową grid-tabelkę na podstawie parametrów tego szablonu. Zwraca uwagę, czy jakieś parametry nie zostały podane, czy są prawidłowe. == Opis parametrów == ; Opakowanie ramkowe tabeli * {{Code|pozycja}} - wartości: {{Tt|prawo}}, {{Tt|lewo}} i {{Tt|centruj}}, poniższe parametry mogą być jedynie używane z tym argumentem, * {{Code|id op}} - unikalny identyfikator {{Code|id}}, w całym {{Code|DOM}} w HTML, opakowania tabelki, * {{Code|klasa op}} - klasa całości opakowania tabelki, kaskadowych arkuszy stylów CSS, * {{Code|styl op}} - styl CSS, opakowania tabelki, właściwości wraz z ich wartościami. ; Tabela - liczba wierszy i kolumn * {{Code|liczba wierszy}} - liczba wierszy, * {{Code|liczba kolumn}} - liczba kolumn. ; Tabela - ustawienia (parametry) całej tabeli * {{Code|id}} - unikalny identyfikator {{Code|id}}, w całym {{Code|DOM}} w HTML, całej tabelki, * {{Code|klasa}} - klasa całości tabeli, kaskadowych arkuszy stylów CSS, * {{Code|styl}} - styl CSS, całej tabeli, właściwości wraz z ich wartościami, * {{Code|atrybuty}} - atrybuty tabelki. ; Tabela - tytuł * {{Code|id tytułu}} - id tytułu, * {{Code|klasa tytułu}} - klasa tytułu, * {{Code|styl tytułu}} - styl tytułu, * {{Code|opcje tytułu}} - opcje tytułu. ;; Zawartość tytułu * {{Code|tytuł}} - tytuł tabeli. ; Tabela - nagłówek (parametry) * {{Code|id nagłówka}} - id, głównego wiersza nagłówka tabeli, na jego górze, kaskadowych arkuszy stylów CSS, * {{Code|klasa nagłówka}} - klasa, głównego wiersza nagłówka tabeli, na jego górze, kaskadowych arkuszy stylów CSS, * {{Code|styl nagłówka}} - styl, głównego wiersza nagłówków tabeli, na jego górze, CSS, tzn. właściwości i ich wartości, * {{Code|opcje nagłówka}} - opcje, głównego wiersza nagłówków tabeli, na jego górze, CSS, tzn. właściwości i ich wartości. ; Tabela - komórki nagłówka tabeli (parametry) * {{Code|id 1}}, {{Code|...}}, {{Code|id N}} - id nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|klasa 1}}, {{Code|...}}, {{Code|klasa N}} - klasa nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|styl 1}}, {{Code|...}}, {{Code|styl N}} - styl nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|opcje 1}}, {{Code|...}}, {{Code|opcje N}} - opcje nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|kolumny 1}}, {{Code|...}}, {{Code|kolumny N}} - informacje, mówiące ile kolumn nagłówka, w tabeli, ma scalić. ;; Zawartość komórek nagłówka * {{Code|nagłówek 1}}, {{Code|...}}, {{Code|nagłówek N}} - zawartość nagłówków tabeli, głównego wiersza nagłówków na jego górze. ; Tabela - parametry wierszy <!--* {{Code|id wiersza 1}}, {{Code|id wiersza 2}}, {{Code|...}}, {{Code|id wiersza i}}, {{Code|...}}, {{Code|id wiersza M}} - id poszczególnych wierszy komórek tabeli,--> * {{Code|klasa wiersza 1}}, {{Code|klasa wiersza 2}}, {{Code|...}}, {{Code|klasa wiersza i}}, {{Code|...}}, {{Code|klasa wiersza M}} - klasa poszczególnych wierszy komórek tabeli, * {{Code|styl wiersza 1}}, {{Code|styl wiersza 2}}, {{Code|...}}, {{Code|styl wiersza i}}, {{Code|...}}, {{Code|styl wiersza M}} - styl poszczególnych wierszy komórek tabeli, * {{Code|opcje wiersza 1}}, {{Code|opcje wiersza 2}}, {{Code|...}}, {{Code|opcje wiersza i}}, {{Code|...}}, {{Code|opcje wiersza M}} - opcje poszczególnych wierszy komórek tabeli. ; Tabela - scalanie wierszy i kolumn * {{Code|wiersze 1_1}}, {{Code|wiersze 1_2}}, {{Code|...}}, {{Code|wiesze i_j}}, {{Code|...}}, {{Code|wiersze M_N}} - informacja, ile wierszy ma scalić dla danej komórki, * {{Code|kolumny 1_1}}, {{Code|kolumny 1_2}}, {{Code|...}}, {{Code|kolumny i_j}}, {{Code|...}}, {{Code|kolumny M_N}} - informacja, ile kolumn ma scalić dla danej komórki, * {{Code|scal 1_1}}, {{Code|scal 1_2}}, {{Code|...}}, {{Code|scal i_j}}, {{Code|...}}, {{Code|scal M_N}} - informacja, ile wierszy i kolumn ma scalić dla danej komórki. ; Tabela - ustawienia wierszy i kolumn * {{Code|id 1_1}}, {{Code|id 1_2}}, {{Code|...}}, {{Code|id i_j}}, {{Code|...}}, {{Code|id M_N}} - id poszczególnych komórek tabeli, * {{Code|klasa 1_1}}, {{Code|klasa 1_2}}, {{Code|...}}, {{Code|klasa i_j}}, {{Code|...}}, {{Code|klasa M_N}} - klasa poszczególnych komórek tabeli, * {{Code|styl 1_1}}, {{Code|styl 1_2}}, {{Code|...}}, {{Code|styl i_j}}, {{Code|...}}, {{Code|styl M_N}} - styl poszczególnych komórek tabeli, * {{Code|opcje 1_1}}, {{Code|opcje 1_2}}, {{Code|...}}, {{Code|opcje i_j}}, {{Code|...}}, {{Code|opcje M_N}} - opcje poszczególnych komórek tabeli. ; Kreska pionowa * {{Code|bez pionu 1_1}}, {{Code|bez pionu 1_2}}, {{Code|...}}, {{Code|bez pionu i_j}}, {{Code|...}}, {{Code|bez pionu M_N}} - po parametrach scalania i ustawiania komórek po spacji nie stawia kreski pionowej. ;; Tabela - zawartość wierszy i kolumn * {{Code|komórka 1_1}}, {{Code|komórka 1_2}}, {{Code|...}}, {{Code|komórka i_j}}, {{Code|...}}, {{Code|komórka M_N}} - zawartość komórki tabeli, * {{Code|nagłówek 1_1}}, {{Code|nagłówek 1_2}}, {{Code|...}}, {{Code|nagłówek i_j}}, {{Code|...}}, {{Code|nagłówek M_N}} - gdy wartość niepusta, to traktuje komórkę jako nagłówek, w przeciwnym wypadku, ona oznaczana jest jako zwykła komórka. ---- * {{Code|M}} - numer wiersza, a {{Code|N}} - numer kolumny. Jeżeli na komórce włączyliśmy opcje {{Code|colspan}} lub {{Code|rowspan}} za pomocą parametrów opcji {{Code|opcje i_j}} lub parametrów typu {{Code|wiersze i_j}} lub {{Code|kolumny i_j}} albo za pomocą {{Code|scal i_j}} bądź w przypadku nagłówka za pomocą opcji {{Code|opcje i}} lub parametrów typu {{Code|kolumny i}}, to nazwa parametru pochodzi od tego, skąd zaczynaliśmy scalanie wierszy i kolumn, nawet komórek nagłówka. == Przykład == ; Przykład pierwszy {{Pre| {{s|GridTabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} gridtable | atrybuty {{=}} cellspacing{{=}}0 cellpadding{{=}}3 | liczba wierszy {{=}} 6 | liczba kolumn {{=}} 4 | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_2 {{=}} Komórka - wiersz 1 - kolumna 2 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | komórka 2_4 {{=}} Komórka - wiersz 2 - kolumna 4 | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_2 {{=}} Komórka - wiersz 3 - kolumna 2 | komórka 3_3 {{=}} Komórka - wiersz 3 - kolumna 3 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_1 {{=}} Komórka - wiersz 4 - kolumna 1 | komórka 4_2 {{=}} Komórka - wiersz 4 - kolumna 2 | komórka 4_3 {{=}} Komórka - wiersz 4 - kolumna 3 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | komórka 5_1 {{=}} Komórka - wiersz 5 - kolumna 1 | komórka 5_2 {{=}} Komórka - wiersz 5 - kolumna 2 | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | komórka 5_4 {{=}} Komórka - wiersz 5 - kolumna 4 | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_2 {{=}} Komórka - wiersz 6 - kolumna 2 | komórka 6_3 {{=}} Komórka - wiersz 6 - kolumna 3 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 }} }} ; Wynik {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=0 cellpadding=3 | liczba wierszy = 6 | liczba kolumn = 4 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład pierwszy|spis= {{PreNowiki| {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} }} }} ---- ; Przykład drugi {{Pre| {{s|GridTabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} gridtable | atrybuty {{=}} cellspacing{{=}}0 cellpadding{{=}}3 | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | opcje 1 {{=}} width{{=}}25% | nagłówek 1 {{=}} Nagłówek 1 | opcje 2 {{=}} width{{=}}25% | nagłówek 2 {{=}} Nagłówek 2 | opcje 3 {{=}} width{{=}}25% | nagłówek 3 {{=}} Nagłówek 3 | opcje 4 {{=}} width{{=}}25% | nagłówek 4 {{=}} Nagłówek 4 | liczba wierszy {{=}} 6 | liczba kolumn {{=}} 4 | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_2 {{=}} Komórka - wiersz 1 - kolumna 2 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | komórka 2_4 {{=}} Komórka - wiersz 2 - kolumna 4 | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_2 {{=}} Komórka - wiersz 3 - kolumna 2 | komórka 3_3 {{=}} Komórka - wiersz 3 - kolumna 3 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_1 {{=}} Komórka - wiersz 4 - kolumna 1 | komórka 4_2 {{=}} Komórka - wiersz 4 - kolumna 2 | komórka 4_3 {{=}} Komórka - wiersz 4 - kolumna 3 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | komórka 5_1 {{=}} Komórka - wiersz 5 - kolumna 1 | komórka 5_2 {{=}} Komórka - wiersz 5 - kolumna 2 | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | komórka 5_4 {{=}} Komórka - wiersz 5 - kolumna 4 | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_2 {{=}} Komórka - wiersz 6 - kolumna 2 | komórka 6_3 {{=}} Komórka - wiersz 6 - kolumna 3 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 }} }} ; Wynik {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | opcje 1 = width=25% | nagłówek 1 = Nagłówek 1 | opcje 2 = width=25% | nagłówek 2 = Nagłówek 2 | opcje 3 = width=25% | nagłówek 3 = Nagłówek 3 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład drugi|spis= {{PreNowiki| {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | opcje 1 = width=25% | nagłówek 1 = Nagłówek 1 | opcje 2 = width=25% | nagłówek 2 = Nagłówek 2 | opcje 3 = width=25% | nagłówek 3 = Nagłówek 3 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} }} }} ---- ; Przykład trzeci {{Pre| {{s|GridTabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} gridtable | atrybuty {{=}} cellspacing{{=}}3 cellpadding{{=}}3 border{{=}}"1" | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | styl nagłówka {{=}} background-color:pink; | opcje 1 {{=}} width{{=}}75% | kolumny 1 {{=}} 3 | nagłówek 1 {{=}} Nagłówek 1 | opcje 4 {{=}} width{{=}}25% | nagłówek 4 {{=}} Nagłówek 4 | styl 4 {{=}} background-color:red; | liczba wierszy {{=}} 7 | liczba kolumn {{=}} 4 | kolumny 1_1 {{=}} 2 | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 {{=}} 2 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 {{=}} 3 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | scal 3_1 {{=}} 3 2 | styl 3_1 {{=}} color:red;background-color:yellow;text-align:right; | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | opcje 5_3 {{=}} colspan{{=}}"2" rowspan{{=}}"1" | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 {{=}} 3 | wiersze 6_1 {{=}} 2 | nagłówek 6_1 {{=}} tak | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 {{=}} color:blue; | styl 7_4 {{=}} background-color:grey; | komórka 7_4 {{=}} Komórka - wiersz 7 - kolumna 4 }} }} ; Wynik {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=3 cellpadding=3 border="1" | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | styl nagłówka = background-color:pink; | opcje 1 = width=75% | kolumny 1 = 3 | nagłówek 1 = Nagłówek 1 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | styl 4 = background-color:red; | liczba wierszy = 7 | liczba kolumn = 4 | kolumny 1_1 = 2 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 = 2 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 = 3 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | scal 3_1 = 3 2 | styl 3_1 = color:red;background-color:yellow;text-align:right; | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | opcje 5_3 = colspan="2" rowspan="1" | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 = 3 | wiersze 6_1 = 2 | nagłówek 6_1 = tak | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 = color:blue; | styl 7_4 = background-color:grey; | komórka 7_4 = Komórka - wiersz 7 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład trzeci|spis= {{PreNowiki| {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=3 cellpadding=3 border="1" | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | styl nagłówka = background-color:pink; | opcje 1 = width=75% | kolumny 1 = 3 | nagłówek 1 = Nagłówek 1 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | styl 4 = background-color:red; | liczba wierszy = 7 | liczba kolumn = 4 | kolumny 1_1 = 2 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 = 2 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 = 3 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | scal 3_1 = 3 2 | styl 3_1 = color:red;background-color:yellow;text-align:right; | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | opcje 5_3 = colspan="2" rowspan="1" | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 = 3 | wiersze 6_1 = 2 | nagłówek 6_1 = tak | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 = color:blue; | styl 7_4 = background-color:grey; | komórka 7_4 = Komórka - wiersz 7 - kolumna 4 }} }} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == {{Tabela/opis/Zobacz też}} {{Szablony ramek formułujące kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony pudełek opartych o tabelki | Szablony pudełek tworzące tabele | Szablony ramek generujące wikikod | Szablony formułujące tabele | Szablony specjalne }} </includeonly> sx2ozgzlkrceqj1ui0rcgdckhq4zy04 559472 559470 2026-10-16T18:14:45Z Persino 2851 559472 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|GridTabela}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == Szablon generuje grid-tabelkę na podstawie jego parametrów. Szablon znacznie ułatwia tworzenie grid-tabel za pomocą wysokopoziomowego interfejsu, czyli tego szablonu. On tworzy niskopoziomową grid-tabelkę na podstawie parametrów tego szablonu. Zwraca uwagę, czy jakieś parametry nie zostały podane, czy są prawidłowe. == Opis parametrów == ; Opakowanie ramkowe tabeli * {{Code|pozycja}} - wartości: {{Tt|prawo}}, {{Tt|lewo}} i {{Tt|centruj}}, poniższe parametry mogą być jedynie używane z tym argumentem, * {{Code|id op}} - unikalny identyfikator {{Code|id}}, w całym {{Code|DOM}} w HTML, opakowania tabelki, * {{Code|klasa op}} - klasa całości opakowania tabelki, kaskadowych arkuszy stylów CSS, * {{Code|styl op}} - styl CSS, opakowania tabelki, właściwości wraz z ich wartościami. ; Tabela - liczba wierszy i kolumn * {{Code|liczba wierszy}} - liczba wierszy, * {{Code|liczba kolumn}} - liczba kolumn. ; Tabela - ustawienia (parametry) całej tabeli * {{Code|id}} - unikalny identyfikator {{Code|id}}, w całym {{Code|DOM}} w HTML, całej tabelki, * {{Code|klasa}} - klasa całości tabeli, kaskadowych arkuszy stylów CSS, * {{Code|styl}} - styl CSS, całej tabeli, właściwości wraz z ich wartościami, * {{Code|atrybuty}} - atrybuty tabelki. ; Tabela - tytuł * {{Code|id tytułu}} - id tytułu, * {{Code|klasa tytułu}} - klasa tytułu, * {{Code|styl tytułu}} - styl tytułu, * {{Code|opcje tytułu}} - opcje tytułu. ;; Zawartość tytułu * {{Code|tytuł}} - tytuł tabeli. ; Tabela - nagłówek (parametry) * {{Code|id nagłówka}} - id, głównego wiersza nagłówka tabeli, na jego górze, kaskadowych arkuszy stylów CSS, * {{Code|klasa nagłówka}} - klasa, głównego wiersza nagłówka tabeli, na jego górze, kaskadowych arkuszy stylów CSS, * {{Code|styl nagłówka}} - styl, głównego wiersza nagłówków tabeli, na jego górze, CSS, tzn. właściwości i ich wartości, * {{Code|opcje nagłówka}} - opcje, głównego wiersza nagłówków tabeli, na jego górze, CSS, tzn. właściwości i ich wartości. ; Tabela - komórki nagłówka tabeli (parametry) * {{Code|id 1}}, {{Code|...}}, {{Code|id N}} - id nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|klasa 1}}, {{Code|...}}, {{Code|klasa N}} - klasa nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|styl 1}}, {{Code|...}}, {{Code|styl N}} - styl nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|opcje 1}}, {{Code|...}}, {{Code|opcje N}} - opcje nagłówka tabeli, głównego wiersza nas jego górze, * {{Code|kolumny 1}}, {{Code|...}}, {{Code|kolumny N}} - informacje, mówiące ile kolumn nagłówka, w tabeli, ma scalić. ;; Zawartość komórek nagłówka * {{Code|nagłówek 1}}, {{Code|...}}, {{Code|nagłówek N}} - zawartość nagłówków tabeli, głównego wiersza nagłówków na jego górze. ; Tabela - parametry wierszy <!--* {{Code|id wiersza 1}}, {{Code|id wiersza 2}}, {{Code|...}}, {{Code|id wiersza i}}, {{Code|...}}, {{Code|id wiersza M}} - id poszczególnych wierszy komórek tabeli,--> * {{Code|klasa wiersza 1}}, {{Code|klasa wiersza 2}}, {{Code|...}}, {{Code|klasa wiersza i}}, {{Code|...}}, {{Code|klasa wiersza M}} - klasa poszczególnych wierszy komórek tabeli, * {{Code|styl wiersza 1}}, {{Code|styl wiersza 2}}, {{Code|...}}, {{Code|styl wiersza i}}, {{Code|...}}, {{Code|styl wiersza M}} - styl poszczególnych wierszy komórek tabeli, * {{Code|opcje wiersza 1}}, {{Code|opcje wiersza 2}}, {{Code|...}}, {{Code|opcje wiersza i}}, {{Code|...}}, {{Code|opcje wiersza M}} - opcje poszczególnych wierszy komórek tabeli. ; Tabela - scalanie wierszy i kolumn * {{Code|wiersze 1_1}}, {{Code|wiersze 1_2}}, {{Code|...}}, {{Code|wiesze i_j}}, {{Code|...}}, {{Code|wiersze M_N}} - informacja, ile wierszy ma scalić dla danej komórki, * {{Code|kolumny 1_1}}, {{Code|kolumny 1_2}}, {{Code|...}}, {{Code|kolumny i_j}}, {{Code|...}}, {{Code|kolumny M_N}} - informacja, ile kolumn ma scalić dla danej komórki, * {{Code|scal 1_1}}, {{Code|scal 1_2}}, {{Code|...}}, {{Code|scal i_j}}, {{Code|...}}, {{Code|scal M_N}} - informacja, ile wierszy i kolumn ma scalić dla danej komórki. ; Tabela - ustawienia wierszy i kolumn * {{Code|id 1_1}}, {{Code|id 1_2}}, {{Code|...}}, {{Code|id i_j}}, {{Code|...}}, {{Code|id M_N}} - id poszczególnych komórek tabeli, * {{Code|klasa 1_1}}, {{Code|klasa 1_2}}, {{Code|...}}, {{Code|klasa i_j}}, {{Code|...}}, {{Code|klasa M_N}} - klasa poszczególnych komórek tabeli, * {{Code|styl 1_1}}, {{Code|styl 1_2}}, {{Code|...}}, {{Code|styl i_j}}, {{Code|...}}, {{Code|styl M_N}} - styl poszczególnych komórek tabeli, * {{Code|opcje 1_1}}, {{Code|opcje 1_2}}, {{Code|...}}, {{Code|opcje i_j}}, {{Code|...}}, {{Code|opcje M_N}} - opcje poszczególnych komórek tabeli. ; Kreska pionowa * {{Code|bez pionu 1_1}}, {{Code|bez pionu 1_2}}, {{Code|...}}, {{Code|bez pionu i_j}}, {{Code|...}}, {{Code|bez pionu M_N}} - po parametrach scalania i ustawiania komórek po spacji nie stawia kreski pionowej. ;; Tabela - zawartość wierszy i kolumn * {{Code|komórka 1_1}}, {{Code|komórka 1_2}}, {{Code|...}}, {{Code|komórka i_j}}, {{Code|...}}, {{Code|komórka M_N}} - zawartość komórki tabeli, * {{Code|nagłówek 1_1}}, {{Code|nagłówek 1_2}}, {{Code|...}}, {{Code|nagłówek i_j}}, {{Code|...}}, {{Code|nagłówek M_N}} - gdy wartość niepusta, to traktuje komórkę jako nagłówek, w przeciwnym wypadku, ona oznaczana jest jako zwykła komórka. ---- * {{Code|M}} - numer wiersza, a {{Code|N}} - numer kolumny. Jeżeli na komórce włączyliśmy opcje {{Code|colspan}} lub {{Code|rowspan}} za pomocą parametrów opcji {{Code|opcje i_j}} lub parametrów typu {{Code|wiersze i_j}} lub {{Code|kolumny i_j}} albo za pomocą {{Code|scal i_j}} bądź w przypadku nagłówka za pomocą opcji {{Code|opcje i}} lub parametrów typu {{Code|kolumny i}}, to nazwa parametru pochodzi od tego, skąd zaczynaliśmy scalanie wierszy i kolumn, nawet komórek nagłówka. == Przykład == ; Przykład pierwszy {{Pre| {{s|GridTabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} gridtable | atrybuty {{=}} cellspacing{{=}}0 cellpadding{{=}}3 | liczba wierszy {{=}} 6 | liczba kolumn {{=}} 4 | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_2 {{=}} Komórka - wiersz 1 - kolumna 2 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | komórka 2_4 {{=}} Komórka - wiersz 2 - kolumna 4 | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_2 {{=}} Komórka - wiersz 3 - kolumna 2 | komórka 3_3 {{=}} Komórka - wiersz 3 - kolumna 3 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_1 {{=}} Komórka - wiersz 4 - kolumna 1 | komórka 4_2 {{=}} Komórka - wiersz 4 - kolumna 2 | komórka 4_3 {{=}} Komórka - wiersz 4 - kolumna 3 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | komórka 5_1 {{=}} Komórka - wiersz 5 - kolumna 1 | komórka 5_2 {{=}} Komórka - wiersz 5 - kolumna 2 | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | komórka 5_4 {{=}} Komórka - wiersz 5 - kolumna 4 | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_2 {{=}} Komórka - wiersz 6 - kolumna 2 | komórka 6_3 {{=}} Komórka - wiersz 6 - kolumna 3 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 }} }} ; Wynik {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=0 cellpadding=3 | liczba wierszy = 6 | liczba kolumn = 4 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład pierwszy|spis= {{PreNowiki| {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} }} }} ---- ; Przykład drugi {{Pre| {{s|GridTabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} gridtable | atrybuty {{=}} cellspacing{{=}}0 cellpadding{{=}}3 | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | opcje 1 {{=}} width{{=}}25% | nagłówek 1 {{=}} Nagłówek 1 | opcje 2 {{=}} width{{=}}25% | nagłówek 2 {{=}} Nagłówek 2 | opcje 3 {{=}} width{{=}}25% | nagłówek 3 {{=}} Nagłówek 3 | opcje 4 {{=}} width{{=}}25% | nagłówek 4 {{=}} Nagłówek 4 | liczba wierszy {{=}} 6 | liczba kolumn {{=}} 4 | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_2 {{=}} Komórka - wiersz 1 - kolumna 2 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | komórka 2_4 {{=}} Komórka - wiersz 2 - kolumna 4 | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_2 {{=}} Komórka - wiersz 3 - kolumna 2 | komórka 3_3 {{=}} Komórka - wiersz 3 - kolumna 3 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_1 {{=}} Komórka - wiersz 4 - kolumna 1 | komórka 4_2 {{=}} Komórka - wiersz 4 - kolumna 2 | komórka 4_3 {{=}} Komórka - wiersz 4 - kolumna 3 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | komórka 5_1 {{=}} Komórka - wiersz 5 - kolumna 1 | komórka 5_2 {{=}} Komórka - wiersz 5 - kolumna 2 | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | komórka 5_4 {{=}} Komórka - wiersz 5 - kolumna 4 | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_2 {{=}} Komórka - wiersz 6 - kolumna 2 | komórka 6_3 {{=}} Komórka - wiersz 6 - kolumna 3 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 }} }} ; Wynik {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | opcje 1 = width=25% | nagłówek 1 = Nagłówek 1 | opcje 2 = width=25% | nagłówek 2 = Nagłówek 2 | opcje 3 = width=25% | nagłówek 3 = Nagłówek 3 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład drugi|spis= {{PreNowiki| {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=0 cellpadding=3 | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | opcje 1 = width=25% | nagłówek 1 = Nagłówek 1 | opcje 2 = width=25% | nagłówek 2 = Nagłówek 2 | opcje 3 = width=25% | nagłówek 3 = Nagłówek 3 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | liczba wierszy = 6 | liczba kolumn = 4 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_2 = Komórka - wiersz 1 - kolumna 2 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | komórka 2_4 = Komórka - wiersz 2 - kolumna 4 | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_2 = Komórka - wiersz 3 - kolumna 2 | komórka 3_3 = Komórka - wiersz 3 - kolumna 3 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_1 = Komórka - wiersz 4 - kolumna 1 | komórka 4_2 = Komórka - wiersz 4 - kolumna 2 | komórka 4_3 = Komórka - wiersz 4 - kolumna 3 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | komórka 5_1 = Komórka - wiersz 5 - kolumna 1 | komórka 5_2 = Komórka - wiersz 5 - kolumna 2 | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | komórka 5_4 = Komórka - wiersz 5 - kolumna 4 | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_2 = Komórka - wiersz 6 - kolumna 2 | komórka 6_3 = Komórka - wiersz 6 - kolumna 3 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 }} }} }} ---- ; Przykład trzeci {{Pre| {{s|GridTabela | styl {{=}} width:100%;text-align:center;margin-right:0; | klasa {{=}} gridtable | atrybuty {{=}} cellspacing{{=}}3 cellpadding{{=}}3 border{{=}}"1" | styl tytułu {{=}} color:white;background-color:black; | tytuł {{=}} Tytuł tabeli | styl nagłówka {{=}} background-color:pink; | opcje 1 {{=}} width{{=}}75% | kolumny 1 {{=}} 3 | nagłówek 1 {{=}} Nagłówek 1 | opcje 4 {{=}} width{{=}}25% | nagłówek 4 {{=}} Nagłówek 4 | styl 4 {{=}} background-color:red; | liczba wierszy {{=}} 7 | liczba kolumn {{=}} 4 | kolumny 1_1 {{=}} 2 | komórka 1_1 {{=}} Komórka - wiersz 1 - kolumna 1 | komórka 1_3 {{=}} Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 {{=}} 2 | komórka 1_4 {{=}} Komórka - wiersz 1 - kolumna 4 | komórka 2_1 {{=}} Komórka - wiersz 2 - kolumna 1 | komórka 2_2 {{=}} Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 {{=}} 3 | komórka 2_3 {{=}} Komórka - wiersz 2 - kolumna 3 | scal 3_1 {{=}} 3 2 | styl 3_1 {{=}} color:red;background-color:yellow;text-align:right; | komórka 3_1 {{=}} Komórka - wiersz 3 - kolumna 1 | komórka 3_4 {{=}} Komórka - wiersz 3 - kolumna 4 | komórka 4_4 {{=}} Komórka - wiersz 4 - kolumna 4 | opcje 5_3 {{=}} colspan{{=}}"2" rowspan{{=}}"1" | komórka 5_3 {{=}} Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 {{=}} 3 | wiersze 6_1 {{=}} 2 | nagłówek 6_1 {{=}} tak | komórka 6_1 {{=}} Komórka - wiersz 6 - kolumna 1 | komórka 6_4 {{=}} Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 {{=}} color:blue; | styl 7_4 {{=}} background-color:grey; | komórka 7_4 {{=}} Komórka - wiersz 7 - kolumna 4 }} }} ; Wynik {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=3 cellpadding=3 border="1" | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | styl nagłówka = background-color:pink; | opcje 1 = width=75% | kolumny 1 = 3 | nagłówek 1 = Nagłówek 1 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | styl 4 = background-color:red; | liczba wierszy = 7 | liczba kolumn = 4 | kolumny 1_1 = 2 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 = 2 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 = 3 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | scal 3_1 = 3 2 | styl 3_1 = color:red;background-color:yellow;text-align:right; | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | opcje 5_3 = colspan="2" rowspan="1" | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 = 3 | wiersze 6_1 = 2 | nagłówek 6_1 = tak | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 = color:blue; | styl 7_4 = background-color:grey; | komórka 7_4 = Komórka - wiersz 7 - kolumna 4 }} ; Kod {{Tabela nawigacyjna|styl=width:100%|tytuł=Szablon tabela - przykład trzeci|spis= {{PreNowiki| {{GridTabela | styl = width:100%;text-align:center;margin-right:0; | klasa = gridtable | atrybuty = cellspacing=3 cellpadding=3 border="1" | styl tytułu = color:white;background-color:black; | tytuł = Tytuł tabeli | styl nagłówka = background-color:pink; | opcje 1 = width=75% | kolumny 1 = 3 | nagłówek 1 = Nagłówek 1 | opcje 4 = width=25% | nagłówek 4 = Nagłówek 4 | styl 4 = background-color:red; | liczba wierszy = 7 | liczba kolumn = 4 | kolumny 1_1 = 2 | komórka 1_1 = Komórka - wiersz 1 - kolumna 1 | komórka 1_3 = Komórka - wiersz 1 - kolumna 3 | wiersze 1_4 = 2 | komórka 1_4 = Komórka - wiersz 1 - kolumna 4 | komórka 2_1 = Komórka - wiersz 2 - kolumna 1 | komórka 2_2 = Komórka - wiersz 2 - kolumna 2 | wiersze 2_3 = 3 | komórka 2_3 = Komórka - wiersz 2 - kolumna 3 | scal 3_1 = 3 2 | styl 3_1 = color:red;background-color:yellow;text-align:right; | komórka 3_1 = Komórka - wiersz 3 - kolumna 1 | komórka 3_4 = Komórka - wiersz 3 - kolumna 4 | komórka 4_4 = Komórka - wiersz 4 - kolumna 4 | opcje 5_3 = colspan="2" rowspan="1" | komórka 5_3 = Komórka - wiersz 5 - kolumna 3 | kolumny 6_1 = 3 | wiersze 6_1 = 2 | nagłówek 6_1 = tak | komórka 6_1 = Komórka - wiersz 6 - kolumna 1 | komórka 6_4 = Komórka - wiersz 6 - kolumna 4 | styl wiersza 7 = color:blue; | styl 7_4 = background-color:grey; | komórka 7_4 = Komórka - wiersz 7 - kolumna 4 }} }} }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == {{Tabela/opis/Zobacz też}} {{Szablony ramek formułujące kod}} {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony pudełek opartych o tabelki | Szablony pudełek tworzące tabele | Szablony ramek generujące wikikod | Szablony formułujące tabele | Szablony specjalne }} </includeonly> 8nu3e7knhffnv22mf53xziguqoafc9u