Panjang daftar sebagai pgfmath-function
Oct 29 2020
Saya membaca utas ini tetapi saya ingin memiliki fungsi pgfmath yang memberikan panjang daftar seperti \def\mylist{1,2,3,5,7}, karena saya memerlukan nilai untuk beberapa perhitungan nanti.
Berikut ini tidak bekerja dengan benar.
Saya mendapatkan output: 112357
Seharusnya:5
Apa yang harus saya lakukan?
\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}
\makeatletter
\pgfmathdeclarefunction{Len}{1}{%
\begingroup
\def\templist{#1}
\foreach[count=\mycount] \i in \templist { \xdef\Len{\mycount} }%
\Len%
\endgroup
}
\makeatother
\def\mylist{1,2,3,5,7}
\pgfmathparse{Len(\mylist)}\pgfmathresult
\end{document}
Jawaban
3 egreg Oct 28 2020 at 23:57
Perhatikan bahwa array PGF harus memiliki satu set kurung kurawal tambahan: dengan
\def\myarray{{1,2,3}}
\pgfmathparse{dim{\myarray}}
Anda mendapatkan 3 disimpan di \pgfmathresult.
Anda dapat mengakses item ke- n dengan
\pgfmathparse{\myarray[n]}
yang toko di \pgfmathresultdalam n barang -th. Ingatlah bahwa pengindeksan dimulai dari 0.
Contoh lengkap:
\documentclass{article}
\usepackage{pgfmath}
\newcommand{\myarray}{{640,231,100,91,1003}}
\begin{document}
\pgfmathparse{dim{\myarray}}\pgfmathresult: should be 5
\pgfmathparse{\myarray[4]}\pgfmathresult: should be 1003
\pgfmathparse{dim({640,231,100,91,1003})}\pgfmathresult: should be 5
\pgfmathparse{dim{{640,231,100,91,1003}}}\pgfmathresult: should be 5
\end{document}
Anda melihatnya dim(...)atau dim{...}setara, tetapi tanda kurung di sekitar array tetap diperlukan.
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'